Files
PeerNotes/backend/api/views.py

102 lines
3.4 KiB
Python
Raw Normal View History

2024-03-26 14:07:05 -04:00
from api.models import Course, File, Professor, Semester, Topic
from api.serializers import (
CourseSerializer,
FileSerializer,
ProfessorSerializer,
SemesterSerializer,
TopicSerializer,
)
from django.contrib.auth import authenticate
2024-03-26 14:07:05 -04:00
from rest_framework import generics, status
from rest_framework.authentication import TokenAuthentication
from rest_framework.authtoken.models import Token
2024-03-26 14:07:05 -04:00
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
from rest_framework.views import APIView
from rest_framework import filters
class TopicListCreateAPIView(generics.ListCreateAPIView):
queryset = Topic.objects.all()
serializer_class = TopicSerializer
authentication_classes = [TokenAuthentication]
permission_classes = [IsAuthenticated]
filter_backends = [filters.SearchFilter]
search_fields = ["name"]
class TopicDetailAPIView(generics.RetrieveUpdateDestroyAPIView):
queryset = Topic.objects.all()
serializer_class = TopicSerializer
authentication_classes = [TokenAuthentication]
permission_classes = [IsAuthenticated]
class ProfessorListCreateAPIView(generics.ListCreateAPIView):
queryset = Professor.objects.all()
serializer_class = ProfessorSerializer
authentication_classes = [TokenAuthentication]
permission_classes = [IsAuthenticated]
filter_backends = [filters.SearchFilter]
search_fields = ["name"]
class ProfessorDetailAPIView(generics.RetrieveUpdateDestroyAPIView):
queryset = Professor.objects.all()
serializer_class = ProfessorSerializer
authentication_classes = [TokenAuthentication]
permission_classes = [IsAuthenticated]
class SemesterListCreateAPIView(generics.ListCreateAPIView):
queryset = Semester.objects.all()
serializer_class = SemesterSerializer
authentication_classes = [TokenAuthentication]
permission_classes = [IsAuthenticated]
filter_backends = [filters.SearchFilter]
search_fields = ["name"]
class SemesterDetailAPIView(generics.RetrieveUpdateDestroyAPIView):
queryset = Semester.objects.all()
serializer_class = SemesterSerializer
authentication_classes = [TokenAuthentication]
permission_classes = [IsAuthenticated]
def delete(self, request, *args, **kwargs):
instance = self.get_object()
self.perform_destroy(instance)
return Response(status=status.HTTP_204_NO_CONTENT)
class CourseListCreateAPIView(generics.ListCreateAPIView):
queryset = Course.objects.all()
serializer_class = CourseSerializer
authentication_classes = [TokenAuthentication]
permission_classes = [IsAuthenticated]
filter_backends = [filters.SearchFilter]
search_fields = ["name"]
class CourseDetailAPIView(generics.RetrieveUpdateDestroyAPIView):
queryset = Course.objects.all()
serializer_class = CourseSerializer
authentication_classes = [TokenAuthentication]
permission_classes = [IsAuthenticated]
class FileListCreateAPIView(generics.ListCreateAPIView):
queryset = File.objects.all()
serializer_class = FileSerializer
authentication_classes = [TokenAuthentication]
permission_classes = [IsAuthenticated]
filter_backends = [filters.SearchFilter]
search_fields = ["name"]
class FileDetailAPIView(generics.RetrieveUpdateDestroyAPIView):
queryset = File.objects.all()
serializer_class = FileSerializer
authentication_classes = [TokenAuthentication]
permission_classes = [IsAuthenticated]