0001-forms-evaluate-existing-drafts-before-creating-a-new.patch
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 |
- |