stage starting django ninja

This commit is contained in:
Ross
2023-02-27 11:24:08 +00:00
parent 732ba1b25b
commit bf670d355f
6 changed files with 72 additions and 24 deletions
+13
View File
@@ -0,0 +1,13 @@
from ninja import NinjaAPI
from rapids.api import router as rapids_router
api = NinjaAPI(csrf=True)
api.add_router("/rapid/", rapids_router)
@api.get("/hello")
def hello(request):
return "Hello world"
+12 -9
View File
@@ -33,25 +33,28 @@ from rest_framework import routers
from django.conf.urls import handler400, handler403, handler404, handler500
router = routers.DefaultRouter()
router.register(r"rapids/exams", rapid_views.ExamViewSet, basename="rapid-exam")
router.register(r"anatomy/exams", anatomy_views.ExamViewSet, basename="anatomy-exam")
router.register(r"longs/exams", long_views.ExamViewSet, basename="long-exam")
router.register(
from .api import api
router_drf = routers.DefaultRouter()
router_drf.register(r"rapids/exams", rapid_views.ExamViewSet, basename="rapid-exam")
router_drf.register(r"anatomy/exams", anatomy_views.ExamViewSet, basename="anatomy-exam")
router_drf.register(r"longs/exams", long_views.ExamViewSet, basename="long-exam")
router_drf.register(
r"rapids/answers",
rapid_views.QuestionAnswerViewSet,
basename="rapid-question-answers",
)
router.register(
router_drf.register(
r"rapids/user_answer",
rapid_views.UserAnswerViewSet,
basename="rapid-question-answers",
)
router.register(r"rapids", rapid_views.RapidViewSet, basename="rapid")
# router.register(r'rapids/laterality', rapid_views.RapidLateralityViewSet, basename="rapid")
router_drf.register(r"rapids", rapid_views.RapidViewSet, basename="rapid")
urlpatterns = [
path("admin/", admin.site.urls, name="admin"),
path("api/", api.urls),
path("anatomy/", include("anatomy.urls"), name="anatomy"),
path("physics/", include("physics.urls"), name="physics"),
# path("sbas/", include("sbas.urls"), name="sbas"),
@@ -139,7 +142,7 @@ urlpatterns = [
name="answer_suggestion_confirm",
),
path("feedback/view", views.view_feedback, name="view_feedback"),
path("api/", include(router.urls)),
path("api/", include(router_drf.urls)),
path("api-auth/", include("rest_framework.urls")),
path("tinymce/", include("tinymce.urls")),
path("cookies/", include("cookie_consent.urls")),
+37
View File
@@ -0,0 +1,37 @@
from django.shortcuts import get_object_or_404
from ninja import ModelSchema, Router
from .models import Rapid
from .decorators import user_is_author_or_rapid_checker
from django.core.exceptions import PermissionDenied
from ninja.security import django_auth
router = Router()
class RapidSchema(ModelSchema):
class Config:
model = Rapid
#model_fields = ["question", "history", "feedback", "normal", "laterality"]
model_fields = "__all__"
#model_exclude = ["answers"]
@router.get('/')
def list_rapids(request):
return [
{"id": e.id, "normal": e.normal}
for e in Rapid.objects.all()
]
@router.get('/question/{question_id}', response=RapidSchema)
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
+8 -1
View File
@@ -3,7 +3,14 @@ from .models import Exam, Rapid
def user_is_author_or_rapid_checker(function):
def wrap(request, *args, **kwargs):
question = Rapid.objects.get(pk=kwargs['pk'])
if "pk" in kwargs:
question_id = kwargs["pk"]
elif "question_id" in kwargs:
question_id = kwargs["question_id"]
else:
raise PermissionDenied
question = Rapid.objects.get(pk=question_id)
if request.user in question.author.all() or request.user.groups.filter(name='rapid_checker').exists():
return function(request, *args, **kwargs)
else:
-13
View File
@@ -789,19 +789,6 @@ class RapidViewSet(
pagination_class = StandardResultsSetPagination
class RapidLateralityViewSet(
RevisionMixin,
mixins.CreateModelMixin,
mixins.RetrieveModelMixin,
mixins.UpdateModelMixin,
mixins.ListModelMixin,
viewsets.GenericViewSet,
):
queryset = Rapid.objects.all() # .order_by('name')
serializer_class = RapidLateralitySerializer
permission_classes = [permissions.IsAuthenticated]
pagination_class = StandardResultsSetPagination
# class AddSuggestedAnswer(LoginRequiredMixin, CreateView):
# model = QuestionNote
+1
View File
@@ -35,3 +35,4 @@ django-htmx
debugpy
git+https://github.com/jazzband/django-cookie-consent#django-cookie-consent
django-crispy-forms
django-ninja