Development #33873
l'appel à "import_template" via "hobo_deploy" doit spécifier un tenant
0%
Description
La commande "import_template" se lance via "tenant_command" (#20769).
Aussi, lorsque la commande "hobo_deploy" se fini en invoquant "import_template", elle doit également préciser le tenant.
Fichiers
Révisions associées
Historique
Mis à jour par Nicolas Roche il y a presque 5 ans
- Fichier 0001-hobo_deploy-internally-call-import_template-using-te.patch 0001-hobo_deploy-internally-call-import_template-using-te.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
les 3 commandes (indépendantes) suivantes sont chaînées : hobo_deploy -> import_template -> import_site
- par exemple avec passerelle on fait :
$ passerelle-manage tenant_command import_site /var/lib/passerelle/skeletons/signal-publik.json \ -d passerelle.dev.publik.love
- qui sinon est appelée de façon générique par :
$ passerelle-manage tenant_command import_template signal-publik -d passerelle.dev.publik.love
- cette précédente commande étant elle même par ailleurs appelée en fin de 'hobo_deploy'
$ passerelle-manage hobo_deploy https://passerelle.dev.publik.love/ env.json --ignore-timestamp
ce patch permet de réaliser ce troisième point.
Mis à jour par Christophe Siraut il y a presque 5 ans
execute_from_command_line ne me semble pas approprié ici, je serais tenté par connection.set_tenant() avant dans lancer call_command, mais ça n'est pas top non-plus.
Mis à jour par Benjamin Dauvergne il y a presque 5 ans
Christophe Siraut a écrit :
execute_from_command_line ne me semble pas approprié ici, je serais tenté par connection.set_tenant() avant dans lancer call_command, mais ça n'est pas top non-plus.
Il faut éviter les set_tenant() direct et préférer un with tenant_context(tenant)
et oui un call_command serait plus joli.
Mis à jour par Nicolas Roche il y a presque 5 ans
- Fichier 0001-hobo_deploy-internally-call-import_template-using-te.patch 0001-hobo_deploy-internally-call-import_template-using-te.patch ajouté
Merci pour les précisions.
Pour mémoire, la première version avait le mérite d'éviter d'être obligé d'exécuter le test hobo/tests_schemas/test_hobo_deploy.py::test_import_template avant les autres tests qui patchent get_commands
ou call_command
.
C'est un effet de bord lié au fait que la fonction get_commands
de Django est mise en cache et qui risque d'être pénalisant par la suite.
Mis à jour par Christophe Siraut il y a presque 5 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Nicolas Roche il y a presque 5 ans
merci,
pour info j'ai aussi essayé :
call_command('tenant_command', 'import_template', me['template_name'], '-d', tenant.domain)
mais je bute comme pour #25657
Mis à jour par Benjamin Dauvergne il y a presque 5 ans
domain=tenant.comain
je pense, call_command prend les arguments déjà parsés.
Mis à jour par Frédéric Péters il y a presque 5 ans
Oui mais de toute façon non, https://github.com/bernardopires/django-tenant-schemas/issues/495 (positional arguments ko).
Mis à jour par Nicolas Roche il y a presque 5 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 43c082bf3bbfd4d49738e45ba2c3079a2efd1d07 Author: Nicolas ROCHE <nroche@entrouvert.com> Date: Wed Jun 12 16:22:45 2019 +0200 hobo_deploy: internally call import_template using tenant_command (#33873)
Mis à jour par Benjamin Dauvergne il y a presque 5 ans
De toute façon je suis pour ne pas utiliser tenant_command dans des scripts, tenant_context() fait très bien le job.
Mis à jour par Frédéric Péters il y a presque 5 ans
- Statut changé de Résolu (à déployer) à Solution déployée
hobo_deploy: internally call import_template using tenant_command (#33873)