Projet

Général

Profil

Development #8829

Accès à un document généré pour envoi par webservice (ou mail, etc)

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

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
30 octobre 2015
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

Description

Actuellement, ExportToModel peut enregistrer un document dans le journal, c'est tout.

Pour que ce document généré puisse être envoyé à un système tiers, (notamment via webservice), il faudrait qu'on puisse y accéder via une variable de substitution (ou autre méthode à inventer).

Quelque chose comme :
  • on définit dans l'instance ExportToModel le nom de la variable cible 'foobar'
  • on le récupère dans form_document.foobar

form_document serait un proxy, sur le mode de DataSourcesSubstitutionProxy ... (idée: ne pas systématiquement envoyer le fichier dans le json du formdata)


Fichiers

0001-add-subsitution-variable-to-reach-files-attached-in-.patch (5,25 ko) 0001-add-subsitution-variable-to-reach-files-attached-in-.patch Benjamin Dauvergne, 31 octobre 2015 00:20
0001-workflows-add-varname-field-to-AttachmentEvolutionPa.patch (1,56 ko) 0001-workflows-add-varname-field-to-AttachmentEvolutionPa.patch Benjamin Dauvergne, 31 octobre 2015 17:46
0002-wf-attachment-add-a-varname-field.patch (1,9 ko) 0002-wf-attachment-add-a-varname-field.patch Benjamin Dauvergne, 31 octobre 2015 17:46
0003-wf-export_to_model-add-a-varname-field.patch (2,19 ko) 0003-wf-export_to_model-add-a-varname-field.patch Benjamin Dauvergne, 31 octobre 2015 17:46
0004-add-substitution-variable-attachments-to-reach-files.patch (10,2 ko) 0004-add-substitution-variable-attachments-to-reach-files.patch Benjamin Dauvergne, 31 octobre 2015 17:46
0001-add-varname-to-AttachmentEvolutionPart-8829.patch (1,55 ko) 0001-add-varname-to-AttachmentEvolutionPart-8829.patch Benjamin Dauvergne, 02 novembre 2015 17:26
0003-wf-export_to_model-add-varname-field-8829.patch (2,2 ko) 0003-wf-export_to_model-add-varname-field-8829.patch Benjamin Dauvergne, 02 novembre 2015 17:26
0002-wf-attachment-add-varname-field-8829.patch (1,91 ko) 0002-wf-attachment-add-varname-field-8829.patch Benjamin Dauvergne, 02 novembre 2015 17:26
0004-add-attachments-substitution-variable-to-formdatas-8.patch (13,3 ko) 0004-add-attachments-substitution-variable-to-formdatas-8.patch Benjamin Dauvergne, 02 novembre 2015 17:26
screen_2.png (74,4 ko) screen_2.png Serghei Mihai, 03 novembre 2015 11:05
screen_1.png (70,4 ko) screen_1.png Serghei Mihai, 03 novembre 2015 11:05
0001-wf-export_to_model-fix-bug-introduced-in-29c8e2b0-42.patch (1,2 ko) 0001-wf-export_to_model-fix-bug-introduced-in-29c8e2b0-42.patch Benjamin Dauvergne, 03 novembre 2015 13:26
0002-add-varname-to-AttachmentEvolutionPart-8829.patch (1,55 ko) 0002-add-varname-to-AttachmentEvolutionPart-8829.patch Benjamin Dauvergne, 03 novembre 2015 13:26
0003-wf-attachment-add-varname-field-8829.patch (1,91 ko) 0003-wf-attachment-add-varname-field-8829.patch Benjamin Dauvergne, 03 novembre 2015 13:26
0004-wf-export_to_model-add-varname-field-8829.patch (2,62 ko) 0004-wf-export_to_model-add-varname-field-8829.patch Benjamin Dauvergne, 03 novembre 2015 13:26
0005-add-attachments-substitution-variable-to-formdatas-8.patch (13,3 ko) 0005-add-attachments-substitution-variable-to-formdatas-8.patch Benjamin Dauvergne, 03 novembre 2015 13:26

Révisions associées

Révision 7423ada4 (diff)
Ajouté par Benjamin Dauvergne il y a plus de 8 ans

add varname to AttachmentEvolutionPart (#8829)

It allows differentiating between attached files from different workflow actions:
ExportToModel or AddAttachmentWorkflowStatusItem.

Révision 8f4c6757 (diff)
Ajouté par Benjamin Dauvergne il y a plus de 8 ans

wf/attachment: add varname field (#8829)

Révision 0810ac6d (diff)
Ajouté par Benjamin Dauvergne il y a plus de 8 ans

wf/export_to_model: add varname field (#8829)

Révision 2f84160f (diff)
Ajouté par Benjamin Dauvergne il y a plus de 8 ans

add 'attachments' substitution variable to formdatas (#8829)

Historique

#1

Mis à jour par Benjamin Dauvergne il y a plus de 8 ans

Le problème c'est qu'ExportToModel et AddAttachmentWorkflowStatusItem utilise le même objet AttachmentEvolutionPart pour stocker les fichiers créés et rien n'empêche pour ces deux actions de les accomplir plusieurs fois, donc même en leur donnant un nom on pourrait avoir plusieurs fichiers.

Je dirais qu'on pourrait avoir quelque chose du style, attachments.<varname>[x].filename/content_type/content ou les attachements seraient rangés dans l'ordre inverse de leur arrivée. Comme on a pas de boucle dans le wscall je ne vois pas comment envoyer une liste variable de fichiers attachés, mais je laisse l'exercice pour plus tard.

Il suffit de stocker le <varname> dans l'objet AttachementEvolutionPart au moment de sa création.

#3

Mis à jour par Benjamin Dauvergne il y a plus de 8 ans

C'est sans le nommage des variables (je laisse ça comme exercice au lecteur attentif). Je ne suis pas sûr sur le coup de renversé le tableau des fichiers, ça rend le test plus compliqué mais l'utilisation me semble plus simple à utiliser, à moins de faire en sorte d'avoir une équivalence de ce genre attachments.content == attachements[-1].content.

#4

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

En discutant la chose rapidement hier soir avec Serghei (qui a besoin d'envoyer le document généré à iParapheur, via passerelle), on s'est dit qu'une autre solution pourrait être que l'action "ExportToModel" génère dans le workflow_data les informations nécessaires (une URL) pour que passerelle récupère le document. Ca éviterait surtout de se retrouver avec des Mo de base64 dans du json (c'est vraiment très peu efficace).

Un peu comme pour les docs attachés par un formulaire de workflow (cf #8031), on aurait dans workflow_datat "foobar_content_type" + "foobar_filename" + "foobar_url", où foobar est le nom de variable choisi dans l'action ExportToModel.

Resterait cependant à étudier les droits d'accès à ces URL...

Concernant la possibilité de générer plusieurs documents avec le même nom : on n'en a pas besoin, selon moi. Une action ExportToModel créé un document "foobar", si cette action est exécutée plusieurs fois, c'est la dernière qui gagne.

#5

Mis à jour par Benjamin Dauvergne il y a plus de 8 ans

Thomas Noël a écrit :

En discutant la chose rapidement hier soir avec Serghei (qui a besoin d'envoyer le document généré à iParapheur, via passerelle), on s'est dit qu'une autre solution pourrait être que l'action "ExportToModel" génère dans le workflow_data les informations nécessaires (une URL) pour que passerelle récupère le document. Ca éviterait surtout de se retrouver avec des Mo de base64 dans du json (c'est vraiment très peu efficace).

On a déjà cette URL, les fichiers du journal sont accessibles via <form_url>attachment?f=<basename(attached_evolution_part.filename)>.

Un peu comme pour les docs attachés par un formulaire de workflow (cf #8031), on aurait dans workflow_datat "foobar_content_type" + "foobar_filename" + "foobar_url", où foobar est le nom de variable choisi dans l'action ExportToModel.

Resterait cependant à étudier les droits d'accès à ces URL...

C'est contrôlé par self.check_receiver() dans wcs.forms.common.FormStatusPage._q_lookup.

Concernant la possibilité de générer plusieurs documents avec le même nom : on n'en a pas besoin, selon moi. Une action ExportToModel créé un document "foobar", si cette action est exécutée plusieurs fois, c'est la dernière qui gagne.

J'ai laissé la possibilité de d'accéder aux autres mais par défaut attachments.<varname>.url/content/content_type/filename donne accès aux informations du dernier fichier attaché pour ce varname pour les autres c'est via attachments.<varname>[i].

#6

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

Dans les tests, tu pourrais laisser les existants intacts (i.e. sans placer varname) et en ajouter des variantes qui auraient justement varname ?

Autre détail de style que je note, cette manière de continuer les lignes, par le \ plutôt qu'en ayant une parenthèse ouverte, je n'aime pas trop : (et même la pep8 dit que c'est pas super).

    resp = login(get_app(pub), username='admin', password='admin') \    
        .get(attachment_variable.url).follow()

À part ça, sur le fond, on pourrait avoir content = le contenu, et b64_content = le contenu encodé en base64 ?

#7

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

+ ajouter une référence à ce ticket aux messages de commit + pour le 0004 réécrire son sujet pour tenir sur une ligne de 80 caractères (genre simplement 'add 'attachments' substitution variable to formdatas (#8829)).

#9

Mis à jour par Serghei Mihai il y a plus de 8 ans

Il manque l'import de VarnameWidget dans le patch 0003

#10

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

Serghei Mihai a écrit :

Il manque l'import de VarnameWidget dans le patch 0003

Ce qui est attrapé par tests/test_admin_pages.py::test_workflows_add_all_actions; pensons à exécuter tous les tests.

[2015-11-02 17:52:17] exception caught
Exception:
  type = '<type 'exceptions.NameError'>', value = 'global name 'VarnameWidget' is not defined'

Stack trace (most recent call first):
  File "/home/fred/src/eo/wcs/wcs/wf/export_to_model.py", line 266, in add_parameters_widgets
   264                      value=self.backoffice_info_text)
   265         if 'varname' in parameters:
>  266             form.add(VarnameWidget, '%svarname' % prefix,
   267                      title=_('Variable Name'), value=self.varname)
   268 
#11

Mis à jour par Serghei Mihai il y a plus de 8 ans

Au niveau du parametrage du workflow j'ai un comportement étrange.
Quand j'upload un fichier modèle, backoffice_info_text a comme valeur le nom du fichier chargé sans le wysiwyg.
Le self.varname n'est pas sauvegardé quand un document modèle est attaché.

#13

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

(J'ai poussé le patch de corection de #4292.)

#14

Mis à jour par Serghei Mihai il y a plus de 8 ans

Ack

#15

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

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

Ça a été poussé.

#16

Mis à jour par Benjamin Dauvergne il y a plus de 8 ans

  • Assigné à mis à Benjamin Dauvergne
#17

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

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

Formats disponibles : Atom PDF