36 lines
976 B
Python
36 lines
976 B
Python
import json
|
|
|
|
from rest_framework import serializers
|
|
|
|
from books.schema.mutations.utils import handle_content_block
|
|
from rooms.models import Room, RoomEntry
|
|
|
|
|
|
class ContentsSerializer(serializers.Field):
|
|
def to_internal_value(self, data):
|
|
return json.dumps(list(map(handle_content_block, data)))
|
|
|
|
|
|
class RoomSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = Room
|
|
fields = ('id', 'title', 'description', 'slug', 'user_group', 'appearance',)
|
|
read_only_fields = ('id', 'slug',)
|
|
|
|
|
|
class RoomEntrySerializer(serializers.ModelSerializer):
|
|
contents = ContentsSerializer()
|
|
|
|
class Meta:
|
|
model = RoomEntry
|
|
fields = ('room', 'author', 'subtitle', 'title', 'contents')
|
|
read_only_fields = ('id', 'slug',)
|
|
|
|
def validate_contents(self, value):
|
|
return value
|
|
|
|
def create(self, validated_data):
|
|
room_entry = RoomEntry(**validated_data)
|
|
room_entry.save()
|
|
return room_entry
|