Files
codebox/api/app/snippets/serializers.py
2023-05-14 20:28:29 +03:00

47 lines
1.2 KiB
Python

from rest_framework import serializers
from snippets.models import Snippet, SnippetParticipant
from django.contrib.auth.models import User
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ['id', 'username']
class SnippetSerializer(serializers.ModelSerializer):
def get_allowed_users(self, obj) -> list[str]:
query = SnippetParticipant.objects.filter(snippet=obj)
return [ele.username for ele in query]
class Meta:
model = Snippet
fields = [
"id",
"created",
"title",
"contetns",
"linenos",
"language",
"style",
"owner",
"access",
]
read_only_fields = ["created", "owner"]
owner = serializers.ReadOnlyField(source='owner.username')
allowed_users = serializers.SerializerMethodField(read_only=True)
#
# class SnippetParticipantSerializer(serializers.ModelSerializer):
# class Meta:
# model = SnippetParticipant
# fields = [
# "id",
# "user",
# "snippet"
# ]
# read_only_fields = ["id"]