@@ -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