0001-always-redirect-to-status-page-3031.patch
wcs/formdef.py | ||
---|---|---|
622 | 622 |
if self.acl_read == 'all': |
623 | 623 |
return True |
624 | 624 |
if not user: |
625 |
if self.acl_read == 'owner' and formdata and get_session() and \ |
|
626 |
get_session().is_anonymous_submitter(formdata): |
|
627 |
return True |
|
625 | 628 |
return False |
626 | 629 |
if user.is_admin: |
627 | 630 |
return True |
... | ... | |
676 | 679 |
user_roles = set(user.roles) |
677 | 680 |
else: |
678 | 681 |
user_roles = set([]) |
682 | ||
683 |
if not self.workflow_roles: |
|
684 |
self.workflow_roles = {} |
|
679 | 685 |
form_roles = [x for x in self.workflow_roles.keys() if x] |
680 | 686 |
if user and self.private_status_and_history and not user_roles.intersection(form_roles): |
681 | 687 |
return False |
wcs/forms/common.py | ||
---|---|---|
110 | 110 |
mine = True |
111 | 111 |
elif self.filled.is_submitter(user): |
112 | 112 |
mine = True |
113 |
else: |
|
114 |
if get_session() and get_session().is_anonymous_submitter(self.filled): |
|
115 |
mine = True |
|
113 | 116 | |
114 | 117 |
self.check_receiver() |
115 | 118 |
return mine |
... | ... | |
262 | 265 |
def check_receiver(self): |
263 | 266 |
session = get_session() |
264 | 267 |
if not session or not session.user: |
265 |
raise errors.AccessUnauthorizedError() |
|
268 |
if not self.filled.formdef.is_user_allowed_read(None, self.filled): |
|
269 |
raise errors.AccessUnauthorizedError() |
|
266 | 270 |
user = get_request().user |
267 | 271 |
if self.filled.formdef is None: |
268 | 272 |
raise errors.AccessForbiddenError() |
wcs/forms/root.py | ||
---|---|---|
605 | 605 |
if [x for x in user_forms if not x.is_draft()]: |
606 | 606 |
return redirect('%s/' % user_forms[0].id) |
607 | 607 |
filled.store() |
608 | ||
609 |
if not filled.user_id: |
|
610 |
get_session().mark_anonymous_formdata(filled) |
|
611 | ||
608 | 612 |
if not filled.user_id and existing_formdata is None: |
609 | 613 |
a = AnonymityLink() |
610 | 614 |
a.formdata_type = 'form' |
... | ... | |
619 | 623 |
url = filled.perform_workflow() |
620 | 624 |
if url: |
621 | 625 |
return redirect(url) |
622 |
return self.receipt_page(filled)
|
|
626 |
return redirect(filled.get_url())
|
|
623 | 627 | |
624 | 628 |
def submitted_existing(self, form, editing): |
625 | 629 |
old_data = editing.data |
wcs/sessions.py | ||
---|---|---|
23 | 23 | |
24 | 24 |
anonymous_key = None |
25 | 25 |
magictokens = None |
26 |
anonymous_formdata_keys = None |
|
26 | 27 | |
27 | 28 |
def has_info(self): |
28 |
return self.anonymous_key or self.magictokens or Session.has_info(self) |
|
29 |
return self.anonymous_formdata_keys or self.anonymous_key or self.magictokens or Session.has_info(self)
|
|
29 | 30 |
is_dirty = has_info |
30 | 31 | |
31 | 32 |
def get_anonymous_key(self, generate = False): |
... | ... | |
45 | 46 |
return default |
46 | 47 |
return self.magictokens.get(token, default) |
47 | 48 | |
49 |
def mark_anonymous_formdata(self, formdata): |
|
50 |
if not self.anonymous_formdata_keys: |
|
51 |
self.anonymous_formdata_keys = {} |
|
52 |
self.anonymous_formdata_keys['%s-%s' % (formdata.formdef.id, formdata.id)] = True |
|
53 | ||
54 |
def is_anonymous_submitter(self, formdata): |
|
55 |
if not self.anonymous_formdata_keys: |
|
56 |
return False |
|
57 |
formdata_key = '%s-%s' % (formdata.formdef.id, formdata.id) |
|
58 |
return formdata_key in self.anonymous_formdata_keys |
|
59 | ||
48 | 60 |
qommon.sessions.BasicSession = BasicSession |
49 | 61 |
StorageSessionManager = qommon.sessions.StorageSessionManager |
wcs/workflows.py | ||
---|---|---|
1268 | 1268 |
backoffice = False |
1269 | 1269 | |
1270 | 1270 |
def perform(self, formdata): |
1271 |
if not get_request().user: |
|
1272 |
return None |
|
1273 | 1271 |
return formdata.get_url(self.backoffice) |
1274 | 1272 | |
1275 | 1273 |
def add_parameters_widgets(self, form, parameters, prefix='', formdef=None): |
... | ... | |
1281 | 1279 |
def get_parameters(self): |
1282 | 1280 |
return ('backoffice',) |
1283 | 1281 | |
1284 |
register_item_class(RedirectToStatusWorkflowStatusItem) |
|
1282 |
# RedirectToStatusWorkflowStatusItem is not registered as the class kept for |
|
1283 |
# backward compatibility only and should not be exposed to the user. (#3031) |
|
1285 | 1284 | |
1286 | 1285 | |
1287 | 1286 |
class EditableWorkflowStatusItem(WorkflowStatusItem): |
1288 |
- |