26 lines
1.1 KiB
Python
26 lines
1.1 KiB
Python
from rest_framework import serializers
|
|
from snippets.models import Snippet, LANG_CHOICES, STYLE_CHOICES
|
|
|
|
class SnippetSerializer(serializers.Serializer):
|
|
id = serializers.IntegerField(read_only=True)
|
|
title = serializers.CharField(required=False, allow_blank=True, max_length=100)
|
|
code = serializers.CharField(style={"base_template", "textarea.html"})
|
|
line_numbers = serializers.BooleanField()
|
|
language = serializers.ChoiceField(choices=LANG_CHOICES, default="python")
|
|
style = serializers.ChoiceField(choices=STYLE_CHOICES, default="friendly")
|
|
|
|
def create(self, validated_data):
|
|
return Snippet.objects.create(**validated_data)
|
|
|
|
def update(self, instance, validated_data):
|
|
instance.title = validated_data.get("title", instance.title)
|
|
instance.code = validated_data.get("code", instance.code)
|
|
instance.line_numbers = validated_data.get("line_numbers", instance.line_numbers)
|
|
instance.language = validated_data.get("language", instance.language)
|
|
instance.style = validated_data.get("style", instance.style)
|
|
instance.save()
|
|
|
|
return instance
|
|
|
|
|