2026-02-20 16:37:48 -05:00
|
|
|
from django.shortcuts import get_object_or_404
|
|
|
|
|
from rest_framework.views import APIView
|
|
|
|
|
from rest_framework.response import Response
|
|
|
|
|
|
2026-03-01 21:44:30 -05:00
|
|
|
from apps.api.serializers import ItemSerializer, ListSerializer, UserSerializer
|
2026-02-20 16:37:48 -05:00
|
|
|
from apps.dashboard.models import Item, List
|
2026-03-01 21:44:30 -05:00
|
|
|
from apps.lyric.models import User
|
2026-02-20 16:37:48 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
class ListDetailAPI(APIView):
|
|
|
|
|
def get(self, request, list_id):
|
|
|
|
|
list_ = get_object_or_404(List, id=list_id)
|
|
|
|
|
serializer = ListSerializer(list_)
|
|
|
|
|
return Response(serializer.data)
|
|
|
|
|
|
|
|
|
|
class ListItemsAPI(APIView):
|
|
|
|
|
def post(self, request, list_id):
|
|
|
|
|
list_ = get_object_or_404(List, id=list_id)
|
2026-03-04 13:40:19 -05:00
|
|
|
serializer = ItemSerializer(data=request.data, context={"list": list_})
|
2026-02-20 16:37:48 -05:00
|
|
|
if serializer.is_valid():
|
|
|
|
|
serializer.save(list=list_)
|
|
|
|
|
return Response(serializer.data, status=201)
|
|
|
|
|
return Response(serializer.errors, status=400)
|
|
|
|
|
|
|
|
|
|
class ListsAPI(APIView):
|
|
|
|
|
def get(self, request):
|
|
|
|
|
lists = List.objects.filter(owner=request.user)
|
|
|
|
|
serializer = ListSerializer(lists, many=True)
|
|
|
|
|
return Response(serializer.data)
|
|
|
|
|
|
|
|
|
|
def post(self, request):
|
|
|
|
|
list_ = List.objects.create(owner=request.user)
|
|
|
|
|
item = Item.objects.create(text=request.data.get("text", ""), list=list_)
|
|
|
|
|
serializer = ListSerializer(list_)
|
|
|
|
|
return Response(serializer.data, status=201)
|
2026-03-01 21:44:30 -05:00
|
|
|
|
|
|
|
|
class UserSearchAPI(APIView):
|
|
|
|
|
def get(self, request):
|
|
|
|
|
q = request.query_params.get("q", "")
|
|
|
|
|
users = User.objects.filter(
|
|
|
|
|
username__icontains=q,
|
|
|
|
|
searchable=True,
|
|
|
|
|
)
|
|
|
|
|
serializer = UserSerializer(users, many=True)
|
|
|
|
|
return Response(serializer.data)
|