Projet

Général

Profil

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

Thomas Noël, 13 mai 2022 00:08

Télécharger (3,65 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 | 61 +++++++++++++++++++++++++++++++
 wcs/wf/create_formdata.py         |  3 ++
 2 files changed, 64 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
    FormDef.wipe()
1674
    pub.tracking_code_class.wipe()
1675

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

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

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

  
1700
    create.formdef_slug = target_formdef.url_name
1701
    create.attach_to_history = True
1702
    wf.store()
1703

  
1704
    source_formdef.data_class().wipe()
1705
    target_formdef.data_class().wipe()
1706

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

  
1717
    formdata = source_formdef.data_class().select()[0]
1718

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

  
1724
    # anonymous access via tracking code: no link
1725
    app = get_app(pub)
1726
    resp = app.get('/code/%s/load' % formdata.tracking_code)
1727
    resp = resp.follow()
1728
    assert 'The form has been recorded on' in resp.text
1729
    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
-