feat: API for feedback provider to add feedback

This commit is contained in:
Livio Bieri 2024-01-23 11:19:20 +01:00
parent a8b25ec216
commit d2352d6166
3 changed files with 83 additions and 17 deletions

View File

@ -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)

View File

@ -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/<int:feedback_id>/submit",
submit_self_evaluation_feedback,
"provider/feedback/<int:feedback_id>/submit",
submit_provider_self_evaluation_feedback,
name="submit_self_evaluation_feedback",
),
path(
"feedback/<int:feedback_id>/add-feedback-assessment",
add_self_evaluation_feedback_assessment,
"provider/feedback/<int:feedback_id>/add-assessment",
add_provider_self_evaluation_feedback,
name="add_self_evaluation_feedback_assessment",
),
path(

View File

@ -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})