25 lines
785 B
Python
25 lines
785 B
Python
import wagtail.api.v2.serializers as wagtail_serializers
|
|
from rest_framework.fields import SerializerMethodField
|
|
|
|
from vbv_lernwelt.learnpath.utils import get_wagtail_type
|
|
|
|
|
|
def get_it_serializer_class(model, field_names):
|
|
return wagtail_serializers.get_serializer_class(model, field_names=field_names, meta_fields=[], base=ItBaseSerializer)
|
|
|
|
|
|
class ItTypeField(wagtail_serializers.TypeField):
|
|
def to_representation(self, obj):
|
|
name = get_wagtail_type(obj)
|
|
return name
|
|
|
|
|
|
class ItBaseSerializer(wagtail_serializers.BaseSerializer):
|
|
type = ItTypeField(read_only=True)
|
|
children = SerializerMethodField()
|
|
|
|
meta_fields = []
|
|
|
|
def get_children(self, obj):
|
|
return [c.specific.get_serializer_class()(c.specific).data for c in obj.get_children()]
|