0002-admin-use-new-option-style-for-workflow-related-opti.patch
tests/test_admin_pages.py | ||
---|---|---|
346 | 346 | |
347 | 347 |
app = login(get_app(pub)) |
348 | 348 |
resp = app.get('/backoffice/forms/1/') |
349 |
assert 'Workflow:' not in resp.body
|
|
349 |
assert_option_display(resp, 'Workflow', 'Default')
|
|
350 | 350 | |
351 | 351 |
Workflow.wipe() |
352 | 352 |
workflow = Workflow(name='Workflow One') |
... | ... | |
355 | 355 |
workflow.store() |
356 | 356 | |
357 | 357 |
resp = app.get('/backoffice/forms/1/') |
358 |
assert 'Workflow:' in resp.body
|
|
358 |
assert_option_display(resp, 'Workflow', 'Default')
|
|
359 | 359 | |
360 | 360 |
def test_form_workflow_change(): |
361 | 361 |
create_superuser() |
... | ... | |
376 | 376 | |
377 | 377 |
app = login(get_app(pub)) |
378 | 378 |
resp = app.get('/backoffice/forms/1/') |
379 |
resp = resp.click('change', href='workflow')
|
|
379 |
resp = resp.click(href='workflow', index=1)
|
|
380 | 380 |
resp = resp.forms[0].submit('cancel') |
381 | 381 |
assert FormDef.get(formdef.id).workflow_id is None |
382 | 382 | |
383 | 383 |
resp = app.get('/backoffice/forms/1/') |
384 |
resp = resp.click('change', href='workflow')
|
|
384 |
resp = resp.click(href='workflow', index=1)
|
|
385 | 385 |
assert 'Workflow One' not in resp.body # this workflow doesn't have any status |
386 | 386 |
resp.forms[0]['workflow_id'] = workflow.id |
387 | 387 |
resp = resp.forms[0].submit('submit') |
... | ... | |
413 | 413 | |
414 | 414 |
app = login(get_app(pub)) |
415 | 415 |
resp = app.get('/backoffice/forms/1/') |
416 |
resp = resp.click('change', href='workflow')
|
|
416 |
resp = resp.click(href='workflow', index=1)
|
|
417 | 417 |
resp.forms[0]['workflow_id'] = workflow.id |
418 | 418 |
resp = resp.forms[0].submit('submit') |
419 | 419 |
assert resp.location == 'http://example.net/backoffice/forms/1/workflow-status-remapping?new=2' |
... | ... | |
438 | 438 | |
439 | 439 |
app = login(get_app(pub)) |
440 | 440 |
resp = app.get('/backoffice/forms/1/') |
441 |
resp = resp.click('change', href='role/_receiver')
|
|
441 |
resp = resp.click(href='role/_receiver') |
|
442 | 442 |
resp = resp.forms[0].submit('cancel') |
443 | 443 | |
444 | 444 |
resp = app.get('/backoffice/forms/1/') |
445 |
resp = resp.click('change', href='role/_receiver')
|
|
445 |
resp = resp.click(href='role/_receiver') |
|
446 | 446 |
resp.forms[0]['role_id'] = 'foobar' |
447 | 447 |
resp = resp.forms[0].submit('submit') |
448 | 448 |
assert FormDef.get(1).workflow_roles == {'_receiver': '1'} |
... | ... | |
521 | 521 | |
522 | 522 |
app = login(get_app(pub)) |
523 | 523 |
resp = app.get('/backoffice/forms/1/') |
524 |
resp = resp.click('change', href='acl-read')
|
|
524 |
resp = resp.click(href='acl-read') |
|
525 | 525 |
resp = resp.forms[0].submit('cancel') |
526 | 526 | |
527 | 527 |
resp = app.get('/backoffice/forms/1/') |
528 |
resp = resp.click('change', href='acl-read')
|
|
528 |
resp = resp.click(href='acl-read') |
|
529 | 529 |
resp.forms[0]['acl_read'] = 'Everybody' |
530 | 530 |
resp = resp.forms[0].submit('submit') |
531 | 531 |
assert FormDef.get(1).acl_read == 'all' |
... | ... | |
542 | 542 | |
543 | 543 |
app = login(get_app(pub)) |
544 | 544 |
resp = app.get('/backoffice/forms/1/') |
545 |
resp = resp.click('change', href='roles', index=0)
|
|
545 |
resp = resp.click('User Roles')
|
|
546 | 546 |
resp = resp.forms[0].submit('cancel') |
547 | 547 | |
548 | 548 |
resp = app.get('/backoffice/forms/1/') |
549 |
resp = resp.click('change', href='roles', index=0)
|
|
549 |
resp = resp.click('User Roles')
|
|
550 | 550 |
resp.forms[0]['roles$element0'].value = role.name |
551 | 551 |
resp = resp.forms[0].submit('submit') |
552 | 552 |
assert FormDef.get(1).roles == [role.id] |
... | ... | |
906 | 906 |
assert resp.forms[0]['category_id'].value |
907 | 907 | |
908 | 908 |
resp = app.get('/backoffice/forms/1/') |
909 |
resp = resp.click('change', href='workflow')
|
|
909 |
resp = resp.click(href='workflow', index=1)
|
|
910 | 910 |
assert resp.forms[0]['workflow_id'].value |
911 | 911 | |
912 | 912 |
resp = app.get('/backoffice/forms/1/') |
913 |
resp = resp.click('change', href='roles', index=0)
|
|
913 |
resp = resp.click('User Roles')
|
|
914 | 914 |
assert resp.forms[0]['roles$element0'].value == 'Logged Users' |
915 | 915 |
assert resp.forms[0]['roles$element1'].value == 'ZAB' |
916 | 916 | |
917 | 917 |
resp = app.get('/backoffice/forms/1/') |
918 |
resp = resp.click('change', href='role/_receiver')
|
|
918 |
resp = resp.click('Recipient')
|
|
919 | 919 |
assert resp.forms[0]['role_id'].value == 'ZAB' |
920 | 920 | |
921 | 921 |
def test_form_anonymise(): |
wcs/admin/forms.py | ||
---|---|---|
360 | 360 | |
361 | 361 |
r += htmltext('<div class="splitcontent-left">') |
362 | 362 |
r += htmltext('<div class="bo-block">') |
363 |
r += htmltext('<h3>%s</h3>') % _('Access')
|
|
364 |
r += htmltext('<ul>') |
|
363 |
r += htmltext('<h3>%s</h3>') % _('Workflow')
|
|
364 |
r += htmltext('<ul class="biglist optionslist">')
|
|
365 | 365 | |
366 |
workflows = get_workflows() |
|
367 |
if workflows: |
|
368 |
r += htmltext('<li>%s ') % _('Workflow:') |
|
369 |
if self.formdef.workflow: |
|
370 |
r += self.formdef.workflow.name |
|
371 |
else: |
|
372 |
r += '-' |
|
373 |
if self.formdef.workflow_id: |
|
374 |
pristine_workflow = Workflow.get(self.formdef.workflow_id) |
|
375 |
if pristine_workflow.variables_formdef: |
|
376 |
r += htmltext(' (<a rel="popup" href="workflow-variables">%s</a>)') % _('options') |
|
377 |
elif self.formdef.workflow_options: |
|
378 |
# there are no variables defined but there are some values |
|
379 |
# in workflow_options, this is probably the legacy stuff. |
|
380 |
if any((x for x in self.formdef.workflow_options if '*' in x)): |
|
381 |
r += htmltext(' (<a rel="popup" href="workflow-options">%s</a>)') % _('options') |
|
366 |
r += add_option_line('workflow', _('Workflow'), |
|
367 |
self.formdef.workflow and self.formdef.workflow.name or '-') |
|
382 | 368 | |
383 |
r += ' ' |
|
384 |
r += htmltext('(<a href="workflow" rel="popup">%s</a>)') % _('change') |
|
385 |
r += htmltext('</li>') |
|
369 |
if self.formdef.workflow_id: |
|
370 |
pristine_workflow = Workflow.get(self.formdef.workflow_id) |
|
371 |
if pristine_workflow.variables_formdef: |
|
372 |
r += add_option_line('workflow-variables', _('Options'), '') |
|
373 |
elif self.formdef.workflow_options: |
|
374 |
# there are no variables defined but there are some values |
|
375 |
# in workflow_options, this is probably the legacy stuff. |
|
376 |
if any((x for x in self.formdef.workflow_options if '*' in x)): |
|
377 |
r += add_option_line('workflow-options', _('Options'), '') |
|
386 | 378 | |
387 | 379 |
if self.formdef.workflow.roles: |
388 |
r += htmltext('<li>%s ') % _('Workflow Roles:') |
|
389 |
r += htmltext('<ul>') |
|
390 | 380 |
if not self.formdef.workflow_roles: |
391 | 381 |
self.formdef.workflow_roles = {} |
392 | 382 |
for (wf_role_id, wf_role_label) in self.formdef.workflow.roles.items(): |
393 |
r += htmltext('<li>%s ') % _('%s:') % wf_role_label |
|
394 | 383 |
role_id = self.formdef.workflow_roles.get(wf_role_id) |
395 | 384 |
if role_id: |
396 | 385 |
try: |
397 | 386 |
role = Role.get(role_id) |
398 |
r += htmltext('<a href="../../roles/%s/">%s</a>') % (role.id, role.name)
|
|
387 |
role_label = role.name
|
|
399 | 388 |
except KeyError: |
400 | 389 |
# removed role ? |
401 |
r += htmltext('<em>') |
|
402 |
r += _('Unknown role (%s)') % role_id |
|
403 |
r += htmltext('</em>') |
|
390 |
role_label = _('Unknown role (%s)') % role_id |
|
404 | 391 |
else: |
405 |
r += '-' |
|
406 |
r += htmltext(' ') |
|
407 |
r += htmltext('(<a href="role/%s" rel="popup">%s</a>)') % (wf_role_id, _('change')) |
|
408 |
r += htmltext('</li>') |
|
409 |
r += htmltext('</ul>') |
|
410 |
r += htmltext('</li>') |
|
411 | ||
412 |
r += self._display_roles(_('User Roles:'), 'roles', 'roles') |
|
413 |
r += self._display_roles(_('Backoffice Submission Roles:'), |
|
414 |
'backoffice_submission_roles', |
|
415 |
'backoffice-submission-roles') |
|
416 | ||
417 |
r += htmltext('<li>%s ') % _('Read Access:') |
|
418 |
r += '%s' % {'none': _('None'), |
|
419 |
'owner': _('Owner'), |
|
420 |
'roles': _('Roles'), |
|
421 |
'all': _('Everybody')}.get(self.formdef.acl_read, 'none') |
|
422 |
r += ' ' |
|
423 |
r += htmltext('(<a href="acl-read" rel="popup">%s</a>)') % _('change') |
|
392 |
role_label = '-' |
|
393 |
r += add_option_line('role/%s' % wf_role_id, |
|
394 |
wf_role_label, role_label) |
|
395 | ||
396 |
r += add_option_line('roles', _('User Roles'), |
|
397 |
self._get_roles_label('roles')) |
|
398 |
r += add_option_line('backoffice-submission-roles', |
|
399 |
_('Backoffice Submission Role'), |
|
400 |
self._get_roles_label('backoffice_submission_roles')) |
|
401 | ||
402 |
r += add_option_line('acl-read', _('Read Access'), |
|
403 |
{'none': _('None'), |
|
404 |
'owner': _('Owner'), |
|
405 |
'roles': _('Roles'), |
|
406 |
'all': _('Everybody')}.get(self.formdef.acl_read, 'none')) |
|
424 | 407 |
r += htmltext('</ul>') |
425 | 408 |
r += htmltext('</div>') |
426 | 409 |
r += htmltext('</div>') |
... | ... | |
474 | 457 |
r += htmltext('</div>') |
475 | 458 |
return r.getvalue() |
476 | 459 | |
477 |
def _display_roles(self, title, attribute, change_url): |
|
478 |
r = TemplateIO(html=True) |
|
479 |
r += htmltext('<li>%s ') % title |
|
460 |
def _get_roles_label(self, attribute): |
|
480 | 461 |
if getattr(self.formdef, attribute): |
481 | 462 |
roles = [] |
482 | 463 |
for x in getattr(self.formdef, attribute): |
... | ... | |
484 | 465 |
roles.append(logged_users_role().name) |
485 | 466 |
else: |
486 | 467 |
try: |
487 |
roles.append(htmltext('<a href="../../roles/%s/">%s</a>') % (x, Role.get(x).name))
|
|
468 |
roles.append(Role.get(x).name)
|
|
488 | 469 |
except KeyError: |
489 | 470 |
# removed role ? |
490 |
roles.append(htmltext('<em>%s</em>') % _('Unknown role (%s)') % role_id)
|
|
491 |
r += htmltext(', ').join(roles)
|
|
471 |
roles.append(_('Unknown role (%s)') % role_id) |
|
472 |
value = htmltext(', ').join(roles)
|
|
492 | 473 |
else: |
493 |
r += '-' |
|
494 |
r += ' ' |
|
495 |
r += htmltext('(<a href="%s" rel="popup">%s</a>)') % ( |
|
496 |
change_url, _('change')) |
|
497 |
r += htmltext('</li>') |
|
498 |
return r.getvalue() |
|
474 |
value = _('None') |
|
475 |
return value |
|
499 | 476 | |
500 | 477 |
def get_sidebar(self): |
501 | 478 |
r = TemplateIO(html=True) |
502 |
- |