Projet

Général

Profil

Bug #6687

Les middleware de settings ne peuvent pas marcher (enfin surtout si il y en a plus d'un)

Ajouté par Benjamin Dauvergne il y a environ 9 ans. Mis à jour il y a plus de 8 ans.

Statut:
Fermé
Priorité:
Haut
Assigné à:
Catégorie:
-
Version cible:
-
Début:
10 mars 2015
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

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

Révision 576894be (diff)
Ajouté par Thomas Noël il y a environ 9 ans

new TenantSettingsMiddleware (#6687)

Historique

#1

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)

#2

Mis à jour par Thomas Noël il y a environ 9 ans

  • Assigné à mis à Thomas Noël
#3

Mis à jour par Benjamin Dauvergne il y a environ 9 ans

Toutafé.

#4

Mis à jour par Thomas Noël il y a environ 9 ans

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".

#5

Mis à jour par Thomas Noël il y a environ 9 ans

Relu avec Benj, ok.

#6

Mis à jour par Thomas Noël il y a environ 9 ans

  • Statut changé de En cours à Résolu (à déployer)
#7

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 ?

#8

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

#9

Mis à jour par Frédéric Péters il y a environ 9 ans

Merci.

#10

Mis à jour par Benjamin Dauvergne il y a plus de 8 ans

  • Statut changé de Résolu (à déployer) à Fermé

Formats disponibles : Atom PDF