Projet

Général

Profil

0005-misc-evaluate-workflow-form-three-times-to-support-d.patch

Benjamin Dauvergne, 20 septembre 2019 16:27

Télécharger (2,96 ko)

Voir les différences:

Subject: [PATCH 5/5] misc: evaluate workflow-form three times to support
 dependency chain of length=2

 wcs/forms/common.py | 22 ++++++++++++++++++----
 1 file changed, 18 insertions(+), 4 deletions(-)
wcs/forms/common.py
267 267
            form.attrs['data-live-url'] = self.filled.get_url() + 'live'
268 268
        if form and form.is_submitted():
269 269
            with get_publisher().substitutions.temporary_feed(self.filled, force_mode='lazy'):
270
                # remove fields that could be required but are not visible
271 270
                self.filled.evaluate_live_workflow_form(user, form)
272 271
                get_publisher().substitutions.invalidate_cache()
273 272
                get_publisher().substitutions.feed(self.filled)
274 273
                # recreate form to get live data source items
274
                submitted_fields = []
275
                form = self.filled.get_workflow_form(user, displayed_fields=submitted_fields)
276

  
277
                self.filled.evaluate_live_workflow_form(user, form)
278
                get_publisher().substitutions.invalidate_cache()
279
                get_publisher().substitutions.feed(self.filled)
280
                # recreate form to get live data source items
281
                submitted_fields = []
275 282
                form = self.filled.get_workflow_form(user, displayed_fields=submitted_fields)
276 283
                for field in submitted_fields:
277 284
                    if not field.is_visible(self.filled.data, self.formdef) and 'f%s' % field.id in form._names:
......
677 684
        if not session:
678 685
            return result_error('missing session')
679 686

  
680
        displayed_fields = []
681 687
        user = get_request().user
688
        displayed_fields = []
682 689
        form = self.filled.get_workflow_form(user, displayed_fields=displayed_fields)
690

  
683 691
        self.filled.evaluate_live_workflow_form(user, form)
684
        get_publisher().substitutions.unfeed(lambda x: x is self.filled)
692
        get_publisher().substitutions.invalidate_cache()
685 693
        get_publisher().substitutions.feed(self.filled)
686
        # reevaluate workflow form according to possible new content
687 694
        displayed_fields = []
688 695
        form = self.filled.get_workflow_form(user, displayed_fields=displayed_fields)
696

  
697
        self.filled.evaluate_live_workflow_form(user, form)
698
        get_publisher().substitutions.invalidate_cache()
699
        get_publisher().substitutions.feed(self.filled)
700
        displayed_fields = []
701
        form = self.filled.get_workflow_form(user, displayed_fields=displayed_fields)
702

  
689 703
        return self.live_process_fields(form, self.filled, displayed_fields)
690 704

  
691 705
    def _q_lookup(self, component):
692
-