add 'views' to formdef (#1213)
This commit is contained in:
parent
c3a068ea9b
commit
6a88d9b02b
|
@ -200,7 +200,8 @@ class FormDefPage(Directory):
|
|||
'archive', 'invite', 'enable', 'workflow', 'category',
|
||||
'recipient', ('workflow-options', 'workflow_options'),
|
||||
('workflow-status-remapping', 'workflow_status_remapping'),
|
||||
'roles', 'title', 'options', ('acl-read', 'acl_read')]
|
||||
'roles', 'title', 'options', ('acl-read', 'acl_read'),
|
||||
'views']
|
||||
|
||||
def __init__(self, component):
|
||||
try:
|
||||
|
@ -331,6 +332,7 @@ class FormDefPage(Directory):
|
|||
|
||||
def get_sidebar [html] (self):
|
||||
'<ul>'
|
||||
'<li><a href="views">%s</a></li>' % _('Views')
|
||||
'<li><a href="delete" rel="popup">%s</a></li>' % _('Delete')
|
||||
'<li><a href="duplicate">%s</a></li>' % _('Duplicate')
|
||||
if ET:
|
||||
|
@ -885,6 +887,76 @@ class FormDefPage(Directory):
|
|||
self.formdef.workflow_options[widget.name] = widget.parse()
|
||||
self.formdef.store()
|
||||
|
||||
def views [html] (self):
|
||||
form = Form(enctype='multipart/form-data')
|
||||
|
||||
if self.formdef.views:
|
||||
view_backoffice_summary = self.formdef.views.get('backoffice_summary')
|
||||
else:
|
||||
view_backoffice_summary = None
|
||||
form.add(StringWidget, 'backoffice_summary',
|
||||
title = _('Backoffice summary'), size=80,
|
||||
value = view_backoffice_summary)
|
||||
form.add_submit('submit', _('Submit'))
|
||||
form.add_submit('cancel', _('Cancel'))
|
||||
|
||||
if form.get_widget('cancel').parse():
|
||||
return redirect('.')
|
||||
|
||||
if not form.is_submitted() or form.has_errors():
|
||||
get_response().breadcrumb.append(('views', _('Views')))
|
||||
html_top('forms', title = _('Views'))
|
||||
'<h2>%s</h2>' % _('Views')
|
||||
'<p>%s</p>' % _('Common substitution variables are available with the [variable] syntax.')
|
||||
form.render()
|
||||
else:
|
||||
return self.views_submit(form)
|
||||
|
||||
def views_submit(self, form):
|
||||
if not self.formdef.views:
|
||||
self.formdef.views = {}
|
||||
for v in ('backoffice_summary', ):
|
||||
widget = form.get_widget(v)
|
||||
if widget:
|
||||
self.formdef.views[v] = widget.parse()
|
||||
self.formdef.store()
|
||||
return redirect('.')
|
||||
|
||||
def views [html] (self):
|
||||
form = Form(enctype='multipart/form-data')
|
||||
|
||||
if self.formdef.views:
|
||||
view_backoffice_summary = self.formdef.views.get('backoffice_summary')
|
||||
else:
|
||||
view_backoffice_summary = None
|
||||
form.add(StringWidget, 'backoffice_summary',
|
||||
title = _('Backoffice summary'), size=80,
|
||||
value = view_backoffice_summary)
|
||||
form.add_submit('submit', _('Submit'))
|
||||
form.add_submit('cancel', _('Cancel'))
|
||||
|
||||
if form.get_widget('cancel').parse():
|
||||
return redirect('.')
|
||||
|
||||
if not form.is_submitted() or form.has_errors():
|
||||
get_response().breadcrumb.append(('views', _('Views')))
|
||||
html_top('forms', title = _('Views'))
|
||||
'<h2>%s</h2>' % _('Views')
|
||||
'<p>%s</p>' % _('Common substitution variables are available with the [variable] syntax.')
|
||||
form.render()
|
||||
else:
|
||||
return self.views_submit(form)
|
||||
|
||||
def views_submit(self, form):
|
||||
if not self.formdef.views:
|
||||
self.formdef.views = {}
|
||||
for v in ('backoffice_summary', ):
|
||||
widget = form.get_widget(v)
|
||||
if widget:
|
||||
self.formdef.views[v] = widget.parse()
|
||||
self.formdef.store()
|
||||
return redirect('.')
|
||||
|
||||
|
||||
class FormsDirectory(Directory):
|
||||
_q_exports = ['', 'new', ('import', 'p_import')]
|
||||
|
|
|
@ -191,15 +191,9 @@ class RootDirectory(BackofficeRootDirectory):
|
|||
|
||||
'<ul>'
|
||||
for f in status_forms:
|
||||
try:
|
||||
u = get_publisher().user_class.get(f.user_id)
|
||||
userlabel = u.display_name
|
||||
except KeyError:
|
||||
userlabel = _('unknown user')
|
||||
'<li><a href="%s/%s/">%s, %s</a></li>' % (
|
||||
'<li><a href="%s/%s/">%s</a></li>' % (
|
||||
formdef.url_name, f.id,
|
||||
misc.localstrftime(f.receipt_time),
|
||||
userlabel)
|
||||
formdef.get_backoffice_summary_form(f))
|
||||
'</ul>'
|
||||
'</div>'
|
||||
'</div>'
|
||||
|
@ -371,15 +365,9 @@ class FormPage(Directory):
|
|||
|
||||
'<ul>'
|
||||
for f in status_forms:
|
||||
try:
|
||||
u = get_publisher().user_class.get(f.user_id)
|
||||
userlabel = u.display_name
|
||||
except KeyError:
|
||||
userlabel = _('unknown user')
|
||||
'<li><a href="%s/">%s, %s</a></li>' % (
|
||||
'<li><a href="%s/">%s</a></li>' % (
|
||||
f.id,
|
||||
misc.localstrftime(f.receipt_time),
|
||||
userlabel)
|
||||
self.formdef.get_backoffice_summary_form(f))
|
||||
'</ul>'
|
||||
'</div>'
|
||||
'</div>'
|
||||
|
|
|
@ -38,7 +38,7 @@ from quixote import get_request, get_session, get_publisher
|
|||
from qommon import emails
|
||||
|
||||
from qommon.form import *
|
||||
from qommon.misc import simplify, date_format, strftime
|
||||
from qommon.misc import simplify, date_format, strftime, localstrftime
|
||||
from qommon import get_cfg
|
||||
from qommon.substitution import Substitutions
|
||||
|
||||
|
@ -46,7 +46,8 @@ from formdata import FormData
|
|||
from roles import Role, logged_users_role
|
||||
from categories import Category
|
||||
from wcs.workflows import Workflow, CommentableWorkflowStatusItem, \
|
||||
SendmailWorkflowStatusItem, ChoiceWorkflowStatusItem
|
||||
SendmailWorkflowStatusItem, ChoiceWorkflowStatusItem, \
|
||||
template_on_formdata
|
||||
import fields
|
||||
import sql
|
||||
|
||||
|
@ -81,6 +82,8 @@ class FormDef(StorableObject):
|
|||
publication_date = None
|
||||
expiration_date = None
|
||||
|
||||
views = None
|
||||
|
||||
acl_read = 'owner' # one of ('none', 'owner', 'roles', 'all')
|
||||
private_status_and_history = False
|
||||
|
||||
|
@ -436,6 +439,26 @@ class FormDef(StorableObject):
|
|||
details.append('')
|
||||
return '\n'.join(details)
|
||||
|
||||
def get_view_form(self, formdata, view):
|
||||
if self.views is None or self.views.get(view) is None:
|
||||
return None
|
||||
get_publisher().substitutions.feed(formdata)
|
||||
return template_on_formdata(formdata, self.views[view])
|
||||
|
||||
def get_backoffice_summary_form(self, formdata):
|
||||
summary = self.get_view_form(formdata, 'backoffice_summary')
|
||||
if summary is None:
|
||||
try:
|
||||
u = get_publisher().user_class.get(formdata.user_id)
|
||||
userlabel = u.display_name
|
||||
except KeyError:
|
||||
if formdata.user_hash:
|
||||
userlabel = _('anonymous user')
|
||||
else:
|
||||
userlabel = _('unknown user')
|
||||
summary = '%s, %s' % (localstrftime(formdata.receipt_time), userlabel)
|
||||
return summary
|
||||
|
||||
def get_submitter_email(self, formdata):
|
||||
users_cfg = get_cfg('users', {})
|
||||
field_email = users_cfg.get('field_email') or 'email'
|
||||
|
|
Loading…
Reference in New Issue