From e8bdd4a054e0aafe2e3ad422dc3a81e215378e76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Sun, 19 Jul 2015 14:55:34 +0200 Subject: [PATCH] admin: move "always advertise" to list of options (#7872) --- tests/test_admin_pages.py | 31 ++++++++++++++++++++++++++++--- wcs/admin/forms.py | 22 +++++++++++++++------- 2 files changed, 43 insertions(+), 10 deletions(-) diff --git a/tests/test_admin_pages.py b/tests/test_admin_pages.py index 47f12b1..0f72173 100644 --- a/tests/test_admin_pages.py +++ b/tests/test_admin_pages.py @@ -447,7 +447,7 @@ def test_form_acl_read(): def test_form_roles(): create_superuser() - create_role() + role = create_role() FormDef.wipe() formdef = FormDef() @@ -462,9 +462,34 @@ def test_form_roles(): resp = app.get('/backoffice/forms/1/') resp = resp.click('change', href='roles') - resp.forms[0]['always_advertise'] = True + resp.forms[0]['roles$element0'].value = role.name resp = resp.forms[0].submit('submit') - assert FormDef.get(1).always_advertise == True + assert FormDef.get(1).roles == [role.id] + +def test_form_always_advertise(): + create_superuser() + role = create_role() + + FormDef.wipe() + formdef = FormDef() + formdef.name = 'form title' + formdef.fields = [] + formdef.store() + + app = login(get_app(pub)) + resp = app.get('/backoffice/forms/1/') + resp = resp.click(href='options') + assert resp.forms[0]['always_advertise'].attrs.get('disabled') == 'disabled' + + formdef.roles = [role.id] + formdef.store() + resp = app.get('/backoffice/forms/1/') + resp = resp.click(href='options') + assert resp.forms[0]['always_advertise'].attrs.get('disabled') is None + resp.forms[0]['always_advertise'].checked = True + resp = resp.forms[0].submit() + + assert FormDef.get(formdef.id).always_advertise is True def test_form_delete(): create_role() diff --git a/wcs/admin/forms.py b/wcs/admin/forms.py index 7dbf8fa..8ccb95d 100644 --- a/wcs/admin/forms.py +++ b/wcs/admin/forms.py @@ -312,8 +312,6 @@ class FormDefPage(Directory): # removed role ? roles.append(htmltext('%s') % _('Unknown role (%s)') % role_id) r += htmltext(', ').join(roles) - if self.formdef.always_advertise: - r += htmltext(' (%s)') % _('Always advertise') else: r += '-' r += ' ' @@ -342,6 +340,8 @@ class FormDefPage(Directory): r += htmltext('
  • %s
  • ') % _('Keep workflow status and history private') if self.formdef.only_allow_one: r += htmltext('
  • %s
  • ') % _('Only allow one form per user') + if self.formdef.roles and self.formdef.always_advertise: + r += htmltext('
  • %s
  • ') % _('Advertise to unlogged users') if self.formdef.enable_tracking_codes: r += htmltext('
  • %s
  • ') % _('Has support for tracking codes') if self.formdef.disabled: @@ -449,8 +449,6 @@ class FormDefPage(Directory): element_kwargs = {str('render_br'): False, str('options'): [(None, str('---')), (logged_users_role().id, logged_users_role().name)] + get_user_roles()}) - form.add(CheckboxWidget, 'always_advertise', title=_('Always advertise'), - value=self.formdef.always_advertise) form.add_submit('submit', _('Submit')) form.add_submit('cancel', _('Cancel')) if form.get_widget('cancel').parse(): @@ -465,7 +463,6 @@ class FormDefPage(Directory): r += form.render() return r.getvalue() else: - self.formdef.always_advertise = form.get_widget('always_advertise').parse() roles = form.get_widget('roles').parse() if roles: self.formdef.roles = [x for x in roles if x] @@ -567,6 +564,13 @@ class FormDefPage(Directory): form.add(CheckboxWidget, 'only_allow_one', title=_('Only allow one form per user'), value=self.formdef.only_allow_one) + kwargs = {} + if not self.formdef.roles: + kwargs['disabled'] = 'disabled' + form.add(CheckboxWidget, 'always_advertise', + title=_('Advertise to unlogged users'), + value=self.formdef.always_advertise, + **kwargs) form.add(CheckboxWidget, 'enable_tracking_codes', title=_('Enable support for tracking codes'), value=self.formdef.enable_tracking_codes) @@ -591,9 +595,13 @@ class FormDefPage(Directory): return redirect('.') if form.is_submitted() and not form.has_errors(): - for f in ('confirmation', 'only_allow_one', 'disabled', + attrs = ['confirmation', 'only_allow_one', 'disabled', 'enable_tracking_codes', 'private_status_and_history', - 'disabled_redirection', 'publication_date', 'expiration_date'): + 'disabled_redirection', 'publication_date', + 'expiration_date'] + if self.formdef.roles: + attrs.append('always_advertise') + for f in attrs: widget = form.get_widget(f) if widget: setattr(self.formdef, str(f), widget.parse()) -- 2.1.4