Projet

Général

Profil

Development #17068

iparapheur: pouvoir télécharger le document annexe d'un dossier

Ajouté par Serghei Mihai (congés, retour 15/05) il y a presque 7 ans. Mis à jour il y a plus de 6 ans.

Statut:
Fermé
Priorité:
Normal
Version cible:
-
Début:
21 juin 2017
Echéance:
29 juin 2017
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

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

01a8a63d-ec4e-42e8-b6d6-a691eb98be0b-0.pdf (275 ko) 01a8a63d-ec4e-42e8-b6d6-a691eb98be0b-0.pdf Serghei Mihai (congés, retour 15/05), 21 juin 2017 14:16
0001-iparapheur-add-support-for-downloading-main-or-annex.patch (1,55 ko) 0001-iparapheur-add-support-for-downloading-main-or-annex.patch Serghei Mihai (congés, retour 15/05), 21 juin 2017 14:17
0001-iparapheur-add-support-for-downloading-main-or-annex.patch (420 ko) 0001-iparapheur-add-support-for-downloading-main-or-annex.patch Serghei Mihai (congés, retour 15/05), 22 juin 2017 06:46
0001-iparapheur-add-support-for-downloading-main-or-annex.patch (420 ko) 0001-iparapheur-add-support-for-downloading-main-or-annex.patch Serghei Mihai (congés, retour 15/05), 22 juin 2017 09:02
0001-iparapheur-add-support-for-downloading-main-or-appen.patch (506 ko) 0001-iparapheur-add-support-for-downloading-main-or-appen.patch Serghei Mihai (congés, retour 15/05), 24 juin 2017 09:48
0002-iparapheur-add-support-for-downloading-main-or-appen.patch (6,34 ko) 0002-iparapheur-add-support-for-downloading-main-or-appen.patch Serghei Mihai (congés, retour 15/05), 24 juin 2017 13:36
0001-tests-remove-iparapheur-s-binary-files-17068.patch (476 ko) 0001-tests-remove-iparapheur-s-binary-files-17068.patch Serghei Mihai (congés, retour 15/05), 24 juin 2017 13:36
0002-iparapheur-add-support-for-downloading-main-or-appen.patch (6,8 ko) 0002-iparapheur-add-support-for-downloading-main-or-appen.patch Serghei Mihai (congés, retour 15/05), 07 juillet 2017 10:33
0001-iparapheur-add-support-for-downloading-main-or-appen.patch (6,9 ko) 0001-iparapheur-add-support-for-downloading-main-or-appen.patch Serghei Mihai (congés, retour 15/05), 19 juillet 2017 09:44
0001-iparapheur-add-support-for-downloading-main-or-appen.patch (6,96 ko) 0001-iparapheur-add-support-for-downloading-main-or-appen.patch Serghei Mihai (congés, retour 15/05), 20 juillet 2017 11:25

Révisions associées

Révision 8bab3104 (diff)
Ajouté par Serghei il y a presque 7 ans

tests: remove iparapheur's binary files (#17068)

Fix soap response sample to be XML file.

Révision 5c701b4b (diff)
Ajouté par Serghei Mihai il y a presque 7 ans

iparapheur: add support for downloading main or appendix documents (#17068)

Return original filename in headers.

Historique

#1

Mis à jour par Serghei Mihai (congés, retour 15/05) il y a presque 7 ans

Il manque le test, en cours d'écriture.

#2

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.

#3

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)
#4

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.

#6

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)

#8

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

On dit plutôt "appendix" en vrai anglais.

#9

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

On a vraiment besoin de vrais fichiers dans tests/data ?

#10

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".

#12

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().

#13

Mis à jour par Serghei Mihai (congés, retour 15/05) il y a presque 7 ans

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.

#14

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.

#16

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>.

#17

Mis à jour par Serghei Mihai (congés, retour 15/05) il y a presque 7 ans

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.

#18

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.

#19

Mis à jour par Serghei Mihai (congés, retour 15/05) il y a presque 7 ans

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.

#20

Mis à jour par Josué Kouka il y a presque 7 ans

ok

#21

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.
#22

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é

Formats disponibles : Atom PDF