From 89d1d61d928cee111712eacfb494cdf0e26cf640 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Sun, 19 Jul 2015 15:10:27 +0200 Subject: [PATCH] admin: factor the roles selection dialog for future uses (#7873) --- wcs/admin/forms.py | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/wcs/admin/forms.py b/wcs/admin/forms.py index 8ccb95d..0aab25c 100644 --- a/wcs/admin/forms.py +++ b/wcs/admin/forms.py @@ -441,10 +441,10 @@ class FormDefPage(Directory): self.formdef.store() return redirect('.') - def roles(self): + def _roles_selection(self, title, attribute, description=None): form = Form(enctype='multipart/form-data') - form.add(WidgetList, 'roles', title=_('User Roles'), element_type=SingleSelectWidget, - value=self.formdef.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('---')), @@ -458,19 +458,23 @@ class FormDefPage(Directory): get_response().breadcrumb.append( ('roles', _('User Roles')) ) self.html_top(title=self.formdef.name) r = TemplateIO(html=True) - r += htmltext('

%s

') % _('Roles') - r += htmltext('

%s

') % _('Select the roles that can access this form.') + r += htmltext('

%s

') % title + if description: + r += htmltext('

%s

') % 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, -- 2.1.4