management: display lateral block from template on formdata page (#49661)
This commit is contained in:
parent
f2f0feeceb
commit
9967b29da6
|
@ -3254,6 +3254,42 @@ def test_backoffice_sidebar_user_context(pub):
|
|||
assert partial_resp.text.index('>Misc<') < partial_resp.text.index('>cat1<')
|
||||
|
||||
|
||||
def test_backoffice_sidebar_lateral_block(pub):
|
||||
create_user(pub)
|
||||
FormDef.wipe()
|
||||
Workflow.wipe()
|
||||
|
||||
wf = Workflow(name='WF')
|
||||
wf.add_status('Status1')
|
||||
wf.store()
|
||||
|
||||
formdef = FormDef()
|
||||
formdef.name = 'form title'
|
||||
formdef.fields = [
|
||||
fields.StringField(id='0', label='string', varname='string'),
|
||||
]
|
||||
formdef.workflow_roles = {'_receiver': 1}
|
||||
formdef.workflow = wf
|
||||
formdef.store()
|
||||
formdata = formdef.data_class()()
|
||||
formdata.just_created()
|
||||
formdata.data = {'0': 'bouh'}
|
||||
formdata.store()
|
||||
|
||||
app = login(get_app(pub))
|
||||
resp = app.get('/backoffice/management/form-title/%s/' % formdata.id)
|
||||
assert '/lateral-block' not in resp.text
|
||||
|
||||
formdef.lateral_template = 'XX{{ form_var_string }}XX'
|
||||
formdef.store()
|
||||
resp = app.get('/backoffice/management/form-title/%s/' % formdata.id)
|
||||
assert '/lateral-block' in resp.text
|
||||
|
||||
lateral_block_url = re.findall('data-async-url="(.*/lateral-block)"', resp.text)[0]
|
||||
partial_resp = app.get(lateral_block_url)
|
||||
assert partial_resp.text == '<div class="lateral-block">XXbouhXX</div>'
|
||||
|
||||
|
||||
def test_count_open(pub):
|
||||
if not pub.is_using_postgresql():
|
||||
pytest.skip('this requires SQL')
|
||||
|
|
|
@ -2533,6 +2533,7 @@ class FormBackOfficeStatusPage(FormStatusPage):
|
|||
_q_exports_orig = ['', 'download', 'json', 'action', 'live',
|
||||
'inspect', ('inspect-tool', 'inspect_tool'),
|
||||
('download-as-zip', 'download_as_zip'),
|
||||
('lateral-block', 'lateral_block'),
|
||||
('user-pending-forms', 'user_pending_forms')]
|
||||
form_page_class = FormFillPage
|
||||
|
||||
|
@ -2575,6 +2576,12 @@ class FormBackOfficeStatusPage(FormStatusPage):
|
|||
form.attrs['data-live-url'] = self.filled.get_url(backoffice=True) + 'live'
|
||||
return form
|
||||
|
||||
def lateral_block(self):
|
||||
self.check_receiver()
|
||||
get_response().filter = {'raw': True}
|
||||
response = self.get_lateral_block()
|
||||
return response
|
||||
|
||||
def user_pending_forms(self):
|
||||
self.check_receiver()
|
||||
get_response().filter = {'raw': True}
|
||||
|
@ -2683,6 +2690,8 @@ class FormBackOfficeStatusPage(FormStatusPage):
|
|||
r += self.get_extra_submission_context_bar()
|
||||
r += self.get_extra_submission_user_id_bar()
|
||||
r += self.get_extra_geolocation_bar()
|
||||
if formdata.formdef.lateral_template:
|
||||
r += htmltext('<div data-async-url="%slateral-block"></div>' % formdata.get_url(backoffice=True))
|
||||
|
||||
if formdata.user_id and get_publisher().is_using_postgresql():
|
||||
r += htmltext('<div data-async-url="%suser-pending-forms"></div>' % formdata.get_url(backoffice=True))
|
||||
|
@ -2874,6 +2883,15 @@ class FormBackOfficeStatusPage(FormStatusPage):
|
|||
r += htmltext('</div>')
|
||||
return r.getvalue()
|
||||
|
||||
def get_lateral_block(self):
|
||||
r = TemplateIO(html=True)
|
||||
lateral_block = self.filled.get_lateral_block()
|
||||
if lateral_block:
|
||||
r += htmltext('<div class="lateral-block">')
|
||||
r += htmltext(lateral_block)
|
||||
r += htmltext('</div>')
|
||||
return r.getvalue()
|
||||
|
||||
def test_tools_form(self):
|
||||
form = Form(use_tokens=False)
|
||||
form.add(RadiobuttonsWidget, 'test_mode',
|
||||
|
|
|
@ -436,6 +436,15 @@ class FormData(StorableObject):
|
|||
changed = True
|
||||
return changed
|
||||
|
||||
def get_lateral_block(self):
|
||||
context = self.get_substitution_variables()
|
||||
context['formdef_id'] = self.formdef.id
|
||||
if self.formdef.lateral_template is None:
|
||||
new_value = None
|
||||
else:
|
||||
new_value = Template(self.formdef.lateral_template, autoescape=False).render(context)
|
||||
return new_value
|
||||
|
||||
# criticality levels are stored as [0, 101, 102, 103...], this makes it
|
||||
# easier to group "uncritical" formdatas (=0) together when sorting.
|
||||
def get_current_criticality_level(self):
|
||||
|
|
Loading…
Reference in New Issue