Development #17068
iparapheur: pouvoir télécharger le document annexe d'un dossier
0%
Description
Actuellement le document principal (en pdf) est retourné et est constitué du document original injecté dans i-Parapheur, précedé d'une page contenant les étapes du circuit par lequel il est passé (cf. pièce jointe).
Le document lui-même est contenu dans un paramètre nommé "annexe" et souvent est le document original (eventuellement signé) sans l'historique du circuit.
Globalement c'est ce document qui est nécessaire.
Fichiers
Révisions associées
iparapheur: add support for downloading main or appendix documents (#17068)
Return original filename in headers.
Historique
Mis à jour par Serghei Mihai (congés, retour 15/05) il y a presque 7 ans
- Fichier 0001-iparapheur-add-support-for-downloading-main-or-annex.patch 0001-iparapheur-add-support-for-downloading-main-or-annex.patch ajouté
- Patch proposed changé de Non à Oui
Il manque le test, en cours d'écriture.
Mis à jour par Frédéric Péters il y a presque 7 ans
La lecture du patch me fait dire qu'actuellement c'était la première annexe qui était prise, non ?
À faire évoluer ça, à ajouter un paramètre permettant de prendre l'annexe, j'en ferais un paramètre acceptant une valeur permettant de pointer l'annexe souhaitée.
Mis à jour par Brice Mallet il y a presque 7 ans
- Echéance mis à 29 juin 2017
- Statut changé de Nouveau à En cours
- Assigné à mis à Serghei Mihai (congés, retour 15/05)
Mis à jour par Serghei Mihai (congés, retour 15/05) il y a presque 7 ans
Frédéric Péters a écrit :
La lecture du patch me fait dire qu'actuellement c'était la première annexe qui était prise, non ?
Tout à fait.
À faire évoluer ça, à ajouter un paramètre permettant de prendre l'annexe, j'en ferais un paramètre acceptant une valeur permettant de pointer l'annexe souhaitée.
Ok, et si elle n'existe pas une erreur 404.
Mis à jour par Serghei Mihai (congés, retour 15/05) il y a presque 7 ans
- Fichier 0001-iparapheur-add-support-for-downloading-main-or-annex.patch 0001-iparapheur-add-support-for-downloading-main-or-annex.patch ajouté
Depend du correctif dans #17097.
Mis à jour par Thomas Noël il y a presque 7 ans
Plutôt annex que annexe, pour suivre l'anglais dans nos enpoints.
Et coller le except ValueError au int(annexe) (faire deux try/except quoi)
Mis à jour par Serghei Mihai (congés, retour 15/05) il y a presque 7 ans
- Fichier 0001-iparapheur-add-support-for-downloading-main-or-annex.patch 0001-iparapheur-add-support-for-downloading-main-or-annex.patch ajouté
Yep
Mis à jour par Frédéric Péters il y a presque 7 ans
On a vraiment besoin de vrais fichiers dans tests/data ?
Mis à jour par Thomas Noël il y a presque 7 ans
Frédéric Péters a écrit :
On a vraiment besoin de vrais fichiers dans tests/data ?
Ce n'est bien sûr pas une question, et la réponse est "non".
Mis à jour par Serghei Mihai (congés, retour 15/05) il y a presque 7 ans
- Fichier 0001-iparapheur-add-support-for-downloading-main-or-appen.patch 0001-iparapheur-add-support-for-downloading-main-or-appen.patch ajouté
Avec des fichiers "doc principal" et "annexe" bidon.
Mis à jour par Frédéric Péters il y a presque 7 ans
Quand j'écrivais "vrai fichier" je pensais en fait même qu'on n'avait pas besoin de fichier du tout; parce qu'à regarder les tests je voyais notamment :
file_data = file(os.path.join(os.path.dirname(__file__), 'data', filename)) base64_data = base64.b64encode(file_data.read()) data = {'type': typ, 'subtype': subtyp, 'visibility': visibility, 'title': title, 'data': base64_data, 'content-type':'application/pdf'} ... assert req.find('ns1:DocumentPrincipal', SOAP_NAMESPACES).text == base64_data
Ça marcherait très bien avec juste base64_data = 'aGVsbG8gd29ybGQ='.
L'autre lieu, touché par ce patch, c'est autour des lignes :
file_sent = os.path.join(os.path.dirname(__file__), 'data/iparapheur_test.pdf') assert resp.headers['Content-Type'] == 'application/pdf' assert 'filename=test.pdf' in resp.headers['Content-Disposition'] assert hashlib.md5(resp.body[:8192]).hexdigest() == hashlib.md5(file(file_sent).read()[:8192]).hexdigest()
Et pareil, j'accorde iparapheur_get_file_response.xml parce que c'est moche comme tout (et moche comme tout^2 d'appeler .xml un fichier qui n'en est pas), mais ici aussi, plutôt qu'un vrai fichier posé sur le filesystem pour file_sent, ça pourrait juste être hashlib.md5('Hello world').hexdigest().
Mis à jour par Serghei Mihai (congés, retour 15/05) il y a presque 7 ans
- Fichier 0001-tests-remove-iparapheur-s-binary-files-17068.patch 0001-tests-remove-iparapheur-s-binary-files-17068.patch ajouté
- Fichier 0002-iparapheur-add-support-for-downloading-main-or-appen.patch 0002-iparapheur-add-support-for-downloading-main-or-appen.patch ajouté
Ok.
Un premier patch pour virer les tests des fichiers .odt, .pdf et corriger le XML de réponse.
Et un deuxième en rapport avec ce ticket.
Mis à jour par Frédéric Péters il y a presque 7 ans
response['Content-Disposition'] = 'inline; filename=%s.pdf' % fichier_nom
cf #16250
@endpoint(serializer_type='json-api', perm='can_access', name='get-file', pattern='(?P<file_id>[\w-]+)')
À rebaser parce qu'il n'y a désormais plus de serializer_type.
Mis à jour par Serghei Mihai (congés, retour 15/05) il y a presque 7 ans
- Fichier 0002-iparapheur-add-support-for-downloading-main-or-appen.patch 0002-iparapheur-add-support-for-downloading-main-or-appen.patch ajouté
Ok, deuxième patch à jour (rebasé).
Mis à jour par Frédéric Péters il y a presque 7 ans
- for filename in ('iparapheur_test.odt', 'iparapheur_test.pdf'): + for filename in ('iparapheur_test.odt', 'iparapheur_doc.pdf'):
Ce passage est curieux, le patch modifie un comportement pour le cas qui était traité dans ce test ?
assert 'filename=test.pdf' in resp.headers['Content-Disposition'] ... assert 'filename=test.pdf' in resp.headers['Content-Disposition']
J'étais curieux de voir d'où sortait ce nom de fichier,
<MetaDonnees><MetaDonnee><nom>ph:dossierTitre<<nom><valeur>test</valeur></MetaDonnee></MetaDonnees>
C'est tiré de là, sorti ainsi :
filename = '%s.pdf' % resp.MetaDonnees.MetaDonnee[0]['valeur']
Ça me semble quand même des plus hasardeux de sortir ça ainsi, sans se soucier du tout que le premier élément soit bien "ph:dossierTitre".
Et mettre .pdf de force, plutôt que se baser sur xmime:contentType="application/pdf", une erreur.
Et pour l'annexe récupérée dans le dernier test, étant donné que :
<DocumentsAnnexes><DocAnnexe><nom>iParapheur_impression_dossier.pdf</nom><fichier xmime:contentType="application/pdf">
Je me dis que ce n'est pas correct d'avoir là test.pdf, que ça devrait être le nom dans <nom>.
Mis à jour par Serghei Mihai (congés, retour 15/05) il y a presque 7 ans
- Fichier 0001-iparapheur-add-support-for-downloading-main-or-appen.patch 0001-iparapheur-add-support-for-downloading-main-or-appen.patch ajouté
Frédéric Péters a écrit :
Ce passage est curieux, le patch modifie un comportement pour le cas qui était traité dans ce test ?
Scorie suite à des rebases en local. Vrié.
Et mettre .pdf de force, plutôt que se baser sur xmime:contentType="application/pdf", une erreur.
Ok. ajout de l'extension uniquement si le contentType est 'application/pdf'. On verra pour les autres content types plus tard.
Je me dis que ce n'est pas correct d'avoir là test.pdf, que ça devrait être le nom dans <nom>.
Je me basais toujours sur le nom dans les métadonnées au lieu de l'attribut <nom> de l'annexe. Je le prend en compte desormais.
Mis à jour par Frédéric Péters il y a presque 7 ans
À passer de fichier_nom à filename, en profiter aussi pour ne pas avoir de variable nommée "fichier" (suggestion ici : "document") ?
À part ça je pense que c'est ok.
Mis à jour par Serghei Mihai (congés, retour 15/05) il y a presque 7 ans
- Fichier 0001-iparapheur-add-support-for-downloading-main-or-appen.patch 0001-iparapheur-add-support-for-downloading-main-or-appen.patch ajouté
fichier_nom
disparait dans mon patch car inutilisé et remplacé par filename qui récupere le nom dans le bon attribut en fonction de si c'est le doc principal ou une annexe. fichier
renommé en document
.
Mis à jour par Serghei Mihai (congés, retour 15/05) il y a presque 7 ans
- Statut changé de En cours à Résolu (à déployer)
commit 5c701b4bf223d8b134179cece5f889c5bb6ac3c0 (origin/master, origin/HEAD) Author: Serghei Mihai <serghei@hekla.home> Date: Wed May 31 14:10:15 2017 +0200 iparapheur: add support for downloading main or appendix documents (#17068) Return original filename in headers. commit 8bab3104b3ffbd72b24a42a6e82472a1191de23e Author: Serghei <serghei.mihai@devlibre.net> Date: Sat Jun 24 12:57:26 2017 +0200 tests: remove iparapheur's binary files (#17068) Fix soap response sample to be XML file.
Mis à jour par Serghei Mihai (congés, retour 15/05) il y a plus de 6 ans
- Statut changé de Résolu (à déployer) à Fermé
tests: remove iparapheur's binary files (#17068)
Fix soap response sample to be XML file.