start migrating from DRF to ninja

This commit is contained in:
Ross
2023-02-27 14:49:25 +00:00
parent 6b6d909038
commit fcf22fdd73
14 changed files with 215 additions and 49 deletions
+22 -5
View File
@@ -1,10 +1,14 @@
from typing import List
from django.shortcuts import get_object_or_404
from ninja import ModelSchema, Router
from .models import Rapid
from .models import Rapid, Exam
from .decorators import user_is_author_or_rapid_checker
from django.core.exceptions import PermissionDenied
from generic.decorators import check_user_in_group
from generic.constants import Group
from ninja.security import django_auth
router = Router()
@@ -19,6 +23,11 @@ class RapidSchema(ModelSchema):
#model_exclude = ["answers"]
class ExamSchema(ModelSchema):
class Config:
model = Exam
model_fields = ["id", "name", "active", "publish_results"]
@router.get('/')
def list_rapids(request):
@@ -28,10 +37,18 @@ def list_rapids(request):
]
@router.get('/question/{question_id}', response=RapidSchema)
@check_user_in_group(Group.cid_user_manager)
def get_rapid_details(request, question_id: int):
print(request.user)
#if not request.user.is_superuser:
# raise PermissionDenied
rapid = get_object_or_404(Rapid, id=question_id)
return rapid
return rapid
@router.get('/user_exams', response=List[ExamSchema], url_name="rapids_user_exams")
def user_exams(request):
"""Returns a list of exams that the user has access to"""
user = request.user
if user.groups.filter(name="rapid_checker").exists():
return Exam.objects.filter(archive=False).order_by('name')
return Exam.objects.filter(author__id=user.id, archive=False).order_by('name')