feat(workspaces): add 'my_role' and 'owner' fields to WorkspaceSerializer
This commit is contained in:
@@ -11,14 +11,27 @@ class WorkspaceMemberInputSerializer(serializers.Serializer):
|
|||||||
|
|
||||||
class WorkspaceSerializer(BaseModelSerializer):
|
class WorkspaceSerializer(BaseModelSerializer):
|
||||||
members = WorkspaceMemberInputSerializer(many=True, write_only=True, required=False)
|
members = WorkspaceMemberInputSerializer(many=True, write_only=True, required=False)
|
||||||
|
my_role = serializers.SerializerMethodField()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Workspace
|
model = Workspace
|
||||||
fields = BaseModelSerializer.Meta.fields + (
|
fields = BaseModelSerializer.Meta.fields + (
|
||||||
"name",
|
"name",
|
||||||
"description",
|
"description",
|
||||||
|
"owner",
|
||||||
|
"my_role",
|
||||||
"members",
|
"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):
|
def create(self, validated_data):
|
||||||
members_data = validated_data.pop('members', [])
|
members_data = validated_data.pop('members', [])
|
||||||
@@ -31,7 +44,7 @@ class WorkspaceSerializer(BaseModelSerializer):
|
|||||||
WorkspaceMembership(
|
WorkspaceMembership(
|
||||||
workspace=workspace,
|
workspace=workspace,
|
||||||
user_id=member['user_id'],
|
user_id=member['user_id'],
|
||||||
role=member.get('role', 'member'),
|
role=member['role'],
|
||||||
is_active=True
|
is_active=True
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user