Skip to content

Commit 9c35b78

Browse files
authored
Fix DojoGroupSerializer to handle empty permissions list (#13447)
* fix(serializers): Update DojoGroupSerializer to handle empty permissions list * Accommodate the UserSerializer as well
1 parent 479ce38 commit 9c35b78

1 file changed

Lines changed: 14 additions & 6 deletions

File tree

dojo/api_v2/serializers.py

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -536,13 +536,13 @@ def to_representation(self, instance):
536536
return ret
537537

538538
def update(self, instance, validated_data):
539+
permissions_in_payload = None
539540
new_configuration_permissions = None
540541
if (
541542
"user_permissions" in validated_data
542543
): # This field was renamed from "configuration_permissions" in the meantime
543-
new_configuration_permissions = set(
544-
validated_data.pop("user_permissions"),
545-
)
544+
permissions_in_payload = validated_data.pop("user_permissions")
545+
new_configuration_permissions = set(permissions_in_payload)
546546

547547
instance = super().update(instance, validated_data)
548548

@@ -563,6 +563,10 @@ def update(self, instance, validated_data):
563563
)
564564
instance.user_permissions.set(new_permissions)
565565

566+
# Clear all configuration permissions if an empty list is provided
567+
if isinstance(permissions_in_payload, list) and len(permissions_in_payload) == 0:
568+
instance.user_permissions.clear()
569+
566570
return instance
567571

568572
def create(self, validated_data):
@@ -695,14 +699,14 @@ def create(self, validated_data):
695699
return instance
696700

697701
def update(self, instance, validated_data):
702+
permissions_in_payload = None
698703
new_configuration_permissions = None
699704
if (
700705
"auth_group" in validated_data
701706
and "permissions" in validated_data["auth_group"]
702707
): # This field was renamed from "configuration_permissions" in the meantime
703-
new_configuration_permissions = set(
704-
validated_data.pop("auth_group")["permissions"],
705-
)
708+
permissions_in_payload = validated_data.pop("auth_group")["permissions"]
709+
new_configuration_permissions = set(permissions_in_payload)
706710

707711
instance = super().update(instance, validated_data)
708712

@@ -723,6 +727,10 @@ def update(self, instance, validated_data):
723727
)
724728
instance.auth_group.permissions.set(new_permissions)
725729

730+
# Clear all configuration permissions if an empty list is provided
731+
if isinstance(permissions_in_payload, list) and len(permissions_in_payload) == 0:
732+
instance.auth_group.permissions.clear()
733+
726734
return instance
727735

728736

0 commit comments

Comments
 (0)