Projet

Général

Profil

Development #14630

Avoir un import-template générique

Ajouté par Benjamin Dauvergne il y a presque 2 ans. Mis à jour il y a environ 8 heures.

Statut:
En cours
Priorité:
Normal
Assigné à:
Catégorie:
-
Début:
17 jan. 2017
Echéance:
% réalisé:

0%

Patch proposed:
Oui

Description

Mon idée ce serait dans chaque application d'avoir des commandes import/export-site qui prennent un fichier ou affiche le résultat en sortie standard.

Tout ce que ferait import-template c'est savoir qu'il faut aller chercher le fichier dans /var/lib/<application>/skeletons/<template-name> mais pour le reste il ferait appel à call_command('import-site', ...) qui sera le standard pour nos applications (c'est déja import_site dans combo, à voir si je standardise sur le underscore dans passerelle aussi).

Par souci d'uniformité je proposerai bien d'avoir la même chose dans w.c.s. à un moment.

0001-agent-add-generic-import_template-management-command.patch Voir (2,1 ko) Christophe Siraut, 10 jan. 2019 21:36

0001-agent-add-generic-import_template-management-command.patch Voir (3,02 ko) Christophe Siraut, 14 jan. 2019 21:20


Demandes liées

Lié à Passerelle - Development #13887: possibilité d'export/import de paramétrage Fermé 07 nov. 2016
Lié à Combo - Development #15665: Étendre import/export _site comme les autres applis Publik Solution déployée 29 mar. 2017
Lié à Publik - Development #20770: Pouvoir déployer Publik depuis une UI Nouveau 18 déc. 2017
Lié à Authentic 2 - Development #16514: commande de gestion pour exporter/importer des rôles et OU Fermé 26 mai 2017
Lié à Hobo - Development #29762: ordonnancement des import-template Nouveau 15 jan. 2019

Historique

#1 Mis à jour par Benjamin Dauvergne il y a presque 2 ans

#2 Mis à jour par Benjamin Dauvergne il y a presque 2 ans

L'implémentation par défaut devrait appeler la commande suivante si elle existe:

import_site --if-empty /var/lib/<application>/skeletons/<template_name>

#3 Mis à jour par Frédéric Péters il y a presque 2 ans

  • Lié à Development #15665: Étendre import/export _site comme les autres applis Publik ajouté

#4 Mis à jour par Frédéric Péters il y a environ un an

#5 Mis à jour par Frédéric Péters il y a 10 mois

  • Lié à Development #16514: commande de gestion pour exporter/importer des rôles et OU ajouté

#8 Mis à jour par Benjamin Dauvergne il y a 26 jours

L'idée c'est d'ajouter à hobo une commande import-template, qui prend en paramètre template_name; le code pour l'appeler est déjà là, voir #14154, et attends tranquillement qu'on implémente ces commandes, et ce que je propose c'est que par défaut cette commande lance un import_site --if-empty /var/lib/<app_name>/skeletons/<template_name>.json si ce fichier existe.

À nous de déployer via paquets ou autre ces templates ensuite (on a encore jamais discuter ce ça mais faut déjà qu'on arrive à un moment où ça marche sur la plupart des applications); actuellement passerelle, combo, chrono et authentic ont un commande import_site.

#9 Mis à jour par Christophe Siraut il y a 26 jours

  • Assigné à mis à Christophe Siraut

#10 Mis à jour par Christophe Siraut il y a 6 jours

Je n'arrive pas à grand chose, (je suis aveuglément le descriptif); si on veut que ça avance est-ce que tu prendrais en charge ce ticket Benjamin? J'ai tenté hobo/agent/common/management/commands/import_template.py :

class Command(BaseCommand):

    def add_arguments(self, parser):
        parser.add_argument('template_name', type=str)

    def handle(self, *args, **kwargs):

        APP_NAME = ?
        template = '/var/lib/%s/skeletons/%s.json' % (APP_NAME, kwargs['template_name'])

        if 'import_site' in get_commands():

            if not os.path.isfile(template):
                raise(Exeception('Template not found'))

            call_command('import_site', '--if-empty', template) 

#11 Mis à jour par Benjamin Dauvergne il y a 6 jours

Christophe Siraut a écrit :

Je n'arrive pas à grand chose, (je suis aveuglément le descriptif); si on veut que ça avance est-ce que tu prendrais en charge ce ticket Benjamin? J'ai tenté hobo/agent/common/management/commands/import_template.py :

[...]

Et ?

#12 Mis à jour par Christophe Siraut il y a 6 jours

Et ?

je ne sais pas comment trouver APP_NAME depuis une commande de management.

#13 Mis à jour par Benjamin Dauvergne il y a 6 jours

settings.PROJECT_NAME.

#14 Mis à jour par Christophe Siraut il y a 6 jours

une version de base.

#15 Mis à jour par Benjamin Dauvergne il y a 6 jours

Y a pu qu'à faire des test pour voir ce que ça donne en vrai, par exemple dans les tests authentic et passerelle intégrés.

#16 Mis à jour par Christophe Siraut il y a 2 jours

En passant, avec un test passerelle naïf je reçois :

  chris@devinst:~/src/hobo$ DEBIAN_CONFIG_COMMON=debian/debian_config_common.py PASSERELLE_SETTINGS_FILE=tests_passerelle/settings.py DJANGO_SETTINGS_MODULE=passerelle.settings python -m pytest tests_passerelle/test_import_template.py 
  […]
  ../passerelle/passerelle/base/management/commands/import_site.py:28: in handle
  E   AttributeError: 'list' object has no attribute 'copy'

#17 Mis à jour par Frédéric Péters il y a 2 jours

E AttributeError: 'list' object has no attribute 'copy'

Je ne sais de quelle commande tu as construit :

jstr = '''[{
  "model": "common.role",
  …

mais un export de passerelle ne ressemble pas à ça. (ça doit être un dictionnaire avec "apiusers" et "resources" comme clés.)

#18 Mis à jour par Benjamin Dauvergne il y a un jour

#19 Mis à jour par Christophe Siraut il y a environ 8 heures

Je ne sais de quelle commande tu as construit […]

dumpdata :/

Formats disponibles : Atom PDF