Projet

Général

Profil

Development #56820

Pouvoir fonctionner sans l'URL de wcs dans des champs de Booking

Ajouté par Emmanuel Cazenave il y a plus de 2 ans. Mis à jour il y a plus de 2 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
09 septembre 2021
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Actuellement sur Booking on a des champs des destinés à stocker des URL concernant la démarche qui a initié la réservation :

  • backoffice_url
  • form_url
  • cancel_callback_url

Ça complique les choses lorsque l'on veut migrer le nom de domaine d'une instance.

Peut-être stocker des URL relatifs et générer les URL absolus dans les vues ?


Fichiers

Révisions associées

Révision 3b9c1370 (diff)
Ajouté par Emmanuel Cazenave il y a plus de 2 ans

agendas: use custom urls in bookings (#56820)

Historique

#1

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

À la réception itérer dans KNOWN_SERVICES et si service connu modifier l'URL pour commencer par {{whatever_url}}; attention alors à échapper correctement si qui dans l'URL initiale aurait pu ressembler à un gabarit. Ou faire sans gabarit et ad hoc, remplacer par genre publik://whatever/le chemin/ et dans requests_wrapper si le protocole est publik:// chercher dans KNOWN_SERVICES pour faire la correspondance.

#2

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

Frédéric Péters a écrit :

remplacer par genre publik://whatever/le chemin/ et dans requests_wrapper si le protocole est publik:// chercher dans KNOWN_SERVICES pour faire la correspondance.

J'aime bien cette idée.

#3

Mis à jour par Emmanuel Cazenave il y a plus de 2 ans

  • Description mis à jour (diff)
#4

Mis à jour par Emmanuel Cazenave il y a plus de 2 ans

  • Statut changé de Nouveau à En cours
  • Assigné à mis à Emmanuel Cazenave
#5

Mis à jour par Emmanuel Cazenave il y a plus de 2 ans

J'ai pris l'option publik:// .

#6

Mis à jour par Emmanuel Cazenave il y a plus de 2 ans

Aussi je ne me lance pas dans une migration, ça pourra se faire au cas par cas si besoin.

#7

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

Emmanuel Cazenave a écrit :

Aussi je ne me lance pas dans une migration, ça pourra se faire au cas par cas si besoin.

Discuté ensemble au bureau :
  • une migration pourrait prendre de trèèès longues minutes (voire pire vu les volumes sur certains sites)
  • or elle n'est pas obligatoire, les deux formes d'URL fonctionnent sans soucis (ça n'est en réalité utile que pour aider à un changement d'URL de site, encore rare)
  • au fur et à mesure les rendez-vous en format historique vont disparaitre

Bref, effectivement, ça ne vaut pas la peine.

Et si on juge un jour que si, c'est nécessaire, alors ça pourrait tout à fait être ajouté en dehors de ce patch, avec une commande spécifique qui ferait la modif des url, qui s'exécuterait alors que le service chrono est déjà démarré ; pas de downtime, c'est mieux.

#8

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

Relecture après autre causerie au bureau : je trouve que le «translate_url» n'est effectivement pas très explicite et arrive un peu au milieu de nulle part.

Est-ce qu'on ne serait pas plus explicite à créer un module chrono/utils/publik.py avec deux fonctions translate_to_publik_url() et translate_from_publik_url() ... Et ces fonctions pourraient commencer par :

function translate_to_publik_url(url):
   known_services = getattr(settings, 'KNOWN_SERVICES', None)
   if not known_services:
       return url
   ...

afin qu'on pige bien que cette affaire dépend d'un éventuel settings.KNOWN_SERVICES ?

(Bien sûr mon idée derrière ça est que chrono/utils/publik.py soit le même partout et finisse pas trouver son chemin vers hobo.utils ... ah, les rêves)

#9

Mis à jour par Emmanuel Cazenave il y a plus de 2 ans

Thomas Noël a écrit :

avec deux fonctions translate_to_publik_url() et translate_from_publik_url() ... Et ces fonctions pourraient commencer par :

Oui c'est plus clair comme ça, j'ai mis ça dans un chrono/utils/urls.py qui me semble plus explicite que publik.py.

afin qu'on pige bien que cette affaire dépend d'un éventuel settings.KNOWN_SERVICES ?

J'ai mis tes trois lignes qui me semblent tout à fait raisonnables, par contre ça ne va pas de les mettre tout au début de la fonction, genre par exemple dans translate_from_publik_url, doit venir avant le fait que si c'est pas un url de type publik:// on renvoie l'URL tel quel.

#10

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

(je préférerais laisser urls.py aux fichiers urls.py de routing de django)

#11

Mis à jour par Valentin Deniaud il y a plus de 2 ans

Je trouverais le diff serait plus joli si

-        cancel_callback_url=payload.get('cancel_callback_url', ''),
+        cancel_callback_url=translate_to_publik_url(payload.get('backoffice_url')),

(et il y a déjà get_event_detail où c'est fait comme ça)

#12

Mis à jour par Emmanuel Cazenave il y a plus de 2 ans

Frédéric Péters a écrit :

(je préférerais laisser urls.py aux fichiers urls.py de routing de django)

publik_urls.py

Valentin Deniaud a écrit :

Je trouverais le diff serait plus joli si

Fait.

#13

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

  • Statut changé de Solution proposée à Solution validée

Moi j'aurais vraiment appelé ça utils.publik (au lieu de utils.publik_url) dans l'idée qu'il y aura un jour d'autres choses "publik" dedans.

Mais sinon c'est tout bon, donc tu fais cette modif ou pas, je valide.

#14

Mis à jour par Valentin Deniaud il y a plus de 2 ans

Emmanuel Cazenave a écrit :

Valentin Deniaud a écrit :

Je trouverais le diff serait plus joli si

Fait.

Un saut de ligne résiduel ligne 648 empêche ce patch d'atteindre la perfection.

#15

Mis à jour par Emmanuel Cazenave il y a plus de 2 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit 3b9c1370c97713f41b1a80c9fdf868bb33bafb0f 
Author: Emmanuel Cazenave <ecazenave@entrouvert.com>
Date:   Tue Sep 21 14:20:26 2021 +0200

    agendas: use custom urls in bookings (#56820)
#16

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

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF