Projet

Général

Profil

Bug #28897

/manage/users/add perd la query string

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

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
11 décembre 2018
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

Description

Et du coup, parcours cassé.


Fichiers


Demandes liées

Lié à Authentic 2 - Bug #28931: La redirection post création d'un usager devrait venir d'un paramètre ?next, pas ?next_urlFermé12 décembre 2018

Actions

Révisions associées

Révision 0e340015 (diff)
Ajouté par Paul Marillonnet il y a plus de 5 ans

manager: keep querystring while performing default ou user creation (#28897)

Historique

#1

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.

#2

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/

#3

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})
#4

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 ?

#5

Mis à jour par Paul Marillonnet il y a plus de 5 ans

  • Statut changé de Nouveau à Information nécessaire
#6

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/

#7

Mis à jour par Paul Marillonnet il y a plus de 5 ans

  • Statut changé de Nouveau à En cours
  • Assigné à mis à Paul Marillonnet

Ok, merci.

#8

Mis à jour par Paul Marillonnet il y a plus de 5 ans

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

#9

Mis à jour par Paul Marillonnet il y a plus de 5 ans

  • Assigné à mis à Paul Marillonnet
#10

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.

#11

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.

#12

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é
#13

Mis à jour par Paul Marillonnet il y a plus de 5 ans

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

#14

Mis à jour par Paul Marillonnet il y a plus de 5 ans

Et on enlève cet ajout de ligne odieux dans le patch précédent…

#15

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

Le include=['next'] s'est perdu.

#16

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

Enfin include=[django.contrib.auth.REDIRECT_FIELD_NAME].

#17

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 ?

#18

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ètre include 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.

#19

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)
#20

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

Formats disponibles : Atom PDF