Projet

Général

Profil

0001-workflows-add-mapping-by-varname-option-to-create-ca.patch

Frédéric Péters, 14 février 2022 10:01

Télécharger (2,76 ko)

Voir les différences:

Subject: [PATCH] workflows: add mapping by varname option to create carddata
 action (#60833)

 tests/workflow/test_carddata.py | 49 +++++++++++++++++++++++++++++++++
 wcs/wf/create_carddata.py       |  1 +
 2 files changed, 50 insertions(+)
tests/workflow/test_carddata.py
567 567
    assert carddef.data_class().select()[0].user is None
568 568

  
569 569

  
570
def test_create_carddata_map_fields_by_varname(two_pubs):
571
    CardDef.wipe()
572
    FormDef.wipe()
573
    two_pubs.user_class.wipe()
574

  
575
    carddef = CardDef()
576
    carddef.name = 'My card'
577
    carddef.fields = [
578
        StringField(id='3', label='string', varname='foo'),
579
        StringField(id='4', label='string', varname='bar'),
580
    ]
581
    carddef.store()
582
    carddef.data_class().wipe()
583

  
584
    wf = Workflow(name='create-carddata')
585
    wf.possible_status = Workflow.get_default_workflow().possible_status[:]
586
    create = CreateCarddataWorkflowStatusItem()
587
    create.label = 'Create CardDef'
588
    create.varname = 'mycard'
589
    create.id = '_create'
590
    create.formdef_slug = carddef.url_name
591
    create.map_fields_by_varname = True
592
    create.parent = wf.possible_status[1]
593
    wf.possible_status[1].items.insert(0, create)
594
    wf.store()
595

  
596
    formdef = FormDef()
597
    formdef.name = 'source form'
598
    formdef.fields = [
599
        StringField(id='1', label='string', varname='foo'),
600
        StringField(id='2', label='string', varname='xxx'),
601
    ]
602
    formdef.workflow_id = wf.id
603
    formdef.store()
604

  
605
    formdata = formdef.data_class()()
606
    formdata.data = {
607
        '1': 'test1',
608
        '2': 'test2',
609
    }
610
    formdata.just_created()
611
    formdata.perform_workflow()
612

  
613
    assert carddef.data_class().count() == 1
614
    carddata = carddef.data_class().select()[0]
615
    assert carddata.data.get('3') == 'test1'
616
    assert not carddata.data.get('4')
617

  
618

  
570 619
def test_edit_carddata_with_data_sourced_object(pub):
571 620
    FormDef.wipe()
572 621
    CardDef.wipe()
wcs/wf/create_carddata.py
41 41
    def get_parameters(self):
42 42
        return (
43 43
            'formdef_slug',
44
            'map_fields_by_varname',
44 45
            'mappings',
45 46
            'user_association_mode',
46 47
            'user_association_template',
47
-