Projet

Général

Profil

Development #56611

pouvoir assigner un objet lié (form_links_whatever) lors d'un set_value() sur un ItemField

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

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

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Aujourd'hui le form_links_whatever retourne un

{'form': <wcs.variables.LazyFormData object at 0x7fee88d65be0>, 'attachments': <wcs.workflows.AttachmentsSubstitutionProxy object at 0x7fee8883f128>, 'category_name': 'Publik Famille - Famille', 'category_id': 'usagers', 'category_slug': 'usagers', 'category_description': None}

via

class LazyFormDataLinks:
    def __getattr__(self, varname):
        for part in self._formdata.iter_evolution_parts():
            if not isinstance(part, LinkedFormdataEvolutionPart):
                continue
            if part.varname == varname and part.formdata:
                return part.formdata.get_substitution_variables()   # <-----

il y a peut-être à transformer ça en vrai objet, mais surtout ensuite ça devrait pouvoir être utilisé lors d'un set_value() sur un ItemField, pour pouvoir juste mettre {{form_links_whatever}} dans genre une action de création de fiche.


Fichiers

Révisions associées

Révision 122020a4 (diff)
Ajouté par Lauréline Guérin il y a plus de 2 ans

wf: LazyFormDataLinksItems object for links substitution (#56611)

Historique

#2

Mis à jour par Lauréline Guérin il y a plus de 2 ans

  • Assigné à mis à Lauréline Guérin
#3

Mis à jour par Lauréline Guérin il y a plus de 2 ans

basé sur #56612

#4

Mis à jour par Lauréline Guérin il y a plus de 2 ans

tests/backoffice_pages/test_all.py::test_backoffice_create_formdata_backoffice_submission (entre autres) ne planterait plus si on remplaçait:

redirect.url = '{{ form_links_resubmitted.form_backoffice_url }}'

par:
redirect.url = '{{ form_links_resubmitted_form_backoffice_url }}'

dans la fixture create_formdata

mais est-ce ok ?

#5

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

mais est-ce ok ?

Ça serait pas terrible de casser ça, à creuser voir ce qui manquerait pour que CompatibilityNamesDict assure la compat.

#6

Mis à jour par Lauréline Guérin il y a plus de 2 ans

  • Statut changé de Solution proposée à En cours
#8

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

+    def inspect_keys(self):
+        return ['form']

j'adapterais ça selon le contenu, s'il y len(self._linked_formdatas) > 1, retourner les index, comme on a dans LazyFieldVarBlock :

    def inspect_keys(self):
        if self._field.max_items > 1:
            data = self._formdata.data.get(self._field.id)['data']
            return [str(x) for x in range(len(data))]
        else:
            ...
#9

Mis à jour par Lauréline Guérin il y a plus de 2 ans

c'est fait dans #56556 qui gère effectivement les index

#10

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

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

Trop de patches :)

#11

Mis à jour par Lauréline Guérin il y a plus de 2 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit 122020a41365f72e249cec9af8f3f19536f1c110
Author: Lauréline Guérin <zebuline@entrouvert.com>
Date:   Thu Sep 9 11:00:33 2021 +0200

    wf: LazyFormDataLinksItems object for links substitution (#56611)
#12

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