Projet

Général

Profil

0001-forms-evaluate-existing-drafts-before-creating-a-new.patch

Frédéric Péters, 27 novembre 2020 15:08

Télécharger (4,31 ko)

Voir les différences:

Subject: [PATCH] forms: evaluate existing drafts before creating a new one
 (#48904)

 tests/form_pages/test_all.py            | 22 ++++++++++++++++++++++
 wcs/forms/root.py                       |  8 ++++++--
 wcs/templates/wcs/formdata_filling.html | 12 ++++--------
 3 files changed, 32 insertions(+), 10 deletions(-)
tests/form_pages/test_all.py
1723 1723
            headers={'User-agent': 'Googlebot'}, status=403)
1724 1724

  
1725 1725

  
1726
def test_form_tracking_code_prefill(pub, nocache):
1727
    create_user(pub)
1728
    formdef = create_formdef()
1729
    formdef.data_class().wipe()
1730
    formdef.fields = [fields.StringField(id='0', label='string',
1731
        prefill={'type': 'user', 'value': 'email'})]
1732
    formdef.enable_tracking_codes = True
1733
    formdef.store()
1734

  
1735
    # first time
1736
    resp = login(get_app(pub), username='foo', password='foo').get('/test/')
1737
    assert '<h3>Tracking code</h3>' in resp.text
1738
    assert 'You already started to fill this form.' not in resp.text
1739
    resp.forms[0]['f0'] = 'foobar'
1740
    resp = resp.forms[0].submit('submit')
1741

  
1742
    # second time, invitation to load an existing draft
1743
    resp = login(get_app(pub), username='foo', password='foo').get('/test/')
1744
    assert '<h3>Tracking code</h3>' in resp.text
1745
    assert 'You already started to fill this form.' in resp.text
1746

  
1747

  
1726 1748
def test_form_empty_tracking_code(pub, nocache):
1727 1749
    formdef = create_formdef()
1728 1750
    formdef.fields = [fields.StringField(id='0', label='string')]
wcs/forms/root.py
753 753
            self.feed_current_data(get_request().form.get('magictoken'))
754 754
        else:
755 755
            self.feed_current_data(None)
756
            if not self.edit_mode and get_request().get_method() == 'GET' and 'mt' not in get_request().form:
757
                self.initial_hit = True
756
            if not self.edit_mode and (
757
                    get_request().get_method() == 'GET' and
758
                    'mt' not in get_request().form and
759
                    get_request().user):
760
                self.initial_drafts = list(
761
                        LazyFormDef(self.formdef).objects.current_user().drafts().order_by('receipt_time'))
758 762
            # first hit on first page, if tracking code are enabled and we
759 763
            # are not editing an existing formdata, generate a new tracking
760 764
            # code.
wcs/templates/wcs/formdata_filling.html
10 10

  
11 11
{% block form-main %}
12 12
{% block drafts-recall %}
13
{% if view.initial_hit and user.is_authenticated and not request.quixote_request.is_in_backoffice %}
14
{% with formdef.objects.current_user.drafts|order_by:"receipt_time" as drafts %}
15
  {% with drafts|length as drafts_length %}
16
   {% if drafts_length > 0 %}
13
{% if view.initial_drafts %}
14
  {% with view.initial_drafts|length as drafts_length %}
17 15
    <div class="drafts-recall">
18 16
     <p>
19 17
       {% blocktrans %}
......
22 20
       {% endblocktrans %}
23 21
     </p>
24 22
     {% if drafts_length == 1 %}
25
       <p><a class="pk-button" href="{{drafts.0.internal_id}}/">{% trans "Continue with draft" %}</a></p>
23
       <p><a class="pk-button" href="{{view.initial_drafts.0.internal_id}}/">{% trans "Continue with draft" %}</a></p>
26 24
     {% elif drafts_length > 1 %}
27 25
     <ul>
28
     {% for draft in drafts %}
26
     {% for draft in view.initial_drafts %}
29 27
     <li><a href="{{draft.internal_id}}/">{% trans "continue with draft from " %} {{draft.receipt_date}}
30 28
                     {{draft.receipt_time}}</a>, {% blocktrans with page_no=draft.page_no|add:1 %}on page {{page_no}}{% endblocktrans %}</li>
31 29
     {% endfor %}
32 30
     </ul>
33 31
     {% endif %}
34 32
    </div>
35
   {% endif %}
36 33
  {% endwith %}
37
{% endwith %}
38 34
{% endif %}
39 35
{% endblock %}
40 36

  
41
-