From be89576b2ed670cf8c08f956d646710726f5acb8 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Fri, 7 Feb 2020 19:52:59 +0100 Subject: [PATCH] create_formdata: add attach_to_history option (#39639) --- tests/test_backoffice_pages.py | 14 ++++++++++++-- wcs/wf/create_formdata.py | 29 +++++++++++++++++++++++++---- 2 files changed, 37 insertions(+), 6 deletions(-) diff --git a/tests/test_backoffice_pages.py b/tests/test_backoffice_pages.py index 78727344..8e084839 100644 --- a/tests/test_backoffice_pages.py +++ b/tests/test_backoffice_pages.py @@ -5672,8 +5672,8 @@ def test_lazy_eval_with_conditional_workflow_form(pub): assert context['form_var_foo_bar'] == 'go' -@pytest.fixture -def create_formdata(pub): +@pytest.fixture(params=[{'attach_to_history': True}, {}]) +def create_formdata(request, pub): admin = create_user(pub, is_admin=True) FormDef.wipe() @@ -5715,6 +5715,7 @@ def create_formdata(pub): create_formdata.formdef_slug = target_formdef.url_name create_formdata.keep_user = True create_formdata.backoffice_submission = True + create_formdata.attach_to_history = request.param.get('attach_to_history', False) create_formdata.mappings = [ Mapping(field_id='0', expression='=form_var_toto_string'), Mapping(field_id='1', expression='=form_var_toto_file_raw'), @@ -5752,6 +5753,7 @@ def test_backoffice_create_formdata_backoffice_submission(create_formdata): # create source formdata formdata = create_formdata['source_formdef'].data_class()() + create_formdata['formdata'] = formdata upload = PicklableUpload('/foo/bar', content_type='text/plain') upload.receive([b'hello world']) formdata.data = { @@ -5799,3 +5801,11 @@ def test_backoffice_create_formdata_backoffice_submission(create_formdata): pq = resp.pyquery.remove_namespaces() assert pq('.field-type-string .value').text() == 'coucou' assert pq('.field-type-file .value').text() == 'bar' + + resp = app.get(create_formdata['formdata'].get_url(backoffice=True)) + pq = resp.pyquery.remove_namespaces() + assert pq('.field-type-string .value').text() == 'coucou' + if create_formdata['create_formdata'].attach_to_history: + assert pq('.wf-links') + else: + assert not pq('.wf-links') diff --git a/wcs/wf/create_formdata.py b/wcs/wf/create_formdata.py index 9d0889c3..bf3a171d 100644 --- a/wcs/wf/create_formdata.py +++ b/wcs/wf/create_formdata.py @@ -18,13 +18,14 @@ import time import xml.etree.ElementTree as ET from quixote import get_request, get_session, get_publisher +from quixote.html import htmltext from django.utils.functional import cached_property from wcs.qommon import _ from wcs.qommon.form import (WidgetListAsTable, CompositeWidget, SingleSelectWidget, ComputedExpressionWidget, - CheckboxWidget, StringWidget, VarnameWidget) + CheckboxWidget, VarnameWidget) from wcs.logged_errors import LoggedError from wcs.workflows import WorkflowStatusItem, register_item_class @@ -112,12 +113,13 @@ class MappingsWidget(WidgetListAsTable): class LinkedFormdataEvolutionPart(object): formdef_class = FormDef - def __init__(self, formdata, varname=None): + def __init__(self, formdata, varname, attach_to_history): self._formdef = formdata.formdef self._formdata = formdata self.formdef_id = formdata.formdef.id self.formdata_id = formdata.id self.varname = varname + self.attach_to_history = attach_to_history @property def formdef(self): @@ -148,6 +150,16 @@ class LinkedFormdataEvolutionPart(object): d['form_links_%s' % (part.varname or '*')] = part return d + def view(self): + if self.attach_to_history: + return htmltext('