from .models import Student, Teacher, Class, Assignment, DefFiles from .serializers import StudentSerializer, TeacherSerializer, ClassSerializer, 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 rest_framework.response import Response from django.contrib.auth.models import Group class UserViewSet(viewsets.ModelViewSet): queryset = User.objects.all() serializer_class = UserSerializer permission_Class = [permissions.IsAuthenticated] class StudentViewSet(viewsets.ModelViewSet): """ API endpoint that allows users to be viewed or edited. """ queryset = Student.objects.all() serializer_class = StudentSerializer permission_Class = [permissions.IsAuthenticated, IsOwnerOrReadOnly] def perform_create(self, serializer): serializer.save(user=self.request.user) class TeacherViewSet(viewsets.ModelViewSet): """ API endpoint that allows users to be viewed or edited. """ queryset = Teacher.objects.all() serializer_class = TeacherSerializer permission_Class = [permissions.IsAuthenticated, IsOwnerOrReadOnly] def perform_create(self, serializer): serializer.save(user=self.request.user) class ClassViewSet(viewsets.ModelViewSet): """ API endpoint that allows users to be viewed or edited. """ queryset = Class.objects.all() serializer_class = ClassSerializer permission_Class = [permissions.IsAuthenticated, IsOwnerOrReadOnly] # 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 AssignmentViewSet(viewsets.ModelViewSet): """ API endpoint that allows users to be viewed or edited. """ queryset = Assignment.objects.all() serializer_class = AssignmentSerializer permission_Class = [permissions.IsAuthenticated, isTeacher, IsOwnerOrReadOnly] 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 DefFilesViewSet(viewsets.ModelViewSet): # """ # API endpoint that allows users to be viewed or edited. # """ # queryset = DefFiles.objects.all() # serializer_class = DefFilesSerializer # permissions_Class = [permissions.IsAuthenticatedOrReadOnly]