Development #46474
Permettre de charger les plugins via le registre des applications django
0%
Description
Une étape pour se passer de pkg_resources.
Fichiers
Demandes liées
Révisions associées
idp.saml: rely on get_plugins for beeing discovered (#46474)
authentic2_auth_oidc: rely on get_plugins for beeing discovered (#46474)
authentic2_idp_cas: rely on get_plugins for beeing discovered (#46474)
authentic2_idp_oidc: rely on get_plugins for beeing discovered (#46474)
authentic2_auth_fc: rely on get_plugins for beeing discovered (#46474)
Historique
Mis à jour par Emmanuel Cazenave il y a plus de 3 ans
- Lié à Development #22865: Ne plus utiliser pkg_resources pour charger les applications incluses dans authentic ajouté
Mis à jour par Emmanuel Cazenave il y a plus de 3 ans
- Fichier 0001-misc-load-plugins-through-django-s-application-regis.patch 0001-misc-load-plugins-through-django-s-application-regis.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Ça servira pour les méthodes de plugin type 'get_before_urls', 'redirect_logout_list', etc, qui sont appelées lorsque le registre des applications est peuplé.
Mis à jour par Benjamin Dauvergne il y a plus de 3 ans
- Statut changé de Solution proposée à Solution validée
Juste un doute sur le PLUGIN_CACHE[group_name] qui se retrouve dans le dernier if
, une raison ?
Mis à jour par Emmanuel Cazenave il y a plus de 3 ans
C'est appelé plusieurs fois dans les settings d'a2 via les méthodes plugins.register_plugins_xxxxx
et ça ce moment là apps.ready
est faux, donc je ne veux pas remplir le cache tant qu'il n'y a pas eu un appel qui passe aussi dans le registre.
Mis à jour par Benjamin Dauvergne il y a plus de 3 ans
Mais donc ça va marcher pour certains plugins mais pas pour d'autres on est d'accord ?
Mis à jour par Emmanuel Cazenave il y a plus de 3 ans
Les appels fait par a2 dans settings.py via les plugins.register_plugins_xxxxx
n'auront pas accès aux plugins qui ne déclarent plus d'entrypoint (d'où par exemple dans #46476 la nécessiter de poser explicitement des settings via authentic2_auth_fedict.register
, pour compenser).
Les appels fait par a2 ultérieurement (dans urls.py et il y a d'autres endroits) auront accès aux plugins déclarés via entry-point ou ceux déclarés via un get_a2_plugin sur leur AppConfig.
Dans la série de tickets déjà poussés #44320, #44319 etc, il y a des fois des petits bouts de code ad hoc pour compenser le fait de ne plus être visible via les entrypoint, genre for plugin in itertools.chain(plugins.get_plugins(), apps.get_app_configs()):
dans #44319.
Et soudainement je réalise qu'il faudrait que je reprenne ces petits trucs au profit d'une déclaration via get_a2_plugin
par souci de cohérence et pour ne pas appeler plusieurs fois un même plugin.
Je ne sais pas si ça répond à ta question mais merci pour ta remarque.
Mis à jour par Emmanuel Cazenave il y a plus de 3 ans
- Fichier 0001-misc-load-plugins-through-django-s-application-regis.patch 0001-misc-load-plugins-through-django-s-application-regis.patch ajouté
- Fichier 0002-idp.saml-rely-on-get_plugins-for-beeing-discovered-4.patch 0002-idp.saml-rely-on-get_plugins-for-beeing-discovered-4.patch ajouté
- Fichier 0003-authentic2_auth_oidc-rely-on-get_plugins-for-beeing-.patch 0003-authentic2_auth_oidc-rely-on-get_plugins-for-beeing-.patch ajouté
- Fichier 0004-authentic2_idp_cas-rely-on-get_plugins-for-beeing-di.patch 0004-authentic2_idp_cas-rely-on-get_plugins-for-beeing-di.patch ajouté
- Fichier 0005-authentic2_idp_oidc-rely-on-get_plugins-for-beeing-d.patch 0005-authentic2_idp_oidc-rely-on-get_plugins-for-beeing-d.patch ajouté
- Fichier 0006-authentic2_auth_fc-rely-on-get_plugins-for-beeing-di.patch 0006-authentic2_auth_fc-rely-on-get_plugins-for-beeing-di.patch ajouté
- Statut changé de Solution validée à Solution proposée
Voilà pour l'harmonisation.
Mis à jour par Benjamin Dauvergne il y a plus de 3 ans
- Statut changé de Solution proposée à Solution validée
À long terme j'aurai plutôt vu la disparition des plugins eux mêmes au profit des AppConfig plutôt que de recentraliser ça dans Plugin mais peut-être que c'est mieux de ne pas mélanger un objet défini par Django avec nos besoins. Mais soit.
Mis à jour par Emmanuel Cazenave il y a plus de 3 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit df4c10b06e8ba70e8ab5666326bab55822acb05b Author: Emmanuel Cazenave <ecazenave@entrouvert.com> Date: Wed Sep 9 12:33:28 2020 +0200 authentic2_auth_fc: rely on get_plugins for beeing discovered (#46474) commit f190c6cdc56c787e95d26d76463c1cd4079c8e19 Author: Emmanuel Cazenave <ecazenave@entrouvert.com> Date: Wed Sep 9 12:14:28 2020 +0200 authentic2_idp_oidc: rely on get_plugins for beeing discovered (#46474) commit e600e39d3bfc96f61d4cc4379433734fe29b5160 Author: Emmanuel Cazenave <ecazenave@entrouvert.com> Date: Wed Sep 9 12:07:49 2020 +0200 authentic2_idp_cas: rely on get_plugins for beeing discovered (#46474) commit 7e496a719b936701b54076cb693d8dc6d173f408 Author: Emmanuel Cazenave <ecazenave@entrouvert.com> Date: Wed Sep 9 12:03:06 2020 +0200 authentic2_auth_oidc: rely on get_plugins for beeing discovered (#46474) commit 33cfc9bd8cf758d79e8bc274396e04b4a9960baf Author: Emmanuel Cazenave <ecazenave@entrouvert.com> Date: Wed Sep 9 11:50:53 2020 +0200 idp.saml: rely on get_plugins for beeing discovered (#46474) commit 0d4feba6e64bb92528b9fc9cf5f25e316be15a83 Author: Emmanuel Cazenave <ecazenave@entrouvert.com> Date: Tue Sep 8 14:54:27 2020 +0200 misc: load plugins through django's application registry when possible (#46474)
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
misc: load plugins through django's application registry when possible (#46474)