48 lines
1.3 KiB
Python
48 lines
1.3 KiB
Python
from rest_framework.fields import SerializerMethodField
|
|
|
|
from vbv_lernwelt.core.serializer_helpers import (
|
|
ItWagtailBaseSerializer,
|
|
get_it_serializer_class,
|
|
)
|
|
from vbv_lernwelt.core.utils import StringIDField
|
|
|
|
|
|
class CourseBaseSerializer(ItWagtailBaseSerializer):
|
|
id = StringIDField()
|
|
content_assignment_id = StringIDField()
|
|
course = SerializerMethodField()
|
|
course_category = SerializerMethodField()
|
|
circles = SerializerMethodField()
|
|
|
|
meta_fields = []
|
|
|
|
def get_course(self, obj):
|
|
course = obj.get_course()
|
|
if course:
|
|
from vbv_lernwelt.course.serializers import CourseSerializer
|
|
|
|
return CourseSerializer(course).data
|
|
return ""
|
|
|
|
def get_course_category(self, obj):
|
|
from vbv_lernwelt.course.serializers import CourseCategorySerializer
|
|
|
|
return CourseCategorySerializer(obj.course_category).data
|
|
|
|
def get_circles(self, obj):
|
|
circles = obj.get_circles()
|
|
|
|
if circles:
|
|
return [
|
|
{"id": c.id, "title": c.title, "translation_key": c.translation_key}
|
|
for c in circles
|
|
]
|
|
|
|
return []
|
|
|
|
|
|
def get_course_serializer_class(model, field_names=None, base_field_names=None):
|
|
return get_it_serializer_class(
|
|
model, field_names, base_field_names, CourseBaseSerializer
|
|
)
|