Projet

Général

Profil

Bug #40133

Souci d'évaluation de la variable "form_var_event_url" défini dans un évènement

Ajouté par Brice Mallet il y a environ 4 ans. Mis à jour il y a environ 4 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
24 février 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

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

Dans l'inspecteur...
  • ... 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

Révision 4d3d773f (diff)
Ajouté par Frédéric Péters il y a environ 4 ans

misc: raise AttributeError on missing lazy attributes (#40133)

Historique

#1

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.

#2

Mis à jour par Frédéric Péters il y a environ 4 ans

#3

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)

#4

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.

#5

Mis à jour par Emmanuel Cazenave il y a environ 4 ans

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

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

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

Formats disponibles : Atom PDF