Sitecof: Récriture des URLs publiques #752

Closed
champeno wants to merge 3 commits from Evarin/sitecof-rewrite-urls into master
champeno commented 2020-08-30 12:00:14 +02:00 (Migrated from git.eleves.ens.fr)

Pour éviter que le site du COF ait des URL à rallonge (/gestion/sitecof/fr/présentation/), on rajoute une couche de récriture des URLs, à combiner avec un reverse-proxy dans la config Nginx.

En pratique, pour connaître l'URL d'une page, Wagtail fait appel à la fonction Page.get_url_parts(...). Cette MR rajoute donc pour les pages du site du COF un mixin qui surcharge get_url_parts en appliquant une simple récriture de l'URL relative selon des patterns indiqués dans les settings.

Pour éviter que le site du COF ait des URL à rallonge (/gestion/sitecof/fr/présentation/), on rajoute une couche de récriture des URLs, à combiner avec un reverse-proxy dans la config Nginx. En pratique, pour connaître l'URL d'une page, Wagtail fait appel à la fonction `Page.get_url_parts(...)`. Cette MR rajoute donc pour les pages du site du COF un mixin qui surcharge `get_url_parts` en appliquant une simple récriture de l'URL relative selon des patterns indiqués dans les settings.
lstephan commented 2020-08-30 12:43:50 +02:00 (Migrated from git.eleves.ens.fr)

il reste un print

il reste un print
champeno commented 2020-08-30 12:48:49 +02:00 (Migrated from git.eleves.ens.fr)

changed this line in version 2 of the diff

changed this line in [version 2 of the diff](/klub-dev-ens/gestioCOF/merge_requests/448/diffs?diff_id=2049&start_sha=737a3e377c46e578593ffad8247c690eaf360c20#9678d619ce4002b7a170bbc752d085ed73c53033_26_26)
champeno commented 2020-08-30 12:48:50 +02:00 (Migrated from git.eleves.ens.fr)

added 1 commit

Compare with previous version

added 1 commit <ul><li>d1f5cb68 - Print oublié</li></ul> [Compare with previous version](/klub-dev-ens/gestioCOF/merge_requests/448/diffs?diff_id=2049&start_sha=737a3e377c46e578593ffad8247c690eaf360c20)
champeno commented 2020-08-30 12:49:07 +02:00 (Migrated from git.eleves.ens.fr)

Oupsi

Oupsi
champeno commented 2020-08-30 12:49:07 +02:00 (Migrated from git.eleves.ens.fr)

resolved all discussions

resolved all discussions
mpepin commented 2020-08-30 13:07:48 +02:00 (Migrated from git.eleves.ens.fr)

Ça ne fonctionnera pas en production car Django/wagtail ne voient pas le /gestion/. Ce qui se passe c'est :

  1. Django render la page et écrit des urls de la forme /sitecof/présentation
  2. Daphne récupère cette page, ajoute /gestion devant toutes les urls locales, et donne la page à nginx
  3. nginx sert la page

La seule façon d'éviter que le /gestion/ soit ajouté est de produire des urls absolues, ça doit pouvoir se faire dans la fonction get_url je pense. En testant si on est en prod avec settings.DEBUG.

Ça ne fonctionnera pas en production car Django/wagtail ne voient pas le `/gestion/`. Ce qui se passe c'est : 1. Django render la page et écrit des urls de la forme `/sitecof/présentation` 2. Daphne récupère cette page, ajoute `/gestion` devant toutes les urls locales, et donne la page à nginx 3. nginx sert la page La seule façon d'éviter que le `/gestion/` soit ajouté est de produire des urls absolues, ça doit pouvoir se faire dans la fonction [get_url](https://docs.wagtail.io/en/stable/reference/pages/model_reference.html?highlight=full_url#wagtail.core.models.Page.relative_url) je pense. En testant si on est en prod avec `settings.DEBUG`.
champeno commented 2020-08-30 13:11:24 +02:00 (Migrated from git.eleves.ens.fr)

Oh wow je me posais la question justement du statut de ce /gestion. Pourquoi Daphne pourrait pas récrire elle-même les urls dans ce cas ? Ça éviterait qu'il y ait des récritures d'urls partout, tout serait centralisé en un endroit...

Oh wow je me posais la question justement du statut de ce `/gestion`. Pourquoi Daphne pourrait pas récrire elle-même les urls dans ce cas ? Ça éviterait qu'il y ait des récritures d'urls partout, tout serait centralisé en un endroit...
mpepin commented 2020-08-30 13:17:14 +02:00 (Migrated from git.eleves.ens.fr)

J'ai aucune idée si on peut faire ça et si oui comment, mais je peux regarder, effectivement ce serait bien

J'ai aucune idée si on peut faire ça et si oui comment, mais je peux regarder, effectivement ce serait bien
champeno commented 2020-08-30 13:22:53 +02:00 (Migrated from git.eleves.ens.fr)

Sinon forcer l'écriture d'urls complètes ça se fait a priori en trois lignes en rajoutant au mixin :

    def get_url(self, request=None, current_site=None):
        return self.get_full_url(request)

    url = property(get_url)

Et en enlevant le prefixe gestion/ du rewrite ça devrait marcher.

Sinon forcer l'écriture d'urls complètes ça se fait a priori en trois lignes en rajoutant au mixin : ``` def get_url(self, request=None, current_site=None): return self.get_full_url(request) url = property(get_url) ``` Et en enlevant le prefixe `gestion/` du rewrite ça devrait marcher.
lstephan commented 2020-08-30 13:23:30 +02:00 (Migrated from git.eleves.ens.fr)

Je doute que ça soit faisable via daphne... La partie /gestion correspond juste à la variable SCRIPT_NAME de la spec WSGI, donc ça n'est pas vraiment une réécriture custom.

Je doute que ça soit faisable via daphne... La partie `/gestion` correspond juste à la variable `SCRIPT_NAME` de la spec WSGI, donc ça n'est pas vraiment une réécriture custom.
champeno commented 2020-08-30 13:47:55 +02:00 (Migrated from git.eleves.ens.fr)

En fait, on n'a pas besoin de "récrire" les urls, il suffit de forcer les urls absolues, qui s'écriront sans gestion/, et de rajouter le gestion/ par reverse-proxy. C'est un peu sale mais plus simple que tout ça.

En fait, on n'a pas besoin de "récrire" les urls, il suffit de forcer les urls absolues, qui s'écriront sans `gestion/`, et de rajouter le `gestion/` par reverse-proxy. C'est un peu sale mais plus simple que tout ça.
mpepin commented 2020-08-30 15:18:59 +02:00 (Migrated from git.eleves.ens.fr)

mentioned in merge request !449

mentioned in merge request !449
mpepin commented 2020-08-30 18:57:19 +02:00 (Migrated from git.eleves.ens.fr)

mentioned in merge request !450

mentioned in merge request !450
champeno commented 2020-08-30 20:50:39 +02:00 (Migrated from git.eleves.ens.fr)

closed

closed

Pull request closed

Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: DGNum/gestioCOF#752
No description provided.