admin: factor the roles selection dialog for future uses (#7873)

This commit is contained in:
Frédéric Péters 2015-07-19 15:10:27 +02:00
parent e1fc476dd4
commit 968c28799f
1 changed files with 24 additions and 14 deletions

View File

@ -443,36 +443,46 @@ class FormDefPage(Directory):
self.formdef.store()
return redirect('.')
def roles(self):
def _roles_selection(self, title, attribute, description=None,
include_logged_users_role=True):
form = Form(enctype='multipart/form-data')
form.add(WidgetList, 'roles', title=_('User Roles'), element_type=SingleSelectWidget,
value=self.formdef.roles,
options = [(None, '---')]
if include_logged_users_role:
options.append((logged_users_role().id, logged_users_role().name))
options += get_user_roles()
form.add(WidgetList, 'roles', element_type=SingleSelectWidget,
value=getattr(self.formdef, attribute),
add_element_label = _('Add Role'),
element_kwargs = {str('render_br'): False,
str('options'): [(None, str('---')),
(logged_users_role().id, logged_users_role().name)] + get_user_roles()})
element_kwargs = {
'render_br': False,
'options': options
})
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( ('roles', _('User Roles')) )
get_response().breadcrumb.append( ('roles', title) )
self.html_top(title=self.formdef.name)
r = TemplateIO(html=True)
r += htmltext('<h2>%s</h2>') % _('Roles')
r += htmltext('<p>%s</p>') % _('Select the roles that can access this form.')
r += htmltext('<h2>%s</h2>') % title
if description:
r += htmltext('<p>%s</p>') % description
r += form.render()
return r.getvalue()
else:
roles = form.get_widget('roles').parse()
if roles:
self.formdef.roles = [x for x in roles if x]
else:
self.formdef.roles = []
roles = form.get_widget('roles').parse() or []
setattr(self.formdef, attribute, [x for x in roles if x])
self.formdef.store()
return redirect('.')
def roles(self):
return self._roles_selection(
title=_('User Roles'),
attribute='roles',
description=_('Select the roles that can access this form.'))
def title(self):
form = Form(enctype='multipart/form-data')
form.add(StringWidget, 'name', title=_('Form Title'), required=True,