Bug #28897
/manage/users/add perd la query string
0%
Description
Et du coup, parcours cassé.
Fichiers
Demandes liées
Révisions associées
Historique
Mis à jour par Paul Marillonnet il y a plus de 5 ans
Est-ce que tu peux me décrire en une phrase le parcours stp ? Je vais essayer de reproduire le bogue.
Mis à jour par Frédéric Péters il y a plus de 5 ans
/manage/users/add/?next_url=plop → /manage/users/1/add/
Mis à jour par Frédéric Péters il y a plus de 5 ans
La vue c'est ça, il faut juste y ajouter la query string :
def user_add_default_ou(request): ou = get_default_ou() return redirect(request, 'a2-manager-user-add', kwargs={'ou_pk': ou.id})
Mis à jour par Paul Marillonnet il y a plus de 5 ans
J'écris des tests pour reproduire le bogue.
Dans l'intitulé du ticket, il est question de /manage/
, et dans les remarques du ticket, c'est /api/
.
Est-ce que c'est à la fois le manager et l'API DRF qui sont dysfonctionnels ?
Mis à jour par Paul Marillonnet il y a plus de 5 ans
- Statut changé de Nouveau à Information nécessaire
Mis à jour par Frédéric Péters il y a plus de 5 ans
- Statut changé de Information nécessaire à Nouveau
Est-ce que c'est à la fois le manager et l'API DRF qui sont dysfonctionnels ?
J'ai corrigé on parle du /manage/
Mis à jour par Paul Marillonnet il y a plus de 5 ans
- Statut changé de Nouveau à En cours
- Assigné à mis à Paul Marillonnet
Ok, merci.
Mis à jour par Paul Marillonnet il y a plus de 5 ans
- Fichier 0001-WIP-manager-keep-querystring-while-performing-user-a.patch 0001-WIP-manager-keep-querystring-while-performing-user-a.patch ajouté
- Assigné à
Paul Marillonnetsupprimé - Patch proposed changé de Non à Oui
Une première version, qui ne conserve la querystring que lorsqu'aucun next_url n'est mentionné.
Si ce n'est pas le comportement voulu, alors je modifierai le code de manière à ce que, lorsqu'un next_url est mentionné et qu'il y a d'autres paramètre de querystring, on renvoie bien à la next_url
avec la querystring (bien sûr tronquée du paramètre next_url
).
Mis à jour par Benjamin Dauvergne il y a plus de 5 ans
Il y a des fonctions utilitaires pour construire des URLs dans authentic qu'il faut utiliser, ici ce serait:
from authentic2.utils import make_url ... return make_url('a2-manager-user-detail', kwargs={'pk': self.object.pk}, request=self.request, keep_params=True, include=[REDIRECT_FIELD_NAME])
Ça pourrait être utile d'en faire un raccourci vu que c'est une action qui revient assez souvent, genre:
Ça fait tout le job, par contre la variable next ne peut pas s'appeler next_url
c'est next
qu'il faut, c'est pareil partout (ou django.contrib.auth.REDIRECT_FIELD_NAME qui évite les typos), ne pas commencer par introduire une dissonance.
Mis à jour par Frédéric Péters il y a plus de 5 ans
Une première version, qui ne conserve la querystring que lorsqu'aucun next_url n'est mentionné.
La modification doit uniquement porter sur la vue que je citais.
Ça fait tout le job, par contre la variable next ne peut pas s'appeler next_url c'est next qu'il faut, c'est pareil partout (ou django.contrib.auth.REDIRECT_FIELD_NAME qui évite les typos), ne pas commencer par introduire une dissonance.
Je parle ici de conserver la querystring, si dedans c'est pas ?next_url mais ?next, ça ne change rien pour moi.
Mais ticket à créer parce que #26652 a utilisé next_url.
Mis à jour par Frédéric Péters il y a plus de 5 ans
- Lié à Bug #28931: La redirection post création d'un usager devrait venir d'un paramètre ?next, pas ?next_url ajouté
Mis à jour par Paul Marillonnet il y a plus de 5 ans
- Statut changé de En cours à Solution proposée
- Fichier 0001-manager-keep-querystring-while-performing-default-ou.patch 0001-manager-keep-querystring-while-performing-default-ou.patch ajouté
Frédéric Péters a écrit :
La modification doit uniquement porter sur la vue que je citais.
Pardon, j'étais parti sur une mauvaise piste.
Et donc j'ai utilisé authentic2.utils.redirect
au lieu authentic2.utils.make_safe
, car cette première me semblait plus adaptée (et son implémentation fait appel à la seconde).
Mis à jour par Paul Marillonnet il y a plus de 5 ans
- Fichier 0001-manager-keep-querystring-while-performing-default-ou.patch 0001-manager-keep-querystring-while-performing-default-ou.patch ajouté
Et on enlève cet ajout de ligne odieux dans le patch précédent…
Mis à jour par Benjamin Dauvergne il y a plus de 5 ans
Enfin include=[django.contrib.auth.REDIRECT_FIELD_NAME]
.
Mis à jour par Paul Marillonnet il y a plus de 5 ans
Benjamin Dauvergne a écrit :
Enfin
include=[django.contrib.auth.REDIRECT_FIELD_NAME]
.
À voir avec Frédéric, mais je crois que l'objet du ticket est de conserver toute querystring lors de la redirection sur la page d'ajout d'usager dans l'OU par défaut.
Peut-être que je me suis trompé à la lecture du code et en testant rapidement l'affaire, mais il me semble qu'un paramètre include
provoque la perte de tous les paramètres de querystring non explicitement mentionnés, non ?
Mis à jour par Benjamin Dauvergne il y a plus de 5 ans
- Statut changé de Solution proposée à Solution validée
Paul Marillonnet a écrit :
À voir avec Frédéric, mais je crois que l'objet du ticket est de conserver toute querystring lors de la redirection sur la page d'ajout d'usager dans l'OU par défaut.
Peut-être que je me suis trompé à la lecture du code et en testant rapidement l'affaire, mais il me semble qu'un paramètreinclude
provoque la perte de tous les paramètres de querystring non explicitement mentionnés, non ?
Bon ok mais ce n'est pas du tout l'objet du ticket, il est juste mal nommé je pense, dans la mesure ou la vue UserAdd ne prends pas d'autre paramètre que next
; comme c'est juste une redirection on peut considérer que conserver toute la QS n'est pas un drame. Go.
Mis à jour par Paul Marillonnet il y a plus de 5 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 0e340015372526aa0da4a47a5c90bc1f1dd18f98 Author: Paul Marillonnet <pmarillonnet@entrouvert.com> Date: Wed Dec 12 16:35:40 2018 +0100 manager: keep querystring while performing default ou user creation (#28897)
Mis à jour par Frédéric Péters il y a plus de 5 ans
- Statut changé de Résolu (à déployer) à Solution déployée
manager: keep querystring while performing default ou user creation (#28897)