46 lines
1.6 KiB
Python
46 lines
1.6 KiB
Python
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, NoteSerializer, UserSerializer
|
|
from apps.dashboard.models import Item, Note
|
|
from apps.lyric.models import User
|
|
|
|
|
|
class NoteDetailAPI(APIView):
|
|
def get(self, request, note_id):
|
|
note = get_object_or_404(Note, id=note_id)
|
|
serializer = NoteSerializer(note)
|
|
return Response(serializer.data)
|
|
|
|
class NoteItemsAPI(APIView):
|
|
def post(self, request, note_id):
|
|
note = get_object_or_404(Note, id=note_id)
|
|
serializer = ItemSerializer(data=request.data, context={"note": note})
|
|
if serializer.is_valid():
|
|
serializer.save(note=note)
|
|
return Response(serializer.data, status=201)
|
|
return Response(serializer.errors, status=400)
|
|
|
|
class NotesAPI(APIView):
|
|
def get(self, request):
|
|
notes = Note.objects.filter(owner=request.user)
|
|
serializer = NoteSerializer(notes, many=True)
|
|
return Response(serializer.data)
|
|
|
|
def post(self, request):
|
|
note = Note.objects.create(owner=request.user)
|
|
item = Item.objects.create(text=request.data.get("text", ""), note=note)
|
|
serializer = NoteSerializer(note)
|
|
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)
|