Development #60698
API export/import pour la création et l'installation d'applications
0%
Description
Dans le cadre du projet d'applification il y a pour l'assemblage d'une application besoin d'API pour lister/exporter les objets possibles, et pour l'installation d'une API prenant un bundle d'objets.
Fichiers
Demandes liées
Révisions associées
misc: add export/import API (#60698)
Historique
Mis à jour par Frédéric Péters il y a environ 2 ans
- Lié à Development #49204: "Applification" des modules (applications métiers) Publik ajouté
Mis à jour par Frédéric Péters il y a environ 2 ans
- Fichier 0002-misc-add-export-import-API-60698.patch 0002-misc-add-export-import-API-60698.patch ajouté
- Fichier 0001-trivial-add-slug-property-to-forms-cards-60698.patch 0001-trivial-add-slug-property-to-forms-cards-60698.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
0001 pour ajouter un alias slug (vers url_name) sur les formdef/carddef.
0002 avec le vrai boulot, par endpoint ça donne :
- api/export-import/, la liste des types d'objets qu'on peut exporter (formulaires, démarches, etc.) c'est bidon,
- api/export-import/(?P<objects>[\w-]+)/, la liste des objets du type donné, c'est tout aussi bidon,
- api/export-import/(?P<objects>[\w-]+)/(?P<slug>[\w_-]+)/, la sérialisation de l'objet donné, on n'est pas sorti du bidon.
- api/export-import/(?P<objects>[\w-]+)/(?P<slug>[\w_-]+)/dependencies/, les dépendances de l'objet donné,
Il s'agit des dépendances directes (hobo à l'assemblage fera le parcours pour suivre celles-ci), ça passe par l'ajout d'une méthode get_dependencies à divers endroits, sont couverts les endroits faciles et évidents. Ne sont pas couverts les autres, comme par exemple une condition qui aurait en expression une requête basée sur des fiches, ou un champ commentaire qui aurait comme contenu le résultat d'un appel webservice. Ça pourra venir mais ça n'était pas essentiel.
- api/export-import/bundle-import/, le chargement d'une application,
Ça couvre installation et mise à jour; deux trucs particuliers sont à noter :
1/ il y a une installation en deux phases, la première crée juste certains objets avec leur slug; la deuxième fait l'import réel des objets, qui ne risquent à ce moment-là plus d'échouer sur une dépendance qui n'existe pas (parce que phase 1).
2/ pour les formulaires et modèles de fiche il y a une série d'attributs qui sont conservés (options de workflow, attribution des rôles, paramètres de publication).
Mis à jour par Lauréline Guérin il y a environ 2 ans
def test_export_import_form_404(pub): get_app(pub).get(sign_uri('/api/export-import/xxx/plop/'), status=404)
mauvaise url ? (xxx => forms ?)
Mis à jour par Frédéric Péters il y a environ 2 ans
Dans ma tête c'était pour passer sur
def get_object(objects, slug): klass = klasses.get(objects) if not klass: raise Http404()
mais je vais en ajouter un autre pour gérer/tester la 404 sur le mauvais slug.
Mis à jour par Lauréline Guérin il y a environ 2 ans
Dans wcs/fields.py get_dependencies:
yield NamedDataSource.get_by_slug(data_source_type, ignore_errors=True)
data_source_type pourrait être None, mais c'est géré par
for dependency in obj.get_dependencies(): if dependency is None or isinstance(dependency, StubNamedDataSource): continue
?
Mis à jour par Frédéric Péters il y a environ 2 ans
Oui, j'ai préféré laisser le StubNamedDataSource passer et les traiter derrière dans for dependency in obj.get_dependencies()
, dans l'idée que des sources de données pourraient être mentionnées ailleurs (condition ou gabarit) et que je ne voulais pas répéter le traitement du cas StubNamedDataSource (même si ces cas ne sont actuellement pas traités).
Mis à jour par Lauréline Guérin il y a environ 2 ans
pour moi c'est ok, une autre personne veut relire ?
Mis à jour par Lauréline Guérin il y a environ 2 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Frédéric Péters il y a environ 2 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 1c93862e6051d8107db382db4a19aa948b44f2d8 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Fri Dec 31 14:59:14 2021 +0100 misc: add export/import API (#60698) commit 950abc925b770ed32b61b835bd7d8f92d544b070 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Sun Jan 16 19:06:32 2022 +0100 trivial: add slug property to forms/cards (#60698)
Mis à jour par Transition automatique il y a environ 2 ans
- Statut changé de Résolu (à déployer) à Solution déployée
trivial: add slug property to forms/cards (#60698)