diff --git a/program/serializers.py b/program/serializers.py index a5383bff21b2e531d97da4425282db95b7d60cfa..2fd809b7e7246b39e6568a6240e21763f79e0f4f 100644 --- a/program/serializers.py +++ b/program/serializers.py @@ -103,15 +103,19 @@ class ProfileSerializer(serializers.ModelSerializer): class UserSerializer(serializers.ModelSerializer): + permissions = serializers.SerializerMethodField() # Add profile fields to JSON profile = ProfileSerializer(required=False) class Meta: model = User + read_only_fields = ( + "id", + "permissions", + ) fields = ( "email", "first_name", - "id", "is_active", "is_staff", "is_superuser", @@ -119,6 +123,12 @@ class UserSerializer(serializers.ModelSerializer): "password", "profile", "username", + ) + read_only_fields + + @staticmethod + def get_permissions(obj: User) -> list[str]: + return sorted( + [p.split(".")[1] for p in obj.get_all_permissions() if p.startswith("program")] ) def create(self, validated_data):