diff --git a/apps/workspaces/api/serializers.py b/apps/workspaces/api/serializers.py index 5d7967f..39b89a9 100644 --- a/apps/workspaces/api/serializers.py +++ b/apps/workspaces/api/serializers.py @@ -11,15 +11,28 @@ class WorkspaceMemberInputSerializer(serializers.Serializer): class WorkspaceSerializer(BaseModelSerializer): members = WorkspaceMemberInputSerializer(many=True, write_only=True, required=False) + my_role = serializers.SerializerMethodField() class Meta: model = Workspace fields = BaseModelSerializer.Meta.fields + ( "name", "description", + "owner", + "my_role", "members", ) + read_only_fields = BaseModelSerializer.Meta.fields + ( + "owner", + ) + def get_my_role(self, obj): + membership = WorkspaceMembership.objects.filter( + workspace=obj, + user=self.context["request"].user, + ).first() + return getattr(membership, "role", None) + def create(self, validated_data): members_data = validated_data.pop('members', []) @@ -31,7 +44,7 @@ class WorkspaceSerializer(BaseModelSerializer): WorkspaceMembership( workspace=workspace, user_id=member['user_id'], - role=member.get('role', 'member'), + role=member['role'], is_active=True ) )