Projet

Général

Profil

Development #12629

champ de traitement fichier : permettre d'y envoyer des données arbitraire (dictionnaire)

Ajouté par Thomas Noël il y a plus de 7 ans. Mis à jour il y a plus de 7 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Version cible:
Début:
18 juillet 2016
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

Description

suite à #12628, il faudrait que lors de l'affectation d'une valeur à un champ fichier on accepte :
  • un fichier (form_var_xxx_raw, attachments) : c'est déjà le cas
  • un dictionnaire, sous la même forme de l'export API json :
    {
      "content": ...   (qui est encodé en base64)
      "content_type": ...
      "filename": ...
    }
    

Fichiers

Révisions associées

Révision d4575fa0 (diff)
Ajouté par Frédéric Péters il y a plus de 7 ans

workflows: allow setting backoffice file field from a dict (#12629)

Historique

#1

Mis à jour par Thomas Noël il y a plus de 7 ans

Dans l'idée de faire fonctionner ce patch:

diff --git a/tests/test_workflows.py b/tests/test_workflows.py
index 81998a1..d5cd097 100644
--- a/tests/test_workflows.py
+++ b/tests/test_workflows.py
@@ -1733,3 +1733,9 @@ def test_set_backoffice_field_file(pub):

     formdata = formdef.data_class().get(formdata.id)
     assert formdata.data['bo1'].base_filename == 'xxx.xml'
+
+    item.fields = [{'field_id': 'bo1',
+                    'value': '={"content": "dGVzdA==", "content_type": "text/plain", "filename": "test.txt"}'}]
+    item.perform(formdata)
+    formdata = formdef.data_class().get(formdata.id)
+    assert formdata.data['bo1'].base_filename == 'test.txt'

#2

Mis à jour par Frédéric Péters il y a plus de 7 ans

Je relirai aussi, et ça corrige #12628.

#4

Mis à jour par Thomas Noël il y a plus de 7 ans

À la lecture ça m'a l'air OK.

#5

Mis à jour par Frédéric Péters il y a plus de 7 ans

J'ai divisé le patch (l'autre partie dans #12628); dans celui-ci aussi j'ai déplacé l'appel à get_file_value pour n'attraper que l'exception ValueError, pas tout ce qui peut arriver dans un self.compute.

#6

Mis à jour par Thomas Noël il y a plus de 7 ans

Ack (modulo un "import base64" qui devrait être fait ici plutôt que dans #12628, je pinaille)

#7

Mis à jour par Frédéric Péters il y a plus de 7 ans

  • Statut changé de En cours à Résolu (à déployer)
commit d4575fa0bedbf8ed10840d20fee044df2eae57af
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Mon Jul 18 19:03:19 2016 +0200

    workflows: allow setting backoffice file field from a dict (#12629)
#8

Mis à jour par Victor Claudet il y a plus de 7 ans

est-ce que c'est déployé en recette ? Si oui, est-ce qu'il y a des choses particulières à expliquer pour l'utilisation au delà la mise en place d'un champ de traitement et des actions de workflow (trigger+mise à jour des données de traitement) ?

#9

Mis à jour par Frédéric Péters il y a plus de 7 ans

Dans la colonne de droite de redmine il y a désormais l'information précise sur les plateformes où c'est déployé. En l'espèce, non, ce n'est pas déployé sur le SaaS de recette.

Sur l'utilisation, pour les champs de traitement "fichier", en plus de pouvoir assigner directement un fichier (d'un champ du formulaire ou d'un attachement au workflow), il y a possibilité de constituer un fichier à partir de données éparses, en utilisant un dictionnaire :

={'filename': 'hello.txt', 'content': blah_response_foo_bar}

ou, si le contenu du fichier a été encodé en base64

={'filename': 'hello.txt', 'b64_content': blah_response_foo_bar}
#10

Mis à jour par Victor Claudet il y a plus de 7 ans

ok merci pour la description. Est-ce qu'il est possible d'avoir une estimation pour le passage en recette ?

#11

Mis à jour par Frédéric Péters il y a plus de 7 ans

Demain, ou lundi, histoire de la recette durant la semaine pour mise en production fin juillet.

#12

Mis à jour par Victor Claudet il y a plus de 7 ans

C'est données, elles vont être récupérée par un trigger et rangée dans un champ de traitement.

Pour remplir le champ il faudra appeler quoi dans le trigger ?

Si je reprends t'as description au dessus, Champ_de_traitement = trigger_b64_content ? ou c'est eux qui choisissent le nom au moment de l'envoi dans le webservice ?

#13

Mis à jour par Frédéric Péters il y a plus de 7 ans

Il y a une action qui s'appelle "Modifier les données de traitement" qui est à ajouter et à configurer pour mettre dans le champ fichier (qui aura été ajouté comme donnée de traitement) ce que je pointais plus haut, ={'filename': 'hello.txt', 'b64_content': blah_response_foo_bar}.

Pour être sûr de la variable à utiliser le mieux c'est de les laisser appeler le trigger et puis de regarder dans le /inspect.

#14

Mis à jour par Frédéric Péters il y a plus de 7 ans

  • Version cible mis à v1.54
#15

Mis à jour par Frédéric Péters il y a plus de 7 ans

  • Statut changé de Résolu (à déployer) à Fermé

Formats disponibles : Atom PDF