Development #39425
Commande de management pour importer des ressources (assets)
0%
Description
Copié/Collé de #8183 :
Ça serait utile pour avoir des déclinaisons des modèles de site, pour être appelé par le déploiement par hobo.
Fichiers
Demandes liées
Révisions associées
commands: add tar format for site export/import (#39425)
Historique
Mis à jour par Nicolas Roche il y a environ 4 ans
- Fichier 0001-assets-add-import_assets-management-command-39425.patch 0001-assets-add-import_assets-management-command-39425.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Assigné à mis à Nicolas Roche
- Patch proposed changé de Non à Oui
Mis à jour par Nicolas Roche il y a environ 4 ans
J'ai factorisé de code lié aux manipulation du TAR,
et j'ai renommé l'option "--is-empty' en '--overwrite'.
Mis à jour par Frédéric Péters il y a environ 4 ans
Je serais plutôt pour que ce travail soit intégré dans les commandes existantes (import/export_site), l'idée d'ensuite qu'il puisse y avoir un format d'export unique, pages + assets, dans la suite de #37674.
Mis à jour par Nicolas Roche il y a environ 4 ans
Oui cela simplifiera la gestion des ressources.
Mais cela veut-il dire qu'il faudra gérer un second format (tar) d'import des sites en parallèle, en attendant que le premier (json) devienne obsolète ?
Mis à jour par Frédéric Péters il y a environ 4 ans
Gérer de recevoir un .tar en entrée, oui, mais il n'y a pas de plan pour rendre obsolète le json simple, c'est notamment ce que donne l'export direct d'une page.
Mis à jour par Nicolas Roche il y a environ 4 ans
- Fichier 0001-data-merge-assets-and-site-export-file-39425.patch 0001-data-merge-assets-and-site-export-file-39425.patch ajouté
- export des assets comme avant : TAR avec
_assets.json
et les fichiers des assets - export de site : le même TAR avec en plus le contenu JSON inséré dans
_site.json
J'ai gardé la possibilité d'utiliser des flux en entrée / sortie, ce qui rend le patch complètement illisible (surtout pour les tests).
J'ai suivi ce plan :
1) casser la dépendance (qui deviendrait circulaire) d'import_assets envers import site
2) factorisation du code dans assets/utils.py
3) nouveau format TAR pour export sites : utils.py, export_site.py, views.py
4) nouveau format TAR pour import sites: utils.py, import_site.py, views.py
Mais je n'ai pas découpé en plusieurs commit, parce que je n'ai corrigé les tests qu'à la fin.
Mis à jour par Nicolas Roche il y a environ 4 ans
- Lié à Development #6756: Import/export de /media/ ajouté
Mis à jour par Frédéric Péters il y a environ 4 ans
def render_to_response(self, context, **response_kwargs): - response = HttpResponse(content_type='application/json') - json.dump(export_site(), response, indent=2) - return response + fd = BytesIO() + tar = tarfile.open(mode='w', fileobj=fd) + export_site(tar) + tar.close() + return HttpResponse(fd.getvalue(), content_type='application/x-tar')
Je crains timeout + consommation mémoire excessive; ça s'imagine de gérer ça avec StreamingHttpResponse (en imaginant le tar créé petit à petit) ou FileResponse (en imaginant le tar créé dans un fichier temporaire, même si ça ne répond pas au bout timeout). (je ferai un ticket différent pour ça) (vu qu'on a le même "problème" pour l'export des ressources).
Je ne comprends pas comment les tests se retrouvent à tant devoir changer, avec fixtures capsysbinary/monkeypatch. (et je suis bien plus intéressé par un patch qui ne demande pas ça que par une explication).
flux en entrée / sortie
Ça se fait pour du texte, pas pour du binaire.
Là je dirais, à garder les choses ainsi, que la commande d'export doit gagner un paramètre --json (ou --format-json), qui permettra de sortir uniquement le json, et qui lui pourrait se trouver sur stdout. Mais que dans le mode "tar" par défaut, pas d'utilisation de sys.stdout. Et je pense que faire ça ainsi répondra directement à mon commentaire sur les tests, il suffira que ceux-ci passent --json, et rien d'autre ne sera alors à changer.
Mis à jour par Nicolas Roche il y a environ 4 ans
- Fichier 0001-trivial-remove-unused-imports-39425.patch 0001-trivial-remove-unused-imports-39425.patch ajouté
- Fichier 0002-assets-factorize-import-export-code-39425.patch 0002-assets-factorize-import-export-code-39425.patch ajouté
- Fichier 0003-general-add-import-export-tar-format-for-site-39425.patch 0003-general-add-import-export-tar-format-for-site-39425.patch ajouté
- 0002: aucune modification fonctionnelle (les anciens tests passent en l'état).
- 0003: code qui réutilise l'ancien code JSON sans le modifier.
Les changement concernent principalement les interfaces :commands
etviews
, qui gérent les 2 formats.
Mis à jour par Valentin Deniaud il y a presque 4 ans
- Dupliqué par Development #44675: Commande de management d'import de resources ajouté
Mis à jour par Emmanuel Cazenave il y a presque 4 ans
Pas évident à suivre.
Pour ressusciter ce ticket je suggérerais de passer 0001 et 0002 qui me semblent ok plus une nouveau 0003 bidon qui dans la CLI de import-site ferait juste un import_assets(overwrite=False)
si le fichier est au format tar sans rien demander à l'utilisateur (en excluant stdin de ce mécanisme).
Et la suite posée clairement dans autre ticket.
Mis à jour par Nicolas Roche il y a presque 4 ans
- Fichier 0003-manager-add-tar-format-for-site-export-import-39426.patch 0003-manager-add-tar-format-for-site-export-import-39426.patch ajouté
- Fichier 0002-commands-add-tar-format-for-site-export-import-39426.patch 0002-commands-add-tar-format-for-site-export-import-39426.patch ajouté
- Fichier 0001-assets-factorize-import-export-code-39425.patch 0001-assets-factorize-import-export-code-39425.patch ajouté
Pas évident à suivre.
Oui, il y a 2 formats à gérer pour les imports : JSON et TAR (qui contient le JSON)
Le format TAR fonctionne déjà pour l'import des assets (proposé uniquement via l'IHM).
Les deux formats fonctionneront sur l'import complet du site ou des pages individuelles (via l'IHM et en ligne de commande).
Pour ressusciter ce ticket je suggérerais ...
J'ai revu la gestions des paramètres : plutôt que de déduire 'overwrite
' (qui s'applique individuellement à chacun des fichiers d'assets) de 'if_empty
' (qui s'applique à l'ensemble du site), je rajoute un paramètre d'overwrite
à l'import pour traiter les fichiers assets. (par défaut overwrite=False
).
- 0002 qui ne traite que l'ajout du format TAR pour l'import/export en ligne de commande
- 0003 qui utilise désormais le format TAR via l'IHM pour l'export et qui prend en
compte les 2 formats lors de l'import.
0003 est donné à tire indicatif ; je le proposerai dans un nouveau patch et ce sera peut-être l'occasion de proposer un système de téléchargement asynchrone en prévision des gros volumes.
Mis à jour par Nicolas Roche il y a presque 4 ans
- Fichier 0002-commands-add-tar-format-for-site-export-import-39426.patch 0002-commands-add-tar-format-for-site-export-import-39426.patch ajouté
0003 retiré de la branche et appel à close()
ajouté dans export_site.py
Mis à jour par Nicolas Roche il y a presque 4 ans
- Lié à Development #45128: Importer des ressources (assets) via l'IHM d'import de site/pages ajouté
Mis à jour par Frédéric Péters il y a presque 4 ans
0001, il faut deux lignes vides entre les fonctions; à part ça je n'ai pas testé mais je pense que ça doit rouler.
Mis à jour par Nicolas Roche il y a plus de 3 ans
- Fichier 0002-commands-add-tar-format-for-site-export-import-39425.patch 0002-commands-add-tar-format-for-site-export-import-39425.patch ajouté
- Fichier 0001-assets-factorize-import-export-code-39425.patch 0001-assets-factorize-import-export-code-39425.patch ajouté
yep.
Mis à jour par Valentin Deniaud il y a plus de 3 ans
- Statut changé de Solution proposée à Solution validée
J'ai testé et ça marche pour moi. D'une lecture très rapide du code, je remarque juste que
+from combo.apps.assets.utils import (add_tar_content, clean_assets_files, + untar_assets_files, tar_assets_files)
n'est pas indenté correctement.
Mis à jour par Nicolas Roche il y a plus de 3 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 0f856f1334b19282acd0fb3cc2d724d5b4b76b9e Author: Nicolas ROCHE <nroche@entrouvert.com> Date: Mon Jul 13 17:45:49 2020 +0200 commands: add tar format for site export/import (#39425) commit f0e0de43e560ff47e031de40485a1cbb441e5331 Author: Nicolas ROCHE <nroche@entrouvert.com> Date: Sun Feb 16 17:05:53 2020 +0100 assets: factorize import/export code (#39425)
Mis à jour par Frédéric Péters il y a plus de 3 ans
- Statut changé de Résolu (à déployer) à Solution déployée
assets: factorize import/export code (#39425)