mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-27 11:47:04 -05:00
feat: Introduce lists and reviews apps, refactor user list functionality from accounts, and add user profile fields.
This commit is contained in:
57
backend/apps/lists/serializers.py
Normal file
57
backend/apps/lists/serializers.py
Normal file
@@ -0,0 +1,57 @@
|
||||
from rest_framework import serializers
|
||||
from .models import UserList, ListItem
|
||||
from apps.accounts.serializers import UserSerializer
|
||||
|
||||
class ListItemSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = ListItem
|
||||
fields = [
|
||||
"id",
|
||||
"user_list",
|
||||
"content_type",
|
||||
"object_id",
|
||||
"rank",
|
||||
"notes",
|
||||
"created_at",
|
||||
"updated_at",
|
||||
"content_object_data",
|
||||
]
|
||||
read_only_fields = ["id", "created_at", "updated_at"]
|
||||
|
||||
content_object_data = serializers.SerializerMethodField()
|
||||
|
||||
def get_content_object_data(self, obj):
|
||||
"""
|
||||
Return serialized data for the content object (Park or Ride).
|
||||
"""
|
||||
# Avoid circular imports
|
||||
from apps.api.v1.parks.serializers import ParkListSerializer
|
||||
from apps.api.v1.rides.serializers import RideListSerializer
|
||||
from apps.parks.models import Park
|
||||
from apps.rides.models import Ride
|
||||
|
||||
if isinstance(obj.content_object, Park):
|
||||
return ParkListSerializer(obj.content_object, context=self.context).data
|
||||
elif isinstance(obj.content_object, Ride):
|
||||
return RideListSerializer(obj.content_object, context=self.context).data
|
||||
return None
|
||||
|
||||
|
||||
class UserListSerializer(serializers.ModelSerializer):
|
||||
user = UserSerializer(read_only=True)
|
||||
items = ListItemSerializer(many=True, read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = UserList
|
||||
fields = [
|
||||
"id",
|
||||
"user",
|
||||
"title",
|
||||
"category",
|
||||
"description",
|
||||
"is_public",
|
||||
"items",
|
||||
"created_at",
|
||||
"updated_at",
|
||||
]
|
||||
read_only_fields = ["id", "user", "created_at", "updated_at"]
|
||||
Reference in New Issue
Block a user