SkoolOS/Website/api/views-back.py
Raffu Khondaker 714d85689d permissions
2020-06-14 01:15:16 -04:00

90 lines
3.7 KiB
Python

from .models import Student, Teacher, Classes, Assignment, DefFiles
from .serializers import StudentSerializer, TeacherSerializer, ClassesSerializer, AssignmentSerializer, UserSerializer
from rest_framework import generics, viewsets, permissions, response, status
from django.http import Http404
from rest_framework.views import APIView
from django.contrib.auth.models import User
from .permissions import isTeacher, IsOwnerOrReadOnly
from django.shortcuts import render, redirect
from rest_framework.parsers import JSONParser
from django.http.response import JsonResponse
from rest_framework.response import Response
from rest_framework import mixins
class StudentList(generics.ListCreateAPIView):
queryset = Student.objects.all()
serializer_class = StudentSerializer
def perform_create(self, serializer):
serializer.save(owner=self.request.user)
class StudentDetail(generics.RetrieveAPIView):
queryset = Student.objects.all()
serializer_class = StudentSerializer
permissions_classes = [permissions.IsAuthenticated, IsOwnerOrReadOnly]
class TeacherList(generics.ListCreateAPIView):
queryset = Teacher.objects.all()
serializer_class = TeacherSerializer
def perform_create(self, serializer):
if(self.request.user.groups.filter(name__in=['teachers']).exists() or self.request.user.is_superuser):
serializer.save(owner=self.request.user)
else:
print("UNAUTHORIZED POST")
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
class TeacherDetail(generics.RetrieveAPIView):
queryset = Teacher.objects.all()
serializer_class = TeacherSerializer
permissions_classes = [permissions.IsAuthenticated, IsOwnerOrReadOnly]
class ClassesList(generics.ListCreateAPIView):
queryset = Classes.objects.all()
serializer_class = ClassesSerializer
#permissions_classes = [isTeacher]
def perform_create(self, serializer):
if(self.request.user.groups.filter(name__in=['teachers']).exists() or self.request.user.is_superuser):
serializer.save(owner=self.request.user)
else:
print("UNAUTHORIZED POST")
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
# class ClassesDetail(generics.RetrieveAPIView):
# queryset = Classes.objects.all()
# serializer_class = ClassesSerializer
# # permissions_classes = [permissions.IsAuthenticated, IsOwnerOrReadOnly]
class ClassesDetail(mixins.RetrieveModelMixin,
mixins.UpdateModelMixin,
mixins.DestroyModelMixin,
generics.GenericAPIView):
queryset = Classes.objects.all()
serializer_class = ClassesSerializer
def get(self, request, *args, **kwargs):
return self.retrieve(request, *args, **kwargs)
def put(self, request, *args, **kwargs):
print(self.owner)
if(request.user == self.owner):
return self.update(request, *args, **kwargs)
def delete(self, request, *args, **kwargs):
return self.destroy(request, *args, **kwargs)
class AssignmentList(generics.ListCreateAPIView):
queryset = Assignment.objects.all()
serializer_class = AssignmentSerializer
def perform_create(self, serializer):
if(self.request.user.groups.filter(name__in=['teachers']).exists() or self.request.user.is_superuser):
serializer.save(owner=self.request.user)
else:
print("UNAUTHORIZED POST")
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
class AssignmentDetail(generics.RetrieveAPIView):
queryset = Assignment.objects.all()
serializer_class = AssignmentSerializer
permissions_classes = [permissions.IsAuthenticated, IsOwnerOrReadOnly]