from django.shortcuts import get_object_or_404 from rest_framework.views import APIView from rest_framework.response import Response from apps.api.serializers import ItemSerializer, ListSerializer, UserSerializer from apps.dashboard.models import Item, List from apps.lyric.models import User 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) serializer = ItemSerializer(data=request.data, context={"list": list_}) 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) 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)