Bug #6687
Les middleware de settings ne peuvent pas marcher (enfin surtout si il y en a plus d'un)
0%
Description
Les middleware basés sur TenantSettingBaseMiddleware mettent en cache les derniers settings générés si un middleware recalculer des settings mais n'est pas ne bout de chaîne (i.e. il y a un autre middleware de setting s'exécutant après lui) alors les settings vus par l'application seront toujours les derniers calculés par le middleware qui s'exécute le plus tard.
Il faudrait que le recalcul d'une des middleware invalide tout la chaîne de settings calculés après, un peu complexe, une autre idée serait de ne pas utiliser plusieurs middleware mais un seul qui appelerait plusieurs chargeurs de config (via un setting spécifique SETTINGS_MIDDLEWARE_LOADERS = ['hobo.middleware.loaders.TemplateVarsLoader', '...Authentic2Loader', etc..]
, le premier loader qui signale qu'un fichier est plus à jour que la version en cache, on relit tout.
Fichiers
Révisions associées
Historique
Mis à jour par Thomas Noël il y a environ 9 ans
avant que je n'aille plus loin, est-ce que l'idée serait d'avoir un truc comme ça... (cf simili patch)
Mis à jour par Thomas Noël il y a environ 9 ans
- Fichier 0001-new-TenantSettingsMiddleware-6687.patch 0001-new-TenantSettingsMiddleware-6687.patch ajouté
- Statut changé de Nouveau à En cours
- Patch proposed changé de Non à Oui
Voici donc un patch, qui forcément casse le fonctionnement précédent du middleware de settings.
S'il est ok, il faudra adapter les debian_config.py des softs actuellement déployés en multitenant hobo.
La façon de faire avec ce patch, c'est d'ajouter UN SEUL middleware pour les settings des tenants:
MIDDLEWARE_CLASSES=( 'hobo.multitenant.middleware.TenantMiddleware', 'hobo.multitenant.middleware.TenantSettingsMiddleware' , # <-- tout seul )
et de déclarer à côté où ce middleware doit chercher ses configs, selon le logiciel déployé, par exemple pour authentic:
TENANT_SETTINGS_MIDDLEWARE_LOADERS = ( 'hobo.multitenant.settings_loaders.TemplateVars', 'hobo.multitenant.settings_loaders.Authentic', # 'hobo.multitenant.settings_loaders.SettingsJSON', # 'hobo.multitenant.settings_loaders.SettingsPy', )
Patch testé sur passerelle.dev avec loader "TemplateVars".
Mis à jour par Frédéric Péters il y a environ 9 ans
Est-ce que tu pourrais mettre à jour le settings d'exemple de https://dev.entrouvert.org/projects/prod-eo/wiki/HowDoWeDoDjangoTenants ?
Mis à jour par Thomas Noël il y a environ 9 ans
Frédéric Péters a écrit :
Est-ce que tu pourrais mettre à jour le settings d'exemple de https://dev.entrouvert.org/projects/prod-eo/wiki/HowDoWeDoDjangoTenants ?
Fait
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
- Statut changé de Résolu (à déployer) à Fermé
new TenantSettingsMiddleware (#6687)