Projet

Général

Profil

0001-wf-create_formdata-show-link-to-new-formdata-only-to.patch

Thomas Noël, 12 mai 2022 14:19

Télécharger (3,62 ko)

Voir les différences:

Subject: [PATCH] wf/create_formdata: show link to new formdata only to logged
 users (#65144)

 tests/form_pages/test_formdata.py | 59 +++++++++++++++++++++++++++++++
 wcs/wf/create_formdata.py         |  3 ++
 2 files changed, 62 insertions(+)
tests/form_pages/test_formdata.py
17 17
from wcs.formdef import FormDef
18 18
from wcs.qommon.form import UploadedFile
19 19
from wcs.qommon.misc import ConnectionError
20
from wcs.wf.create_formdata import Mapping
20 21
from wcs.wf.export_to_model import transform_to_pdf
21 22
from wcs.wf.form import WorkflowFormFieldsFormDef
22 23
from wcs.workflows import Workflow, WorkflowBackofficeFieldsFormDef
......
1666 1667
        'to-all.txt',
1667 1668
        'to-role2.txt',
1668 1669
    ]
1670

  
1671

  
1672
def test_create_formdata_show_link_in_history(pub):
1673
    user = create_user(pub)
1674
    FormDef.wipe()
1675
    pub.tracking_code_class.wipe()
1676

  
1677
    target_formdef = FormDef()
1678
    target_formdef.name = 'target-form'
1679
    target_formdef.fields = [
1680
        fields.StringField(id='0', label='string', varname='foo_string'),
1681
    ]
1682
    target_formdef.store()
1683
    target_formdef.data_class().wipe()
1684

  
1685
    wf = Workflow(name='create-formdata')
1686
    wf.possible_status = Workflow.get_default_workflow().possible_status[:]
1687
    create = wf.possible_status[1].add_action('create_formdata', id='_create', prepend=True)
1688
    create.label = 'create a new linked form'
1689
    create.varname = 'resubmitted'
1690
    create.mappings = [
1691
        Mapping(field_id='0', expression='="coincoin"'),
1692
    ]
1693
    wf.store()
1694

  
1695
    source_formdef = FormDef()
1696
    source_formdef.name = 'source-form'
1697
    source_formdef.fields = []
1698
    source_formdef.workflow_id = wf.id
1699
    source_formdef.enable_tracking_codes = True
1700
    source_formdef.store()
1701

  
1702
    create.formdef_slug = target_formdef.url_name
1703
    create.attach_to_history = True
1704
    wf.store()
1705

  
1706
    app = login(get_app(pub), username='foo', password='foo')
1707
    resp = app.get('/source-form/')
1708
    resp = resp.forms[0].submit('submit')
1709
    assert 'Check values then click submit.' in resp.text
1710
    resp = resp.forms[0].submit('submit')
1711
    assert resp.status_int == 302
1712
    resp = resp.follow()
1713
    assert 'The form has been recorded' in resp.text
1714

  
1715
    formdata = source_formdef.data_class().select()[0]
1716

  
1717
    # logged access: show link to created formdata
1718
    resp = app.get('/source-form/%s/' % formdata.id)
1719
    assert 'The form has been recorded on' in resp.text
1720
    assert 'New form "target-form" created' in resp.text
1721

  
1722
    # anonymous access via tracking code: no link
1723
    app = get_app(pub)
1724
    resp = app.get('/code/%s/load' % formdata.tracking_code)
1725
    resp = resp.follow()
1726
    assert 'The form has been recorded on' in resp.text
1727
    assert 'New form "target-form" created' not in resp.text
wcs/wf/create_formdata.py
187 187
                d['form_links_%s' % (part.varname or '*')] = part
188 188
        return d
189 189

  
190
    def is_hidden(self):
191
        return not bool(get_request() and get_request().user)
192

  
190 193
    def view(self):
191 194
        if self.attach_to_history:
192 195
            try:
193
-