18 |
18 |
import xml.etree.ElementTree as ET
|
19 |
19 |
|
20 |
20 |
from quixote import get_request, get_session, get_publisher
|
|
21 |
from quixote.html import htmltext
|
21 |
22 |
|
22 |
23 |
from django.utils.functional import cached_property
|
23 |
24 |
|
24 |
25 |
from wcs.qommon import _
|
25 |
26 |
from wcs.qommon.form import (WidgetListAsTable, CompositeWidget,
|
26 |
27 |
SingleSelectWidget, ComputedExpressionWidget,
|
27 |
|
CheckboxWidget, StringWidget, VarnameWidget)
|
|
28 |
CheckboxWidget, VarnameWidget)
|
28 |
29 |
|
29 |
30 |
from wcs.logged_errors import LoggedError
|
30 |
31 |
from wcs.workflows import WorkflowStatusItem, register_item_class
|
... | ... | |
112 |
113 |
class LinkedFormdataEvolutionPart(object):
|
113 |
114 |
formdef_class = FormDef
|
114 |
115 |
|
115 |
|
def __init__(self, formdata, varname=None):
|
|
116 |
def __init__(self, formdata, varname, attach_to_history):
|
116 |
117 |
self._formdef = formdata.formdef
|
117 |
118 |
self._formdata = formdata
|
118 |
119 |
self.formdef_id = formdata.formdef.id
|
119 |
120 |
self.formdata_id = formdata.id
|
120 |
121 |
self.varname = varname
|
|
122 |
self.attach_to_history = attach_to_history
|
121 |
123 |
|
122 |
124 |
@property
|
123 |
125 |
def formdef(self):
|
... | ... | |
148 |
150 |
d['form_links_%s' % (part.varname or '*')] = part
|
149 |
151 |
return d
|
150 |
152 |
|
|
153 |
def view(self):
|
|
154 |
if self.attach_to_history:
|
|
155 |
return htmltext('<p class="wf-links">%s <a href="%s">%s %s</a>') % (
|
|
156 |
_('Created new form'),
|
|
157 |
self.formdata and self.formdata.get_url(backoffice=get_request().is_in_backoffice()),
|
|
158 |
self.formdef.name if self.formdef else _('Deleted'),
|
|
159 |
self.formdata_id)
|
|
160 |
else:
|
|
161 |
return ''
|
|
162 |
|
151 |
163 |
|
152 |
164 |
class LazyFormDataLinks(object):
|
153 |
165 |
def __init__(self, formdata):
|
... | ... | |
178 |
190 |
keep_submission_context = False
|
179 |
191 |
mappings = None
|
180 |
192 |
varname = None
|
|
193 |
attach_to_history = False
|
181 |
194 |
|
182 |
195 |
@classmethod
|
183 |
196 |
def is_available(cls, workflow=None):
|
... | ... | |
237 |
250 |
title=_('Identifier'), value=self.varname,
|
238 |
251 |
hint=_('This is used to get linked forms in expressions.'),
|
239 |
252 |
advanced=not(bool(self.varname)))
|
|
253 |
if 'attach_to_history' in parameters:
|
|
254 |
form.add(CheckboxWidget, '%sattach_to_history' % prefix,
|
|
255 |
title=_('Include new form in the form history'),
|
|
256 |
value=self.attach_to_history)
|
240 |
257 |
|
241 |
258 |
def submit_admin_form(self, form):
|
242 |
259 |
self.mappings = []
|
... | ... | |
244 |
261 |
|
245 |
262 |
def get_parameters(self):
|
246 |
263 |
return ('formdef_slug', 'mappings', 'draft', 'backoffice_submission',
|
247 |
|
'keep_user', 'keep_submission_context', 'varname')
|
|
264 |
'keep_user', 'keep_submission_context', 'varname', 'attach_to_history')
|
248 |
265 |
|
249 |
266 |
def perform(self, formdata):
|
250 |
267 |
formdef = self.formdef
|
... | ... | |
288 |
305 |
get_session().mark_anonymous_formdata(new_formdata)
|
289 |
306 |
|
290 |
307 |
evo = formdata.evolution[-1]
|
291 |
|
evo.add_part(self.evolution_part_class(new_formdata, varname=self.varname))
|
|
308 |
evo.add_part(
|
|
309 |
self.evolution_part_class(
|
|
310 |
new_formdata,
|
|
311 |
varname=self.varname,
|
|
312 |
attach_to_history=self.attach_to_history))
|
292 |
313 |
formdata.store()
|
293 |
314 |
|
294 |
315 |
def apply_mappings(self, dest, src):
|
295 |
|
-
|