From 66ca6a52989c7ef7cf467aa612ed46161d1bc4d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Thu, 28 Mar 2024 11:56:34 +0100 Subject: [PATCH] forms: allow displaying no elements in management sidebar (#88807) --- tests/admin_pages/test_form.py | 8 ++++++++ wcs/admin/forms.py | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/tests/admin_pages/test_form.py b/tests/admin_pages/test_form.py index 81938d5e9..71b44c166 100644 --- a/tests/admin_pages/test_form.py +++ b/tests/admin_pages/test_form.py @@ -263,6 +263,14 @@ def test_forms_edit_management(pub, formdef): resp = resp.forms[0].submit().follow() assert FormDef.get(1).management_sidebar_items == {'__default__'} + # unselect all + resp = resp.click('Management', href='options/management') + for field in resp.forms[0].fields: + if field.startswith('management_sidebar_items$'): + resp.forms[0][field].checked = False + resp = resp.forms[0].submit().follow() + assert FormDef.get(1).management_sidebar_items == set() + def test_forms_edit_tracking_code(pub, formdef): create_superuser(pub) diff --git a/wcs/admin/forms.py b/wcs/admin/forms.py index b17b56bfb..9bb158cd7 100644 --- a/wcs/admin/forms.py +++ b/wcs/admin/forms.py @@ -526,7 +526,7 @@ class OptionsDirectory(Directory): continue new_value = widget.parse() if attr == 'management_sidebar_items': - new_value = set(new_value) + new_value = set(new_value or []) if new_value == self.formdef.__class__.management_sidebar_items: new_value = {'__default__'} if attr == 'digest_template':