From c273f5b6b7e89611ee0d1a4da6f653fee829b380 Mon Sep 17 00:00:00 2001 From: Dominik George <dominik.george@teckids.org> Date: Mon, 17 Jan 2022 23:35:39 +0100 Subject: [PATCH] Fix field disabling in Person form --- CHANGELOG.rst | 1 + aleksis/core/forms.py | 13 ++++--------- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index e8e2e1e42..aabf16b06 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -15,6 +15,7 @@ Fixed * Signup was forbidden even if it was enabled in settings * Phone numbers were not properly linked and suboptimally formatted on person page * Favicon upload failed with S3 storage. +* Some combinations of allowed self-edit fields on persons could cause errors `2.6`_ - 2022-01-10 ------------------- diff --git a/aleksis/core/forms.py b/aleksis/core/forms.py index 4f4414b1b..f313c365e 100644 --- a/aleksis/core/forms.py +++ b/aleksis/core/forms.py @@ -108,21 +108,16 @@ class PersonForm(ExtensibleForm): request = kwargs.pop("request", None) super().__init__(*args, **kwargs) - # Disable non-editable fields - allowed_person_fields = get_site_preferences()["account__editable_fields_person"] - if ( request and self.instance and not request.user.has_perm("core.change_person", self.instance) ): - # First, disable all fields + # Disable non-editable fields + allowed_person_fields = get_site_preferences()["account__editable_fields_person"] for field in self.fields: - self.fields[field].disabled = True - - # Then, activate allowed fields - for field in allowed_person_fields: - self.fields[field].disabled = False + if field not in allowed_person_fields: + self.fields[field].disabled = True def clean(self) -> None: user = get_user_model() -- GitLab