Bug #40133
Souci d'évaluation de la variable "form_var_event_url" défini dans un évènement
0%
Description
Je définis un évènement avec une URL : https://agendas-mkuntz.test.entrouvert.org/manage/agendas/43/events/37/edit
Dans un formulaire, je choisis cet évènement et souhaite faire afficher cette URL dans un commentaire, mais pb reste vide (https://demarches-mkuntz.test.entrouvert.org/backoffice/management/jeunesse_unite/6/)
- ... liste des variables : form_var_event_url a une valeur (https://parc-loisir.fr/les-parcs/teraventure/)
- ... test / gabarit : {{form_var_event_url}} est vide
- ... MAIS test / Python : form_var_event_url = 'https://parc-loisir.fr/les-parcs/teraventure/'
Fichiers
Révisions associées
Historique
Mis à jour par Frédéric Péters il y a environ 4 ans
- Assigné à mis à Frédéric Péters
Il y a un comportement particulier sur les bouts _url.
Mis à jour par Frédéric Péters il y a environ 4 ans
- Fichier 0001-misc-raise-AttributeError-on-missing-lazy-attributes.patch 0001-misc-raise-AttributeError-on-missing-lazy-attributes.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Mis à jour par Emmanuel Cazenave il y a environ 4 ans
Je m'apprêtais à tester, consciencieux je cherche d'abord à reproduire, hasard du sort sur mon formulaire local le champ évènement est à choix multiple, et surprise, {{form_var_event_0_url}}
affiche bien l'URL de l'évènement (sans ton patch appliqué donc).
Tout ceci est ok ? (je suis dans le noir, le patch est mystérieux)
Mis à jour par Frédéric Péters il y a environ 4 ans
form_var_event_0_url vs form_var_event_url, le truc qui se passe ici c'est que getitem fait :
def __getitem__(self, key): if isinstance(key, (int, slice)): return self.get_value()[key] try: return getattr(self, key) except AttributeError: pass structured_value = self._field.get_structured_value(self._data) ...
le getattr(self, key), il appelle la méthode/proprité url,
@property def url(self): if self._field.key != 'file' or not self._formdata: raise AttributeError('url') return '%sdownload?f=%s' % (self._formdata.get_url(), self._field.id)
Si celle-ci lève une KeyError, le code de getitem s'interrompt; avec l'AttributeError par contre, ça part utiliser le contenu de _structured.
Mis à jour par Emmanuel Cazenave il y a environ 4 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Frédéric Péters il y a environ 4 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 4d3d773f84a480e68b202cd1a9083cc089ed3e98 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Mon Feb 24 18:13:08 2020 +0100 misc: raise AttributeError on missing lazy attributes (#40133)
Mis à jour par Frédéric Péters il y a environ 4 ans
- Statut changé de Résolu (à déployer) à Solution déployée
misc: raise AttributeError on missing lazy attributes (#40133)