0001-forms-let-user-recall-draft-on-first-page-32263.patch
tests/test_form_pages.py | ||
---|---|---|
6115 | 6115 |
params = resp.form.submit_fields() |
6116 | 6116 |
params = [(key, value if key != 'page_id' else 'eiuiu') for key, value in params] |
6117 | 6117 |
app.post('/foo/live', params=params) |
6118 | ||
6119 | ||
6120 |
def test_form_recall_draft(pub): |
|
6121 |
user = create_user(pub) |
|
6122 | ||
6123 |
formdef = create_formdef() |
|
6124 |
formdef.data_class().wipe() |
|
6125 | ||
6126 |
app = login(get_app(pub), username='foo', password='foo') |
|
6127 |
resp = app.get('/test/') |
|
6128 |
assert not 'You already started to fill this form.' in resp.body |
|
6129 | ||
6130 |
draft = formdef.data_class()() |
|
6131 |
draft.user_id = user.id |
|
6132 |
draft.status = 'draft' |
|
6133 |
draft.data = {} |
|
6134 |
draft.store() |
|
6135 | ||
6136 |
app = login(get_app(pub), username='foo', password='foo') |
|
6137 |
resp = app.get('/test/') |
|
6138 |
assert 'You already started to fill this form.' in resp.body |
|
6139 |
assert 'href="%s"' % draft.id in resp.body |
|
6140 | ||
6141 |
draft2 = formdef.data_class()() |
|
6142 |
draft2.user_id = user.id |
|
6143 |
draft2.status = 'draft' |
|
6144 |
draft2.data = {} |
|
6145 |
draft2.store() |
|
6146 | ||
6147 |
app = login(get_app(pub), username='foo', password='foo') |
|
6148 |
resp = app.get('/test/') |
|
6149 |
assert 'You already started to fill this form.' in resp.body |
|
6150 |
assert 'href="%s"' % draft.id in resp.body |
|
6151 |
assert 'href="%s"' % draft2.id in resp.body |
wcs/forms/root.py | ||
---|---|---|
50 | 50 |
from wcs.formdef import FormDef |
51 | 51 |
from wcs.formdata import FormData |
52 | 52 |
from wcs.forms.common import FormTemplateMixin |
53 |
from wcs.variables import LazyFormDef |
|
53 | 54 |
from wcs.roles import logged_users_role |
54 | 55 |
from wcs.workflows import Workflow, WorkflowBackofficeFieldsFormDef |
55 | 56 | |
... | ... | |
426 | 427 |
context = { |
427 | 428 |
'view': self, |
428 | 429 |
'form': form, |
430 |
'formdef': LazyFormDef(self.formdef), |
|
429 | 431 |
'form_side': lambda: self.form_side(0, page, data=data, magictoken=magictoken), |
430 | 432 |
'steps': lambda: self.step(0, page), |
431 | 433 |
} |
... | ... | |
623 | 625 |
self.feed_current_data(get_request().form.get('magictoken')) |
624 | 626 |
else: |
625 | 627 |
self.feed_current_data(None) |
628 |
if not self.edit_mode and get_request().get_method() == 'GET' and not get_request().form.has_key('mt'): |
|
629 |
self.initial_hit = True |
|
626 | 630 |
# first hit on first page, if tracking code are enabled and we |
627 | 631 |
# are not editing an existing formdata, generate a new tracking |
628 | 632 |
# code. |
wcs/templates/wcs/formdata_filling.html | ||
---|---|---|
1 | 1 |
{% extends template_base %} |
2 |
{% load i18n %} |
|
2 | 3 | |
3 | 4 |
{% block body %} |
4 | 5 |
{{ form_side|default:"" }} |
5 | 6 |
{{ publisher.get_request.session.display_message|safe }} |
7 | ||
8 |
{% block drafts-recall %} |
|
9 |
{% if view.initial_hit and user.is_authenticated and not request.quixote_request.is_in_backoffice %} |
|
10 |
{% with formdef.objects.current_user.drafts as drafts %} |
|
11 |
{% with drafts|length as drafts_length %} |
|
12 |
{% if drafts_length > 0 %} |
|
13 |
<div class="drafts-recall"> |
|
14 |
<p> |
|
15 |
{% blocktrans %} |
|
16 |
You already started to fill this form. You can continue it or submit a new |
|
17 |
one. |
|
18 |
{% endblocktrans %} |
|
19 |
</p> |
|
20 |
{% if drafts_length == 1 %} |
|
21 |
<p><a class="pk-button" href="{{drafts.0.internal_id}}">{% trans "Continue" %}</a></p> |
|
22 |
{% elif drafts_length > 1 %} |
|
23 |
<ul> |
|
24 |
{% for draft in drafts %} |
|
25 |
<li><a href="{{draft.internal_id}}">{% trans "continue with draft from " %} {{draft.receipt_date}} |
|
26 |
{{draft.receipt_time}}</a>, {% blocktrans with page_no=draft.page_no|add:1 %}on page {{page_no}}{% endblocktrans %}</li> |
|
27 |
{% endfor %} |
|
28 |
</ul> |
|
29 |
{% endif %} |
|
30 |
</div> |
|
31 |
{% endif %} |
|
32 |
{% endwith %} |
|
33 |
{% endwith %} |
|
34 |
{% endif %} |
|
35 |
{% endblock %} |
|
36 | ||
6 | 37 |
{{ form.render|safe }} |
7 | 38 |
{% endblock %} |
8 |
- |