Files
e-trznice/backend/servicedesk/serializers.py
2025-10-02 00:54:34 +02:00

48 lines
2.2 KiB
Python

from rest_framework import serializers
from .models import ServiceTicket
from account.models import CustomUser
class ServiceTicketSerializer(serializers.ModelSerializer):
class Meta:
model = ServiceTicket
fields = [
"id", "title", "description", "user",
"status", "category", "created_at"
]
read_only_fields = ["id", "created_at"]
extra_kwargs = {
"title": {"help_text": "Stručný název požadavku", "required": True},
"description": {"help_text": "Detailní popis problému", "required": False},
"user": {"help_text": "ID uživatele, který požadavek zadává", "required": True},
"status": {"help_text": "Stav požadavku (new / in_progress / resolved / closed)", "required": False},
"category": {"help_text": "Kategorie požadavku (tech / reservation / payment / account / content / suggestion / other)", "required": True},
}
def validate(self, data):
user = data.get("user", None)
# if user is None:
# raise serializers.ValidationError("Product is a required field.")
# # Check if user exists in DB
# if not CustomUser.objects.filter(pk=user.pk if hasattr(user, 'pk') else user).exists():
# raise serializers.ValidationError("Neplatné ID Užívatele.")
# Example validation: status must be one of the defined choices
if "status" in data and data["status"] not in dict(ServiceTicket.STATUS_CHOICES):
raise serializers.ValidationError({"status": "Neplatný stav požadavku."})
if "category" in data and data["category"] not in dict(ServiceTicket.CATEGORY_CHOICES):
raise serializers.ValidationError({"category": "Neplatná kategorie požadavku."})
title = data.get("title", "").strip()
if not title:
raise serializers.ValidationError("Název požadavku nemůže být prázdný.")
if len(title) > 255:
raise serializers.ValidationError("Název požadavku nemůže být delší než 255 znaků.")
data["title"] = title # Optional: overwrite with trimmed version
return data