admin: factor the roles selection dialog for future uses (#7873)
This commit is contained in:
parent
e1fc476dd4
commit
968c28799f
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue