backoffice: use /backoffice/ URLs for live evaluation (#34213)
This is required to get a correct value for is_in_backoffice.
This commit is contained in:
parent
52b6046edd
commit
ce2e7d3c18
|
@ -2002,6 +2002,48 @@ def test_backoffice_submission_remove_drafts(pub):
|
|||
resp = app.get('/backoffice/submission/form-title/remove/%s' % formdata.id,
|
||||
status=403)
|
||||
|
||||
def test_backoffice_submission_live_condition(pub):
|
||||
user = create_user(pub)
|
||||
create_environment(pub)
|
||||
|
||||
formdef = FormDef.get_by_urlname('form-title')
|
||||
formdef.backoffice_submission_roles = user.roles[:]
|
||||
formdef.store()
|
||||
formdef.fields = [
|
||||
fields.StringField(type='string', id='1', label='Bar', size='40',
|
||||
required=True, varname='bar'),
|
||||
fields.StringField(type='string', id='2', label='Foo', size='40',
|
||||
required=True, varname='foo',
|
||||
condition={'type': 'django', 'value': 'form_var_bar == "bye"'}),
|
||||
]
|
||||
formdef.store()
|
||||
|
||||
app = login(get_app(pub))
|
||||
resp = app.get('/backoffice/submission/form-title/')
|
||||
assert 'f1' in resp.form.fields
|
||||
assert 'f2' in resp.form.fields
|
||||
assert resp.html.find('div', {'data-field-id': '1'}).attrs['data-live-source'] == 'true'
|
||||
assert resp.html.find('div', {'data-field-id': '2'}).attrs.get('style') == 'display: none'
|
||||
resp.form['f1'] = 'hello'
|
||||
live_url = resp.html.find('form').attrs['data-live-url']
|
||||
assert '/backoffice/' in 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'] = 'bye'
|
||||
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']
|
||||
resp.form['f1'] = 'hello'
|
||||
resp = resp.form.submit('submit')
|
||||
assert 'Check values then click submit.' in resp.body
|
||||
assert 'name="f1"' in resp.body
|
||||
assert 'name="f2"' not in resp.body
|
||||
resp = resp.form.submit('submit')
|
||||
resp = resp.follow()
|
||||
assert '<span class="label">Bar</span>' in resp.body
|
||||
assert '<span class="label">Foo</span>' not in resp.body
|
||||
|
||||
def test_backoffice_submission_sections(pub):
|
||||
user = create_user(pub)
|
||||
create_environment(pub)
|
||||
|
@ -3747,6 +3789,7 @@ def test_backoffice_workflow_form_with_conditions(pub):
|
|||
assert resp.html.find('div', {'data-field-id': '1'}).attrs['data-live-source'] == 'true'
|
||||
assert resp.html.find('div', {'data-field-id': '2'}).attrs.get('style') == 'display: none'
|
||||
live_url = resp.html.find('form').attrs['data-live-url']
|
||||
assert '/backoffice/' in live_url
|
||||
resp.form['f1'] = ''
|
||||
live_resp = app.post(live_url, params=resp.form.submit_fields())
|
||||
assert live_resp.json['result']['1']['visible']
|
||||
|
|
|
@ -1996,7 +1996,7 @@ class FormPage(Directory):
|
|||
|
||||
|
||||
class FormBackOfficeStatusPage(FormStatusPage):
|
||||
_q_exports_orig = ['', 'download', 'json', 'action',
|
||||
_q_exports_orig = ['', 'download', 'json', 'action', 'live',
|
||||
'inspect', ('inspect-tool', 'inspect_tool'),
|
||||
('user-pending-forms', 'user_pending_forms')]
|
||||
form_page_class = FormFillPage
|
||||
|
@ -2029,6 +2029,12 @@ class FormBackOfficeStatusPage(FormStatusPage):
|
|||
def get_sidebar(self):
|
||||
return self.get_extra_context_bar()
|
||||
|
||||
def get_workflow_form(self, user):
|
||||
form = super(FormBackOfficeStatusPage, self).get_workflow_form(user)
|
||||
if form:
|
||||
form.attrs['data-live-url'] = self.filled.get_url(backoffice=True) + 'live'
|
||||
return form
|
||||
|
||||
def user_pending_forms(self):
|
||||
self.check_receiver()
|
||||
get_response().filter = {'raw': True}
|
||||
|
|
|
@ -179,6 +179,7 @@ class FormFillPage(PublicFormFillPage):
|
|||
|
||||
def create_form(self, *args, **kwargs):
|
||||
form = super(FormFillPage, self).create_form(*args, **kwargs)
|
||||
form.attrs['data-live-url'] = self.formdef.get_backoffice_submission_url() + 'live'
|
||||
welco_url = get_publisher().get_site_option('welco_url', 'options')
|
||||
if not welco_url:
|
||||
form.add_hidden('submission_channel', self.selected_submission_channel)
|
||||
|
|
Loading…
Reference in New Issue