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