44 lines
1.2 KiB
Python
44 lines
1.2 KiB
Python
from rest_framework import serializers
|
|
from rest_framework.renderers import JSONRenderer
|
|
|
|
from vbv_lernwelt.core.models import User
|
|
from vbv_lernwelt.course.models import CourseSessionUser
|
|
|
|
|
|
def create_json_from_objects(objects, serializer_class, many=True) -> str:
|
|
serializer = serializer_class(objects, many=many)
|
|
return JSONRenderer().render(serializer.data).decode("utf-8")
|
|
|
|
|
|
class UserSerializer(serializers.ModelSerializer):
|
|
course_session_experts = serializers.SerializerMethodField()
|
|
|
|
class Meta:
|
|
model = User
|
|
fields = [
|
|
"id",
|
|
"first_name",
|
|
"last_name",
|
|
"email",
|
|
"username",
|
|
"avatar_url",
|
|
"is_superuser",
|
|
"course_session_experts",
|
|
"language",
|
|
]
|
|
read_only_fields = [
|
|
"id",
|
|
"is_superuser",
|
|
"first_name",
|
|
"last_name",
|
|
"email",
|
|
"username",
|
|
]
|
|
|
|
def get_course_session_experts(self, obj):
|
|
qs = CourseSessionUser.objects.filter(
|
|
role=CourseSessionUser.Role.EXPERT, user=obj
|
|
)
|
|
|
|
return [str(csu.course_session.id) for csu in qs]
|