backoffice: allow live evaluation even without any submission right (#55229)
This commit is contained in:
parent
2d5377e542
commit
f0e061c164
|
@ -3014,6 +3014,45 @@ def test_backoffice_wfedit_and_user_selection_multi_page(pub):
|
|||
assert formdef.data_class().get(number31.id).user_id == str(user.id)
|
||||
|
||||
|
||||
def test_backoffice_wfedit_and_live_condition(pub):
|
||||
user = create_user(pub)
|
||||
create_environment(pub)
|
||||
formdef = FormDef.get_by_urlname('form-title')
|
||||
formdef.fields[0].varname = 'foo'
|
||||
formdef.fields[1].condition = {'type': 'django', 'value': 'form_var_foo == "test"'}
|
||||
form_class = formdef.data_class()
|
||||
|
||||
number31 = [x for x in form_class.select() if x.data['1'] == 'FOO BAR 30'][0]
|
||||
|
||||
# attach a custom workflow
|
||||
workflow = Workflow(name='wfedit')
|
||||
st1 = workflow.add_status('Status1', number31.status.split('-')[1])
|
||||
|
||||
wfedit = EditableWorkflowStatusItem()
|
||||
wfedit.id = '_wfedit'
|
||||
wfedit.by = [user.roles[0]]
|
||||
st1.items.append(wfedit)
|
||||
wfedit.parent = st1
|
||||
workflow.store()
|
||||
|
||||
formdef.workflow_id = workflow.id
|
||||
formdef.store()
|
||||
|
||||
app = login(get_app(pub))
|
||||
|
||||
resp = app.get('/backoffice/management/form-title/%s/' % number31.id)
|
||||
resp = resp.form.submit('button_wfedit').follow()
|
||||
live_url = resp.html.find('form').attrs['data-live-url']
|
||||
live_resp = app.post(live_url, params=resp.form.submit_fields())
|
||||
assert live_resp.json['result']['1']['visible']
|
||||
assert not live_resp.json['result']['2']['visible']
|
||||
|
||||
resp.form['f1'].value = 'test'
|
||||
live_resp = app.post(live_url, params=resp.form.submit_fields())
|
||||
assert live_resp.json['result']['1']['visible']
|
||||
assert live_resp.json['result']['2']['visible']
|
||||
|
||||
|
||||
def test_global_listing(pub):
|
||||
if not pub.is_using_postgresql():
|
||||
pytest.skip('this requires SQL')
|
||||
|
|
|
@ -1097,6 +1097,7 @@ class ManagementDirectory(Directory):
|
|||
class FormPage(Directory):
|
||||
_q_exports = [
|
||||
'',
|
||||
'live',
|
||||
'csv',
|
||||
'stats',
|
||||
'ods',
|
||||
|
@ -2736,6 +2737,16 @@ class FormPage(Directory):
|
|||
|
||||
return FormBackOfficeStatusPage(self.formdef, filled)
|
||||
|
||||
def live(self):
|
||||
return FormBackofficeEditPage(self.formdef.url_name).live()
|
||||
|
||||
|
||||
class FormBackofficeEditPage(FormFillPage):
|
||||
def create_form(self, *args, **kwargs):
|
||||
form = super().create_form(*args, **kwargs)
|
||||
form.attrs['data-live-url'] = self.formdef.get_url(backoffice=True) + 'live'
|
||||
return form
|
||||
|
||||
|
||||
class FormBackOfficeStatusPage(FormStatusPage):
|
||||
_q_exports_orig = [
|
||||
|
@ -2750,7 +2761,7 @@ class FormBackOfficeStatusPage(FormStatusPage):
|
|||
('lateral-block', 'lateral_block'),
|
||||
('user-pending-forms', 'user_pending_forms'),
|
||||
]
|
||||
form_page_class = FormFillPage
|
||||
form_page_class = FormBackofficeEditPage
|
||||
|
||||
sidebar_recorded_message = _('The form has been recorded on %(date)s with the number %(number)s.')
|
||||
sidebar_recorded_by_agent_message = _(
|
||||
|
|
Loading…
Reference in New Issue