Projet

Général

Profil

0001-backoffice-use-formdef-user-to-check-only-allow-one-.patch

Nicolas Roche, 03 août 2020 19:22

Télécharger (2,8 ko)

Voir les différences:

Subject: [PATCH] backoffice: use formdef user to check only-allow-one option
 (#45711)

 wcs/forms/root.py | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)
wcs/forms/root.py
60 60
class SubmittedDraftException(Exception):
61 61
    pass
62 62

  
63 63

  
64 64
def html_top(title = None):
65 65
    template.html_top(title = title, default_org = _('Forms'))
66 66

  
67 67

  
68
def get_user_forms(formdef):
68
def get_user_forms(formdef, user=None):
69 69
    """Return forms data for the current user
70 70

  
71 71
       formdef - the formdef from which we want form datas
72 72

  
73 73
    """
74
    session = get_session()
75
    user = session.get_user()
74
    if not user:
75
        session = get_session()
76
        user = session.get_user()
76 77
    user_forms = []
77 78
    if user and not user.anonymous:
78 79
        user_forms = formdef.data_class().get_with_indexed_value('user_id', user.id)
79 80
    return list(user_forms)
80 81

  
81 82
from wcs.forms.common import FormStatusPage
82 83

  
83 84

  
......
690 691
                # on the initial visit editing the form (i.e. not after
691 692
                # clicking for previous or next page), we need to load the
692 693
                # existing data into the session
693 694
                self.edited_data.feed_session()
694 695
                token = randbytes(8)
695 696
                get_request().form['magictoken'] = token
696 697
                session.add_magictoken(token, self.edited_data.data)
697 698
        elif self.formdef.only_allow_one:
698
            user_forms = get_user_forms(self.formdef)
699
            user = None
700
            if get_request().is_in_backoffice():
701
                # on backoffice submission, retrieve form user from draft formdata
702
                if 'mt' in get_request().form:
703
                    magictoken = get_request().form['mt']
704
                elif 'magictoken' in get_request().form:
705
                    magictoken = get_request().form['magictoken']
706
                data = session.get_by_magictoken(magictoken, {})
707
                if data:
708
                    formdata = self.formdef.data_class().get(data['draft_formdata_id'])
709
                    user = formdata.user
710
            user_forms = get_user_forms(self.formdef, user)
699 711
            if [x for x in user_forms if not x.is_draft()]:
700 712
                return redirect('%s/' % user_forms[0].id)
701 713

  
702 714
        get_response().add_javascript(['jquery.js', 'qommon.forms.js'])
703 715
        form = Form()
704 716
        form.add_hidden('step', '-1')
705 717
        form.add_hidden('page', '-1')
706 718
        form.add_hidden('magictoken', '-1')
707
-