Projet

Général

Profil

Development #8764

Exposer le tenant dans les templates

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

Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Catégorie:
-
Version cible:
-
Début:
23 octobre 2015
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:
Non

Description

Suite au #8686, puisque qu'on se base sur le tenant pour obtenir le base_url c'est peut-être utile d'avoir celui-ci dans les templates, à discuter parce que ça rend le template difficilement testable en mode non-multitenant. On pourrait sinon exposer seulement base_url est avoir un solution de repli en mode monotenant, i.e. utiliser le request stocké globalement et/ou toujours renvoyer http://localhost:8000.

Historique

#1

Mis à jour par Thomas Noël il y a plus de 8 ans

Tu aurais un exemple où ça serait utile d'avoir le tenant dans le contexte ? (c'est ça, ou je n'ai pas compris ?)

#2

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

Un seul mais important: les mails qui contiennent des liens; coté authentic par exemple on a le système d'enregistrement qui ne marche qu'initier depuis une requête, impossible d'en faire une commande shell; impossible non plus de faire des tâches de fond qui enverraient des mails (votre compte va être désactivé, voici les comptes à modérer, etc..). Je ne sais pas ce qui envoie les mails pour les encombrants montpellier mais si c'est dans passerelle je suppose que le domaine des liens est en dur ou qu'il n'y en a pas.

Ça a été contourné dans diverses applications (docbow, polynum, site logement) en ajoutant un BASE_URL explicite dans les settings.

#3

Mis à jour par Thomas Noël il y a plus de 8 ans

Benjamin Dauvergne a écrit :

Un seul mais important: les mails qui contiennent des liens;

Of course, j'avais complétement zappé ça.

Ça a été contourné dans diverses applications (docbow, polynum, site logement) en ajoutant un BASE_URL explicite dans les settings.

Et ça pourrait peut-être rester le principe ?
  1. dans hobo, un TenantSettings qui ajoute des choses du tenant dans les settings
  2. dans le logiciel cible, on ajoute dans context quelque chose comme base_url = getattr(settings, 'BASE_URL', None) or request.get_host()

Mmmh ?

#4

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

Et ça pourrait peut-être rester le principe ?
  1. dans hobo, un TenantSettings qui ajoute des choses du tenant dans les settings
  2. dans le logiciel cible, on ajoute dans context quelque chose comme base_url = getattr(settings, 'BASE_URL', None) or request.get_host()

Et le principe DRY ? On est assuré d'avoir ce qu'il faut si un tenant
est présent, on pourrait viser cela, marche en multitenant et en
mono-tenant il faut penser à poser BASE_URL.

from django.conf import settings
from django.db import connection
from hobo.middleware.utils import StoreRequestMiddleware
from django.template import Library

register = Library()

@register.simple_tag(takes_context=True)
def base_url(context):
    request = context.get('request')
    if not request:
        request = StoreRequestMiddleware.get_request()
    if request:
        url = request.build_absolute_uri('')
    if hasattr(settings, 'BASE_URL'):
        url = settings.BASE_URL
    elif hasattr(connection, 'tenant') and hasattr(connection.tenant, 'get_base_url'):
        url = connection.tenant.get_base_url()
    else:
        assert True, 'No way to build a base URL'
    url = url.rstrip('/')
    return url

à utiliser

{% base_url %}{% url 'coincoin' %}
#5

Mis à jour par Frédéric Péters il y a plus de 8 ans

Pour info combo pose déjà l'URL racine du site dans site_base (et c'est utilisé extensivement dans publik-base-theme); ça m'arrangerait qu'on n'ait pas à changer ça.

#6

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

  • Statut changé de Nouveau à Fermé
  • Planning mis à Non

Pour info combo pose déjà l'URL racine du site dans site_base (et c'est utilisé extensivement dans publik-base-theme); ça m'arrangerait qu'on n'ait pas à changer ça.

On vit très bien avec ça.

Formats disponibles : Atom PDF