Projet

Général

Profil

Development #36848

mdel: adopter une nouvelle façon de faire les .zip

Ajouté par Benjamin Dauvergne il y a plus de 4 ans. Mis à jour il y a plus de 4 ans.

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

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Je n'aime pas trop l'approche actuelle un peu trop formelle (tout arrive), je penche pour une façon plus directe de faire:
  • construire des zip "template" comme EtatCivil.zip, contenant des fichiers nommés par exemple {{ numero_teledemarche }}-EtatCivil-ent-{{ step }}.xml et contenant directement un template .xml avec des directives de template Django
  • déclarer ces fichiers via des classes :
    class EtatCivilTemplate(BaseZipTemplate):
        zip_path = 'zip_template/EtatCivil.zip'
        zip_name_template = '{{ numero_teledemarche }}-EtatCivil-{{ step }}.zip'
    

    avoir une méthode .render(ctx) qui parcourt le zip puis construit un autre zip en modifiant les noms et contenu des fichiers en utilisant le moteur de Template django à la fin ça pond un fichier à l'endroit où on en veut un.

À noter qu'on a ignoré jusqu'à présent la mise en forme du routage, il y en a de deux sortes : au niveau message.xml par la PEC et dans l'entête métier via la balise Routage. Il faut se mettre à gérer les deux, éventuellement en supportant des valeurs par défaut au niveau connecteur.

Pour ajouter une démarche il suffira d'ajouter un .zip et une déclaration, dans la suite on peut éventuellement gérer le fait de chopper le zip depuis le répertoire media/ plutôt que depuis les sources, ça permettra les variations (genre ajout de la balise du jour).


Fichiers


Demandes liées

Lié à Passerelle - Development #35818: mdel: démarche DDPACSFermé04 septembre 2019

Actions
Lié à Passerelle - Development #11178: mdel: démarche RCONouveau03 juin 2016

Actions

Révisions associées

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

utils: add zip package for templated zip files (#36848)

Historique

#1

Mis à jour par Emmanuel Cazenave il y a plus de 4 ans

Pas d'envie définitif sur la question mais à première vue ce serait dommage de se retrouver à gérer des problèmes de xml mal formaté parce que des glitchs se glissent dans le rendu des templates django.

Ce qui amène à Genshi que tu avais évoqué ailleurs, dont je trouve la syntaxe est un peu indigeste au premier abord, mais c'est surmontable.

Globalement l'approche actuelle ne me dérange pas et surtout je trouve beaucoup plus important de donner une interface claire à ce connecteur que de changer l'implémentation de génération des fichiers.

#2

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

Emmanuel Cazenave a écrit :

Pas d'envie définitif sur la question mais à première vue ce serait dommage de se retrouver à gérer des problèmes de xml mal formaté parce que des glitchs se glissent dans le rendu des templates django.

Ça se contrôle facilement an joutant par exemple si le fichier a une extension .xml de parser la sortie avant de s'en servir.

Ce qui amène à Genshi que tu avais évoqué ailleurs, dont je trouve la syntaxe est un peu indigeste au premier abord, mais c'est surmontable.

J'aime bien Genshi mais là je me dis que je vais faire au plus simple et au plus homogène avec l'existant (pas l'existant MDEL mais l'usage général qui est fait du moteur de template Django dans nos briques, on a plus d'expérience partagée sur ce moteur).

Globalement l'approche actuelle ne me dérange pas et surtout je trouve beaucoup plus important de donner une interface claire à ce connecteur que de changer l'implémentation de génération des fichiers.

Personnellement je pense que tous les bugs sont dans la génération des fichiers justement (nommage particulièrement des fichiers mais aussi de certaines valeurs, genre code insee, pour AEC c'est "Code INSEE" pour DDPACS c'est "CODE_INSEE", ça change à chaque fois on dirait), si on sort ça du code ça permet d'itérer plus vite.

#3

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

  • Assigné à mis à Benjamin Dauvergne
#4

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

début du truc.

#6

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

Bon je vais réserver ça pour DDPACS et RCO puisque ça fonctionne pour EtatCivil maintenant.

#7

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

  • Statut changé de Solution proposée à En cours
#8

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

#9

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

#10

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

Le contenu des fichiers peut-être spécifier via un template Django ou directement extraite d'une variable du contexte.

#11

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

Ajout d'un mode avec chemin absolu pour usage dans les tests.

#12

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

Ça me chiffonne un peu l'usage de pathlib dans les tests (comme templates_path / manifest_name) car cela différe du code qui est testé.
Pour plus de clarté j'aurais à la limite rajouté un commentaire expliquant ce changement de style.

Sinon, c'est bon pour moi.

#13

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

Serghei Mihai a écrit :

Ça me chiffonne un peu l'usage de pathlib dans les tests (comme templates_path / manifest_name) car cela différe du code qui est testé.
Pour plus de clarté j'aurais à la limite rajouté un commentaire expliquant ce changement de style.

Pas compris, c'est juste pour calculer le chemin réel du fichier manifest construit par les tests ça ne teste rien.

Sinon, c'est bon pour moi.

Bah faut valider alors.

#14

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

  • Statut changé de Solution proposée à Solution validée

Benjamin Dauvergne a écrit :

Pas compris, c'est juste pour calculer le chemin réel du fichier manifest construit par les tests ça ne teste rien.

C'est juste le changement du style du code qui me surprend un peu. Mais passons.

Bah faut valider alors.

Puisque tu insistes :) (mais pousser vendredi).

#15

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

  • Statut changé de Solution validée à Résolu (à déployer)
commit aec61e2a0f93d58ba7268e14ff1e0c24f6a212a7
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date:   Fri Oct 11 13:54:41 2019 +0200

    utils: add zip package for templated zip files (#36848)
#16

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

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF