Projet

Général

Profil

Bug #13541

permettre regie_slug plutôt que regie_id dans l'appel webservice d'ajout au panier

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

Statut:
Fermé
Priorité:
Normal
Assigné à:
Jean-Baptiste Jaillet
Version cible:
-
Début:
11 octobre 2016
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

Description

(ou permettre au paramètre regie_id de recevoir le slug)

Le truc c'est qu'aujourd'hui sur un passage de recette en prod avec plusieurs régies, les identifiants ne vont pas nécessairement matcher.


Fichiers

Révisions associées

Révision 8e948a6a (diff)
Ajouté par Jean-Baptiste Jaillet il y a plus de 7 ans

lingo: allow regie's slug in AddItemBasket regie_id parameter (#13541)

Historique

#1

Mis à jour par Jean-Baptiste Jaillet il y a plus de 7 ans

  • Assigné à mis à Jean-Baptiste Jaillet
#2

Mis à jour par Jean-Baptiste Jaillet il y a plus de 7 ans

Voilà c'est juste pour savoir si l'idée c'est ça (ou pas du tout).
Question aussi: cette fonction a l'air d'être appelée en POST pour on récupère les paramètres dans request.GET ?
Il y a peut-être une subtilité que je n'ai pas saisie.

#3

Mis à jour par Jean-Baptiste Jaillet il y a plus de 7 ans

  • Fichier 0001-csvdatasource-add-field-to-precise-sheet-in-file-and.patch ajouté
  • Patch proposed changé de Non à Oui
#4

Mis à jour par Jean-Baptiste Jaillet il y a plus de 7 ans

  • Fichier 0001-csvdatasource-add-field-to-precise-sheet-in-file-and.patch supprimé
#6

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

Un id ça doit forcément être un entier ou convertible en entier, donc ça risque de foirer si on y met un slug, je dirai qu'il faudrait plutôt prévoir un paramètre 'regie_slug'. Aussi il faudrait vérifier que regie_id est bien un entier avant de s'en servir, là on a un traceback potentiel sur une erreur.

#7

Mis à jour par Jean-Baptiste Jaillet il y a plus de 7 ans

Ok, plus dans ce style alors? (j'ai pas mit de tests j'attends que la version soit bonne).

#8

Mis à jour par Jean-Baptiste Jaillet il y a plus de 7 ans

j'ai modifs pour question de propreté.
Faire au plus simple, pas d'import inutile #python etc.

#9

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

raise Exception ça va faire un traceback aussi, faut renvoyer une HttpResponseBadRequest au pire.

Je mettrai item.regie = Regie.objects.get(id=regie_id) après le except, c'est plus clair que ça ne concerne que le int() et sait-on jamais si Regies.objects.get() se mettait à lever des ValueError un jour on le verrait pas.

#10

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

Perso de plus en plus je n'ai pas envie d'expliquer "slug" et traduit/présente ça comme étant l'identifiant; et en terme d'API, pour prendre ce qui a été fait côté Chrono :

        try:
            agenda = Agenda.objects.get(slug=agenda_identifier)
        except Agenda.DoesNotExist:
            try:
                # legacy access by agenda id
                agenda = Agenda.objects.get(id=int(agenda_identifier))
            except ValueError:
                # ...

Ici donc, avoir le paramètre nommé regie_id, mais pouvoir prendre un slug, et si jamais ça échoue avoir un fallback legacy, identifié comme tel, qu'on pourra supprimer à l'occasion, ça me va très bien.

Et si ça ne match ni slug ni id, alors comme écrit Benjamin, ça ne doit pas lever une erreur 500.

#11

Mis à jour par Jean-Baptiste Jaillet il y a plus de 7 ans

Hop du coup j'ai fait les modifs (toujours sans test, c'est pas un oubli).

#12

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

Je réunirais les deux exceptions dans le même except, avec comme unique message "Unknown regie". Ne pas oublier d'actualiser le message de commit.

#13

Mis à jour par Jean-Baptiste Jaillet il y a plus de 7 ans

ok juste pour le message de commit je ne vois pas en quoi il n'est plus actuel ? On permet bien la prise en charge du slug non?

#14

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

"regie_slug" ça fait penser à un nom de paramètre; quelque chose comme "accept regie slug in add basket item regie_id parameter" plutôt.

#15

Mis à jour par Jean-Baptiste Jaillet il y a plus de 7 ans

Hop j'ai regardé un peu pour les tests du coup je reviens à la question plus haut, tout ce que je fais est défini dans le post(), pour on prends les paramètres de request.GET.
Est ce que cette url est appelée en GET? (ou il faut fait du app.post(url, paramètre*))

#16

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

https://dev.entrouvert.org/projects/publik/wiki/Paiement contient la documentation. → l'appel est en POST, mais NameId et regie_id sont des paramètres passés dans l'URL.

#18

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

Pour les tests, ce serait mieux d'étendre test_add_amount_to_basket, qui a déjà sur sa fin un test de regie_id, à dupliquer pour qu'il soit appelé avec le slug de la régie.

#19

Mis à jour par Jean-Baptiste Jaillet il y a plus de 7 ans

Ok, j'ai regroupé dans le test d'avant.

#20

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

Il faut utiliser un autre montant, pour être sûr de concerner uniquement la nouvelle entrée dans le panier.

#22

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

  • Statut changé de Nouveau à En cours

ack.

#23

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

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

Poussé moi-même.

commit 8e948a6ab3f906895a5f3ca1b6d0fa6ad3902ecb
Author: Jean-Baptiste Jaillet <jbjaillet@entrouvert.com>
Date:   Thu Nov 10 20:22:09 2016 +0100

    lingo: allow regie's slug in AddItemBasket regie_id parameter (#13541)
#24

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