From c1e69b2d3efb589c0df9df9929c0942b988284cd Mon Sep 17 00:00:00 2001 From: Mattia Date: Tue, 24 Sep 2024 10:03:27 +0200 Subject: [PATCH] [Fixes #12594] Error when saing a new map --- geonode/base/api/serializers.py | 6 +++--- geonode/base/models.py | 3 +++ geonode/people/models.py | 3 --- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/geonode/base/api/serializers.py b/geonode/base/api/serializers.py index 4cd3852223e..ac136d33bab 100644 --- a/geonode/base/api/serializers.py +++ b/geonode/base/api/serializers.py @@ -737,8 +737,8 @@ def to_internal_value(self, data): def update(self, instance, validated_data): user = self.context["request"].user - for field in user.APPROVAL_STATUS_FIELDS: - if not user.can_change_resource_field(instance, field) and field in user.APPROVAL_STATUS_FIELDS: + for field in instance.ROLE_BASED_MANAGED_FIELDS: + if not user.can_change_resource_field(instance, field) and field in validated_data: validated_data.pop(field) return super().update(instance, validated_data) @@ -760,7 +760,7 @@ def save(self, **kwargs): instance.set_bbox_polygon(coords, srid) user = self.context["request"].user - for field in user.APPROVAL_STATUS_FIELDS: + for field in instance.ROLE_BASED_MANAGED_FIELDS: if not user.can_change_resource_field(instance, field): logger.debug("User can perform the action, the default value is set") setattr(user, field, getattr(ResourceBase, field).field.default) diff --git a/geonode/base/models.py b/geonode/base/models.py index b22de4bf0a9..00297dca75b 100644 --- a/geonode/base/models.py +++ b/geonode/base/models.py @@ -632,6 +632,9 @@ class ResourceBase(PolymorphicModel, PermissionLevelMixin, ItemBase): Base Resource Object loosely based on ISO 19115:2003 """ + # fixing up the publishing option based on user permissions + ROLE_BASED_MANAGED_FIELDS = ["is_approved", "is_published", "featured"] + BASE_PERMISSIONS = { "read": ["view_resourcebase"], "write": ["change_resourcebase_metadata"], diff --git a/geonode/people/models.py b/geonode/people/models.py index 47b0c58fdad..d115d2c85f3 100644 --- a/geonode/people/models.py +++ b/geonode/people/models.py @@ -151,9 +151,6 @@ def class_name(value): objects = ProfileUserManager() USERNAME_FIELD = "username" - # fixing up the publishing option based on user permissions - APPROVAL_STATUS_FIELDS = ["is_approved", "is_published", "featured"] - def group_list_public(self): return GroupProfile.objects.exclude(access="private").filter(groupmember__user=self)