mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-28 11:27:04 -05:00
34 lines
1.1 KiB
Python
34 lines
1.1 KiB
Python
from rest_framework import serializers
|
|
from .models import Ticket
|
|
from apps.accounts.serializers import UserSerializer
|
|
|
|
class TicketSerializer(serializers.ModelSerializer):
|
|
user = UserSerializer(read_only=True)
|
|
category_display = serializers.CharField(source='get_category_display', read_only=True)
|
|
status_display = serializers.CharField(source='get_status_display', read_only=True)
|
|
|
|
class Meta:
|
|
model = Ticket
|
|
fields = [
|
|
"id",
|
|
"user",
|
|
"category",
|
|
"category_display",
|
|
"subject",
|
|
"message",
|
|
"email",
|
|
"status",
|
|
"status_display",
|
|
"created_at",
|
|
"updated_at",
|
|
]
|
|
read_only_fields = ["id", "status", "created_at", "updated_at", "user"]
|
|
|
|
def validate(self, data):
|
|
# Ensure email is provided if user is anonymous
|
|
request = self.context.get('request')
|
|
if request and not request.user.is_authenticated and not data.get('email'):
|
|
raise serializers.ValidationError({"email": "Email is required for guests."})
|
|
return data
|
|
|