0001-forms-fix-is_of_concern_for_user-to-take-formdata-in.patch
tests/test_backoffice_pages.py | ||
---|---|---|
18 | 18 |
from wcs.roles import Role |
19 | 19 |
from wcs.workflows import (Workflow, CommentableWorkflowStatusItem, |
20 | 20 |
ChoiceWorkflowStatusItem, EditableWorkflowStatusItem) |
21 |
from wcs.wf.dispatch import DispatchWorkflowStatusItem |
|
21 | 22 |
from wcs.wf.jump import JumpWorkflowStatusItem |
22 | 23 |
from wcs.wf.register_comment import RegisterCommenterWorkflowStatusItem |
23 | 24 |
from wcs.wf.wscall import WebserviceCallStatusItem |
... | ... | |
757 | 758 |
resp = resp.form.submit('cancel') |
758 | 759 |
assert resp.location == 'http://example.net/backoffice/submission/' |
759 | 760 | |
761 |
def test_backoffice_submission_dispatch(pub): |
|
762 |
user = create_user(pub) |
|
763 |
create_environment(pub) |
|
764 | ||
765 |
wf = Workflow(name='dispatch') |
|
766 |
st1 = wf.add_status('Status1') |
|
767 |
dispatch = DispatchWorkflowStatusItem() |
|
768 |
dispatch.id = '_dispatch' |
|
769 |
dispatch.role_key = '_receiver' |
|
770 |
dispatch.role_id = '2' |
|
771 |
st1.items.append(dispatch) |
|
772 |
dispatch.parent = st1 |
|
773 |
wf.store() |
|
774 | ||
775 |
formdef = FormDef.get_by_urlname('form-title') |
|
776 |
formdef.workflow_id = wf.id |
|
777 |
formdef.backoffice_submission_roles = user.roles[:] |
|
778 |
formdef.store() |
|
779 | ||
780 |
app = login(get_app(pub)) |
|
781 |
resp = app.get('/backoffice/submission/') |
|
782 | ||
783 |
resp = resp.click(formdef.name) |
|
784 |
resp.form['f1'] = 'test submission' |
|
785 |
resp.form['f2'] = 'baz' |
|
786 |
resp.form['f3'] = 'C' |
|
787 |
resp = resp.form.submit('submit') # to validation screen |
|
788 |
resp = resp.form.submit('submit') # final submit |
|
789 |
# should go the submission screen |
|
790 |
assert resp.location == 'http://example.net/backoffice/submission/' |
|
791 |
resp = resp.follow() |
|
792 | ||
760 | 793 |
def test_backoffice_submission_tracking_code(pub): |
761 | 794 |
user = create_user(pub) |
762 | 795 |
create_environment(pub) |
wcs/formdef.py | ||
---|---|---|
935 | 935 |
def is_of_concern_for_user(self, user, formdata=None): |
936 | 936 |
if not self.workflow_roles: |
937 | 937 |
self.workflow_roles = {} |
938 |
for role_id in self.workflow_roles.values(): |
|
938 |
workflow_roles = self.workflow_roles.copy() |
|
939 |
if formdata and formdata.workflow_roles: |
|
940 |
workflow_roles.update(formdata.workflow_roles) |
|
941 |
for role_id in workflow_roles.values(): |
|
939 | 942 |
if role_id in (user.roles or []): |
940 | 943 |
return True |
941 |
data_class = self.data_class() |
|
942 |
for role_id in user.roles or []: |
|
943 |
if data_class.get_ids_with_indexed_value('workflow_roles', role_id): |
|
944 |
return True |
|
944 |
if not formdata: |
|
945 |
data_class = self.data_class() |
|
946 |
for role_id in user.roles or []: |
|
947 |
if data_class.get_ids_with_indexed_value('workflow_roles', role_id): |
|
948 |
return True |
|
945 | 949 |
return False |
946 | 950 | |
947 | 951 |
def is_user_allowed_read(self, user, formdata=None): |
948 |
- |