Projet

Général

Profil

0002-admin-use-new-option-style-for-workflow-related-opti.patch

Frédéric Péters, 14 août 2015 11:44

Télécharger (10,9 ko)

Voir les différences:

Subject: [PATCH 2/4] admin: use new option style for workflow related options
 (#8049)

 tests/test_admin_pages.py | 28 +++++++-------
 wcs/admin/forms.py        | 95 ++++++++++++++++++-----------------------------
 2 files changed, 50 insertions(+), 73 deletions(-)
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
-