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