vbv/server/vbv_lernwelt/self_evaluation_feedback/views.py

84 lines
2.7 KiB
Python

from django.shortcuts import get_object_or_404
from rest_framework.decorators import api_view, permission_classes
from rest_framework.exceptions import PermissionDenied
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
from vbv_lernwelt.core.models import User
from vbv_lernwelt.learning_mentor.models import LearningMentor
from vbv_lernwelt.learnpath.models import LearningUnit
from vbv_lernwelt.self_evaluation_feedback.models import SelfEvaluationFeedback
from vbv_lernwelt.self_evaluation_feedback.serializers import (
SelfEvaluationFeedbackSerializer,
)
@api_view(["POST"])
@permission_classes([IsAuthenticated])
def start_self_evaluation_feedback(request):
learning_unit_id = request.data.get("learning_unit_id")
feedback_provider_user_id = request.data.get("feedback_provider_user_id")
learning_unit = get_object_or_404(LearningUnit, id=learning_unit_id)
feedback_provider_user = get_object_or_404(User, id=feedback_provider_user_id)
if not LearningMentor.objects.filter(
course=learning_unit.get_course(),
mentor=feedback_provider_user,
participants__user=request.user,
).exists():
raise PermissionDenied()
SelfEvaluationFeedback.objects.create(
feedback_requester_user=request.user,
feedback_provider_user=feedback_provider_user,
learning_unit=learning_unit,
)
# TODO: Create notification for feedback_provider_user
return Response({"success": True})
@api_view(["PUT"])
@permission_classes([IsAuthenticated])
def submit_self_evaluation_feedback(request, feedback_id):
feedback = get_object_or_404(
SelfEvaluationFeedback, id=feedback_id, feedback_provider_user=request.user
)
feedback.feedback_submitted = True
feedback.save()
return Response({"success": True})
@api_view(["GET"])
@permission_classes([IsAuthenticated])
def get_provider_self_evaluation_feedback(request, feedback_id):
feedback = get_object_or_404(
SelfEvaluationFeedback, id=feedback_id, feedback_provider_user=request.user
)
return Response(SelfEvaluationFeedbackSerializer(feedback).data)
@api_view(["PUT"])
@permission_classes([IsAuthenticated])
def add_self_evaluation_feedback_assessment(request, feedback_id):
feedback = get_object_or_404(
SelfEvaluationFeedback, id=feedback_id, feedback_provider_user=request.user
)
feedback_assessment = request.data.get("feedback_assessment")
# TODO @livioso continue here
# CourseCompletionFeedback.objects.get_or_create(
# feedback=feedback,
# course_completion=feedback.learning_unit.performancecriteria_set.first(),
# defaults={"feedback_assessment": feedback_assessment},
# )
return Response({"success": True})