diff --git a/server/vbv_lernwelt/self_evaluation_feedback/tests/test_api.py b/server/vbv_lernwelt/self_evaluation_feedback/tests/test_api.py index e3fe6940..5cbbff04 100644 --- a/server/vbv_lernwelt/self_evaluation_feedback/tests/test_api.py +++ b/server/vbv_lernwelt/self_evaluation_feedback/tests/test_api.py @@ -211,6 +211,57 @@ class SelfEvaluationFeedbackAPI(APITestCase): CourseCompletionStatus.UNKNOWN.value, ) + def test_self_evaluation_feedback_assessment(self): + # GIVEN + learning_unit = create_learning_unit(course=self.course, circle=self.circle) + + performance_criteria_1 = create_performance_criteria_page( + course=self.course, + course_page=self.course_page, + circle=self.circle, + learning_unit=learning_unit, + ) + + completion = mark_course_completion( + page=performance_criteria_1, + user=self.member, + course_session=self.course_session, + completion_status=CourseCompletionStatus.SUCCESS.value, + ) + + self_evaluation_feedback = create_self_evaluation_feedback( + learning_unit=learning_unit, + feedback_requester_user=self.member, + feedback_provider_user=self.mentor, + ) + + self.client.force_login(self.mentor) + + # WHEN + response = self.client.put( + reverse( + "add_self_evaluation_feedback_assessment", + args=[self_evaluation_feedback.id], + ), + { + "course_completion_id": completion.id, + "feedback_assessment": CourseCompletionStatus.FAIL.value, + }, + ) + + # THEN + self.assertEqual(response.status_code, 200) + self.assertEqual(response.data["success"], True) + + feedback = CourseCompletionFeedback.objects.get( + feedback=self_evaluation_feedback, + course_completion=completion, + ) + + self.assertEqual( + feedback.feedback_assessment, CourseCompletionStatus.FAIL.value + ) + def test_submit_self_evaluation_feedback(self): # GIVEN learning_unit = create_learning_unit(course=self.course, circle=self.circle) diff --git a/server/vbv_lernwelt/self_evaluation_feedback/urls.py b/server/vbv_lernwelt/self_evaluation_feedback/urls.py index 3f05b935..bf81e809 100644 --- a/server/vbv_lernwelt/self_evaluation_feedback/urls.py +++ b/server/vbv_lernwelt/self_evaluation_feedback/urls.py @@ -1,26 +1,26 @@ from django.urls import path from vbv_lernwelt.self_evaluation_feedback.views import ( + add_provider_self_evaluation_feedback, get_provider_self_evaluation_feedback, + submit_provider_self_evaluation_feedback, start_self_evaluation_feedback, - add_self_evaluation_feedback_assessment, - submit_self_evaluation_feedback, ) urlpatterns = [ path( - "feedback/start", + "requester/feedback/start", start_self_evaluation_feedback, name="start_self_evaluation_feedback", ), path( - "feedback//submit", - submit_self_evaluation_feedback, + "provider/feedback//submit", + submit_provider_self_evaluation_feedback, name="submit_self_evaluation_feedback", ), path( - "feedback//add-feedback-assessment", - add_self_evaluation_feedback_assessment, + "provider/feedback//add-assessment", + add_provider_self_evaluation_feedback, name="add_self_evaluation_feedback_assessment", ), path( diff --git a/server/vbv_lernwelt/self_evaluation_feedback/views.py b/server/vbv_lernwelt/self_evaluation_feedback/views.py index e60c2cd2..3f9a352d 100644 --- a/server/vbv_lernwelt/self_evaluation_feedback/views.py +++ b/server/vbv_lernwelt/self_evaluation_feedback/views.py @@ -5,9 +5,13 @@ from rest_framework.permissions import IsAuthenticated from rest_framework.response import Response from vbv_lernwelt.core.models import User +from vbv_lernwelt.course.models import CourseCompletion 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.models import ( + SelfEvaluationFeedback, + CourseCompletionFeedback, +) from vbv_lernwelt.self_evaluation_feedback.serializers import ( SelfEvaluationFeedbackSerializer, ) @@ -42,7 +46,7 @@ def start_self_evaluation_feedback(request): @api_view(["PUT"]) @permission_classes([IsAuthenticated]) -def submit_self_evaluation_feedback(request, feedback_id): +def submit_provider_self_evaluation_feedback(request, feedback_id): feedback = get_object_or_404( SelfEvaluationFeedback, id=feedback_id, feedback_provider_user=request.user ) @@ -65,19 +69,30 @@ def get_provider_self_evaluation_feedback(request, feedback_id): @api_view(["PUT"]) @permission_classes([IsAuthenticated]) -def add_self_evaluation_feedback_assessment(request, feedback_id): +def add_provider_self_evaluation_feedback(request, feedback_id): + feedback_assessment = request.data.get("feedback_assessment") + feedback = get_object_or_404( SelfEvaluationFeedback, id=feedback_id, feedback_provider_user=request.user ) - feedback_assessment = request.data.get("feedback_assessment") + course_completion = get_object_or_404( + CourseCompletion, + id=request.data.get("course_completion_id"), + user=feedback.feedback_requester_user, + ) - # TODO @livioso continue here + ( + course_completion_feedback, + created, + ) = CourseCompletionFeedback.objects.get_or_create( + feedback=feedback, + course_completion=course_completion, + defaults={"feedback_assessment": feedback_assessment}, + ) - # CourseCompletionFeedback.objects.get_or_create( - # feedback=feedback, - # course_completion=feedback.learning_unit.performancecriteria_set.first(), - # defaults={"feedback_assessment": feedback_assessment}, - # ) + if not created: + course_completion_feedback.feedback_assessment = feedback_assessment + course_completion_feedback.save() return Response({"success": True})