Projet

Général

Profil

Development #46474

Permettre de charger les plugins via le registre des applications django

Ajouté par Emmanuel Cazenave il y a plus de 3 ans. Mis à jour il y a plus de 3 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
08 septembre 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Une étape pour se passer de pkg_resources.


Fichiers


Demandes liées

Lié à Authentic 2 - Development #22865: Ne plus utiliser pkg_resources pour charger les applications incluses dans authenticFermé28 mars 2018

Actions

Révisions associées

Révision 0d4feba6 (diff)
Ajouté par Emmanuel Cazenave il y a plus de 3 ans

misc: load plugins through django's application registry when possible (#46474)

Révision 33cfc9bd (diff)
Ajouté par Emmanuel Cazenave il y a plus de 3 ans

idp.saml: rely on get_plugins for beeing discovered (#46474)

Révision 7e496a71 (diff)
Ajouté par Emmanuel Cazenave il y a plus de 3 ans

authentic2_auth_oidc: rely on get_plugins for beeing discovered (#46474)

Révision e600e39d (diff)
Ajouté par Emmanuel Cazenave il y a plus de 3 ans

authentic2_idp_cas: rely on get_plugins for beeing discovered (#46474)

Révision f190c6cd (diff)
Ajouté par Emmanuel Cazenave il y a plus de 3 ans

authentic2_idp_oidc: rely on get_plugins for beeing discovered (#46474)

Révision df4c10b0 (diff)
Ajouté par Emmanuel Cazenave il y a plus de 3 ans

authentic2_auth_fc: rely on get_plugins for beeing discovered (#46474)

Historique

#1

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é
#2

Mis à jour par Emmanuel Cazenave il y a plus de 3 ans

Ç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é.

#3

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 ?

#4

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.

#5

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 ?

#6

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.

#8

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.

#9

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)
#10

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

Formats disponibles : Atom PDF