wip: API for feedback provider to add assessment
This commit is contained in:
parent
8bf762173a
commit
8eee03cb69
|
|
@ -21,18 +21,23 @@ class SelfEvaluationFeedbackSerializer(serializers.ModelSerializer):
|
|||
feedback_id = serializers.PrimaryKeyRelatedField(
|
||||
read_only=True, source="course_completion_feedback"
|
||||
)
|
||||
circle_name = serializers.SerializerMethodField()
|
||||
|
||||
class Meta:
|
||||
model = SelfEvaluationFeedback
|
||||
fields = [
|
||||
"feedback_id",
|
||||
"learning_unit_id",
|
||||
"circle_name",
|
||||
"feedback_submitted",
|
||||
"feedback_requester_user",
|
||||
"feedback_provider_user",
|
||||
"criteria",
|
||||
]
|
||||
|
||||
def get_circle_name(self, obj):
|
||||
return obj.learning_unit.get_circle().title
|
||||
|
||||
def get_criteria(self, obj):
|
||||
performance_criteria: List[
|
||||
PerformanceCriteria
|
||||
|
|
|
|||
|
|
@ -120,7 +120,7 @@ class SelfEvaluationFeedbackAPI(APITestCase):
|
|||
# THEN
|
||||
self.assertEqual(response.status_code, 403)
|
||||
|
||||
def test_list_self_evaluation_feedback_provider(self):
|
||||
def test_get_provider_self_evaluation_feedback(self):
|
||||
# GIVEN
|
||||
learning_unit = create_learning_unit(course=self.course, circle=self.circle)
|
||||
|
||||
|
|
@ -145,14 +145,14 @@ class SelfEvaluationFeedbackAPI(APITestCase):
|
|||
completion_status=CourseCompletionStatus.SUCCESS.value,
|
||||
)
|
||||
|
||||
feedback = create_self_evaluation_feedback(
|
||||
self_evaluation_feedback = create_self_evaluation_feedback(
|
||||
learning_unit=learning_unit,
|
||||
feedback_requester_user=self.member,
|
||||
feedback_provider_user=self.mentor,
|
||||
)
|
||||
|
||||
CourseCompletionFeedback.objects.create(
|
||||
feedback=feedback,
|
||||
feedback=self_evaluation_feedback,
|
||||
course_completion=completion,
|
||||
feedback_assessment=CourseCompletionStatus.FAIL.value,
|
||||
)
|
||||
|
|
@ -160,29 +160,36 @@ class SelfEvaluationFeedbackAPI(APITestCase):
|
|||
self.client.force_login(self.mentor)
|
||||
|
||||
# WHEN
|
||||
response = self.client.get(reverse("list_self_evaluation_feedbacks_provider"))
|
||||
response = self.client.get(
|
||||
reverse(
|
||||
"get_provider_self_evaluation_feedback",
|
||||
args=[self_evaluation_feedback.id],
|
||||
)
|
||||
)
|
||||
|
||||
# THEN
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
self.assertEqual(len(response.data), 1)
|
||||
self.assertEqual(response.data[0]["learning_unit_id"], learning_unit.id)
|
||||
feedback = response.data
|
||||
self.assertEqual(feedback["learning_unit_id"], learning_unit.id)
|
||||
self.assertEqual(feedback["feedback_submitted"], False)
|
||||
self.assertEqual(feedback["circle_name"], self.circle.title)
|
||||
|
||||
provider_user = response.data[0]["feedback_provider_user"]
|
||||
provider_user = feedback["feedback_provider_user"]
|
||||
self.assertEqual(provider_user["id"], str(self.mentor.id)) # noqa
|
||||
self.assertEqual(provider_user["first_name"], self.mentor.first_name)
|
||||
self.assertEqual(provider_user["last_name"], self.mentor.last_name)
|
||||
self.assertEqual(provider_user["avatar_url"], self.mentor.avatar_url)
|
||||
|
||||
requester_user = response.data[0]["feedback_requester_user"]
|
||||
requester_user = feedback["feedback_requester_user"]
|
||||
self.assertEqual(requester_user["id"], str(self.member.id)) # noqa
|
||||
self.assertEqual(requester_user["first_name"], self.member.first_name)
|
||||
self.assertEqual(requester_user["last_name"], self.member.last_name)
|
||||
self.assertEqual(requester_user["avatar_url"], self.member.avatar_url)
|
||||
|
||||
self.assertEqual(len(response.data[0]["criteria"]), 2)
|
||||
self.assertEqual(len(feedback["criteria"]), 2)
|
||||
|
||||
first_criteria = response.data[0]["criteria"][0]
|
||||
first_criteria = feedback["criteria"][0]
|
||||
self.assertEqual(first_criteria["course_completion_id"], completion.id)
|
||||
self.assertEqual(first_criteria["title"], performance_criteria_1.title)
|
||||
self.assertEqual(
|
||||
|
|
@ -193,7 +200,7 @@ class SelfEvaluationFeedbackAPI(APITestCase):
|
|||
first_criteria["feedback_assessment"], CourseCompletionStatus.FAIL.value
|
||||
)
|
||||
|
||||
second_criteria = response.data[0]["criteria"][1]
|
||||
second_criteria = feedback["criteria"][1]
|
||||
self.assertEqual(second_criteria["course_completion_id"], None)
|
||||
self.assertEqual(second_criteria["title"], performance_criteria_1.title)
|
||||
self.assertEqual(
|
||||
|
|
@ -203,3 +210,32 @@ class SelfEvaluationFeedbackAPI(APITestCase):
|
|||
second_criteria["feedback_assessment"],
|
||||
CourseCompletionStatus.UNKNOWN.value,
|
||||
)
|
||||
|
||||
def test_submit_self_evaluation_feedback(self):
|
||||
# GIVEN
|
||||
learning_unit = create_learning_unit(course=self.course, circle=self.circle)
|
||||
self_evaluation_feedback = create_self_evaluation_feedback(
|
||||
learning_unit=learning_unit,
|
||||
feedback_requester_user=self.member,
|
||||
feedback_provider_user=self.mentor,
|
||||
)
|
||||
|
||||
self.assertEqual(self_evaluation_feedback.feedback_submitted, False)
|
||||
self.client.force_login(self.mentor)
|
||||
|
||||
# WHEN
|
||||
response = self.client.put(
|
||||
reverse(
|
||||
"submit_self_evaluation_feedback", args=[self_evaluation_feedback.id]
|
||||
),
|
||||
)
|
||||
|
||||
# THEN
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(response.data["success"], True)
|
||||
self.assertEqual(
|
||||
SelfEvaluationFeedback.objects.get(
|
||||
id=self_evaluation_feedback.id
|
||||
).feedback_submitted,
|
||||
True,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -1,19 +1,30 @@
|
|||
from django.urls import path
|
||||
|
||||
from vbv_lernwelt.self_evaluation_feedback.views import (
|
||||
list_self_evaluation_feedbacks_provider,
|
||||
get_provider_self_evaluation_feedback,
|
||||
start_self_evaluation_feedback,
|
||||
submit_self_evaluation_feedback,
|
||||
)
|
||||
|
||||
urlpatterns = [
|
||||
path(
|
||||
"reqeuster/start-feedback",
|
||||
"feedback/start",
|
||||
start_self_evaluation_feedback,
|
||||
name="start_self_evaluation_feedback",
|
||||
),
|
||||
path(
|
||||
"provider/list-feedbacks",
|
||||
list_self_evaluation_feedbacks_provider,
|
||||
name="list_self_evaluation_feedbacks_provider",
|
||||
"feedback/<int:feedback_id>/submit",
|
||||
submit_self_evaluation_feedback,
|
||||
name="submit_self_evaluation_feedback",
|
||||
),
|
||||
path(
|
||||
"feedback/<int:feedback_id>/add-feedback-assessment",
|
||||
add_self_evaluation_feedback_assessment,
|
||||
name="add_self_evaluation_feedback_assessment",
|
||||
),
|
||||
path(
|
||||
"provider/feedback/<int:feedback_id>",
|
||||
get_provider_self_evaluation_feedback,
|
||||
name="get_provider_self_evaluation_feedback",
|
||||
),
|
||||
]
|
||||
|
|
|
|||
|
|
@ -40,11 +40,44 @@ def start_self_evaluation_feedback(request):
|
|||
return Response({"success": True})
|
||||
|
||||
|
||||
@api_view(["GET"])
|
||||
@api_view(["PUT"])
|
||||
@permission_classes([IsAuthenticated])
|
||||
def list_self_evaluation_feedbacks_provider(request):
|
||||
feedbacks = SelfEvaluationFeedback.objects.filter(
|
||||
feedback_provider_user=request.user
|
||||
def submit_self_evaluation_feedback(request, feedback_id):
|
||||
feedback = get_object_or_404(
|
||||
SelfEvaluationFeedback, id=feedback_id, feedback_provider_user=request.user
|
||||
)
|
||||
|
||||
return Response(SelfEvaluationFeedbackSerializer(feedbacks, many=True).data)
|
||||
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})
|
||||
|
|
|
|||
Loading…
Reference in New Issue