0001-forms-ignore-hidden-evolution-parts-when-joining-sta.patch
tests/test_form_pages.py | ||
---|---|---|
42 | 42 |
from wcs.wf.form import FormWorkflowStatusItem, WorkflowFormFieldsFormDef |
43 | 43 |
from wcs.wf.register_comment import RegisterCommenterWorkflowStatusItem |
44 | 44 |
from wcs.wf.resubmit import ResubmitWorkflowStatusItem |
45 |
from wcs.wf.wscall import JournalWsCallErrorPart |
|
45 | 46 |
from wcs.categories import Category |
46 | 47 |
from wcs.roles import Role, logged_users_role |
47 | 48 |
from wcs.tracking_code import TrackingCode |
... | ... | |
4718 | 4719 |
assert resp.text.count('new-evolution-1') == 1 |
4719 | 4720 |
assert resp.text.count('new-evolution-2') == 1 |
4720 | 4721 | |
4722 |
def test_form_worklow_multiple_identical_status_with_wserror(pub): |
|
4723 |
user = create_user(pub) |
|
4724 | ||
4725 |
formdef = create_formdef() |
|
4726 |
formdef.fields = [] |
|
4727 |
formdef.store() |
|
4728 | ||
4729 |
workflow = Workflow(name='test') |
|
4730 |
st1 = workflow.add_status('Status1', 'st1') |
|
4731 |
jump = JumpWorkflowStatusItem() |
|
4732 |
jump.trigger = 'XXX' |
|
4733 |
jump.status = 'st1' |
|
4734 |
st1.items.append(jump) |
|
4735 |
jump.parent = st1 |
|
4736 |
workflow.store() |
|
4737 | ||
4738 |
formdef.workflow_id = workflow.id |
|
4739 |
formdef.store() |
|
4740 | ||
4741 |
formdef.data_class().wipe() |
|
4742 |
formdata = formdef.data_class()() |
|
4743 |
formdata.just_created() |
|
4744 |
formdata.store() |
|
4745 |
assert formdef.data_class().get(formdata.id).status == 'wf-st1' |
|
4746 | ||
4747 |
app = get_app(pub) |
|
4748 |
login(app, username='foo', password='foo') |
|
4749 | ||
4750 |
Role.wipe() |
|
4751 |
role = Role(name='xxx') |
|
4752 |
role.allows_backoffice_access = False |
|
4753 |
role.store() |
|
4754 | ||
4755 |
jump.by = [role.id] |
|
4756 |
workflow.store() |
|
4757 |
user.roles = [role.id] |
|
4758 |
user.store() |
|
4759 | ||
4760 |
for i in range(3): |
|
4761 |
resp = app.post(formdata.get_url() + 'jump/trigger/XXX', status=302) |
|
4762 |
formdata = formdef.data_class().get(formdata.id) |
|
4763 |
formdata.evolution[-1].add_part(JournalWsCallErrorPart('bla', 'bla', {})) |
|
4764 |
formdata.store() |
|
4765 | ||
4766 |
resp = app.get(formdata.get_url()) |
|
4767 |
assert resp.text.count('<li class="msg') == 1 |
|
4768 | ||
4769 |
role.allows_backoffice_access = True |
|
4770 |
role.store() |
|
4771 |
resp = app.get(formdata.get_url(backoffice=True)) |
|
4772 |
assert resp.text.count('<li class="msg') == 3 |
|
4773 | ||
4774 | ||
4721 | 4775 |
def test_form_worklow_comments_on_same_status(pub): |
4722 | 4776 |
pub.session_manager.session_class.wipe() |
4723 | 4777 |
user = create_user(pub) |
tests/test_workflows.py | ||
---|---|---|
1633 | 1633 |
item.action_on_4xx = ':stop' |
1634 | 1634 |
with pytest.raises(AbortActionException): |
1635 | 1635 |
item.perform(formdata) |
1636 |
rendered = formdata.evolution[-1].parts[-1].view() |
|
1637 |
assert not rendered # empty if not in backoffice |
|
1636 |
assert formdata.evolution[-1].parts[-1].is_hidden() # not displayed in front |
|
1638 | 1637 |
req = HTTPRequest(None, {'SERVER_NAME': 'example.net', 'SCRIPT_NAME': '/backoffice/'}) |
1639 | 1638 |
pub._set_request(req) |
1639 |
assert not formdata.evolution[-1].parts[-1].is_hidden() |
|
1640 | 1640 |
rendered = formdata.evolution[-1].parts[-1].view() |
1641 | 1641 |
assert 'Error during webservice call' in str(rendered) |
1642 | 1642 |
assert 'Error Code: 1' in str(rendered) |
wcs/formdata.py | ||
---|---|---|
176 | 176 |
for p in self.parts: |
177 | 177 |
if not hasattr(p, 'view'): |
178 | 178 |
continue |
179 |
if hasattr(p, 'is_hidden') and p.is_hidden(): |
|
180 |
continue |
|
179 | 181 |
l.append(p.view()) |
180 | 182 |
self._display_parts = l |
181 | 183 |
return self._display_parts |
... | ... | |
599 | 601 |
elif (self.status == status |
600 | 602 |
and self.evolution[-1].status == status |
601 | 603 |
and not self.evolution[-1].comment |
602 |
and not self.evolution[-1].display_parts()):
|
|
604 |
and not self.evolution[-1].parts):
|
|
603 | 605 |
# if status do not change and last evolution is empty, |
604 | 606 |
# just update last jump time on last evolution, do not add one |
605 | 607 |
self.evolution[-1].last_jump_datetime = datetime.datetime.now() |
wcs/wf/wscall.py | ||
---|---|---|
47 | 47 |
if data: |
48 | 48 |
self.data = data[:10000] # beware of huge responses |
49 | 49 | |
50 |
def is_hidden(self): |
|
51 |
return not (get_request() and get_request().get_path().startswith('/backoffice/')) |
|
52 | ||
50 | 53 |
def view(self): |
51 |
if not (get_request() and get_request().get_path().startswith('/backoffice/')): |
|
52 |
return '' |
|
53 | 54 |
r = TemplateIO(html=True) |
54 | 55 |
r += htmltext('<div class="ws-error">') |
55 | 56 |
r += htmltext('<h4 class="foldable folded">') |
56 |
- |