from django.shortcuts import get_object_or_404 from rest_framework import serializers from tickets.models import Ticket class BaseTicketSerializer(serializers.ModelSerializer): def validate(self, data): user = self.context['request'].user if not (user.is_superuser or data["ticket_list"].group in user.groups.all()): raise serializers.ValidationError("You don't have access to this list.") return data class TicketSerializer(BaseTicketSerializer): status = serializers.IntegerField(read_only=True) note = serializers.CharField(write_only=True, required=False) class Meta(): model = Ticket exclude = ["updated_at"] class TicketDetailSerializer(BaseTicketSerializer): available_statuses = serializers.SerializerMethodField() def get_available_statuses(self, obj): return obj.get_available_statuses() class Meta(): model = Ticket fields = "__all__"