mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2026-02-05 09:25:18 -05:00
lol
This commit is contained in:
@@ -208,6 +208,9 @@ class RideDetailOutputSerializer(serializers.Serializer):
|
||||
banner_image = serializers.SerializerMethodField()
|
||||
card_image = serializers.SerializerMethodField()
|
||||
|
||||
# Former names (name history)
|
||||
former_names = serializers.SerializerMethodField()
|
||||
|
||||
# URL
|
||||
url = serializers.SerializerMethodField()
|
||||
|
||||
@@ -406,6 +409,24 @@ class RideDetailOutputSerializer(serializers.Serializer):
|
||||
|
||||
return None
|
||||
|
||||
@extend_schema_field(serializers.ListField(child=serializers.DictField()))
|
||||
def get_former_names(self, obj):
|
||||
"""Get the former names (name history) for this ride."""
|
||||
from apps.rides.models import RideNameHistory
|
||||
|
||||
former_names = RideNameHistory.objects.filter(ride=obj).order_by("-to_year", "-from_year")
|
||||
|
||||
return [
|
||||
{
|
||||
"id": entry.id,
|
||||
"former_name": entry.former_name,
|
||||
"from_year": entry.from_year,
|
||||
"to_year": entry.to_year,
|
||||
"reason": entry.reason,
|
||||
}
|
||||
for entry in former_names
|
||||
]
|
||||
|
||||
|
||||
class RideImageSettingsInputSerializer(serializers.Serializer):
|
||||
"""Input serializer for setting ride banner and card images."""
|
||||
@@ -841,3 +862,37 @@ class RideReviewUpdateInputSerializer(serializers.Serializer):
|
||||
if value and value > timezone.now().date():
|
||||
raise serializers.ValidationError("Visit date cannot be in the future")
|
||||
return value
|
||||
|
||||
|
||||
# === RIDE NAME HISTORY SERIALIZERS ===
|
||||
|
||||
|
||||
class RideNameHistoryOutputSerializer(serializers.Serializer):
|
||||
"""Output serializer for ride name history (former names)."""
|
||||
|
||||
id = serializers.IntegerField()
|
||||
former_name = serializers.CharField()
|
||||
from_year = serializers.IntegerField(allow_null=True)
|
||||
to_year = serializers.IntegerField(allow_null=True)
|
||||
reason = serializers.CharField()
|
||||
created_at = serializers.DateTimeField()
|
||||
|
||||
|
||||
class RideNameHistoryCreateInputSerializer(serializers.Serializer):
|
||||
"""Input serializer for creating ride name history entries."""
|
||||
|
||||
former_name = serializers.CharField(max_length=200)
|
||||
from_year = serializers.IntegerField(required=False, allow_null=True, min_value=1800, max_value=2100)
|
||||
to_year = serializers.IntegerField(required=False, allow_null=True, min_value=1800, max_value=2100)
|
||||
reason = serializers.CharField(max_length=500, required=False, allow_blank=True, default="")
|
||||
|
||||
def validate(self, attrs):
|
||||
"""Validate year range."""
|
||||
from_year = attrs.get("from_year")
|
||||
to_year = attrs.get("to_year")
|
||||
|
||||
if from_year and to_year and from_year > to_year:
|
||||
raise serializers.ValidationError("From year cannot be after to year")
|
||||
|
||||
return attrs
|
||||
|
||||
|
||||
Reference in New Issue
Block a user