feat: missing stuff in VV comp-navi API
This commit is contained in:
parent
7f8cfcba24
commit
a7ca88da79
|
|
@ -322,6 +322,14 @@ class SelfEvaluationFeedbackAPI(APITestCase):
|
|||
feedback_assessment["provider_user"]["id"], str(self.mentor.id)
|
||||
)
|
||||
|
||||
aggregate = response.data["aggregates"]
|
||||
self.assertEqual(aggregate["self_assessment"]["pass"], 1)
|
||||
self.assertEqual(aggregate["self_assessment"]["fail"], 1)
|
||||
self.assertEqual(aggregate["self_assessment"]["unknown"], 1)
|
||||
self.assertEqual(aggregate["feedback_assessment"]["pass"], 1)
|
||||
self.assertEqual(aggregate["feedback_assessment"]["fail"], 1)
|
||||
self.assertEqual(aggregate["feedback_assessment"]["unknown"], 1)
|
||||
|
||||
def test_no_feedbacks_but_with_completion_status(self):
|
||||
"""Case: CourseCompletion but NO feedback"""
|
||||
|
||||
|
|
@ -432,6 +440,8 @@ class SelfEvaluationFeedbackAPI(APITestCase):
|
|||
result = response.data["results"][0]
|
||||
self.assertEqual(result["title"], learning_unit.title)
|
||||
self.assertEqual(result["id"], learning_unit.id)
|
||||
self.assertEqual(result["circle_id"], self.circle.id)
|
||||
self.assertEqual(result["circle_title"], self.circle.title)
|
||||
|
||||
circles = response.data["circles"]
|
||||
self.assertEqual(len(circles), 1)
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ from vbv_lernwelt.self_evaluation_feedback.views import (
|
|||
urlpatterns = [
|
||||
# /requester/* URLs -> For the user who requests feedback
|
||||
path(
|
||||
"requester/<int:course_session_id>/feedbacks",
|
||||
"requester/<int:course_session_id>/feedbacks/summaries",
|
||||
get_self_evaluation_feedbacks_as_requester,
|
||||
name="get_self_evaluation_feedbacks_as_requester",
|
||||
),
|
||||
|
|
|
|||
|
|
@ -112,3 +112,11 @@ def get_self_assessment_counts(
|
|||
fail_count=fail_count,
|
||||
unknown_count=unknown_count,
|
||||
)
|
||||
|
||||
|
||||
def calculate_aggregate(counts: [AssessmentCounts]):
|
||||
return AssessmentCounts(
|
||||
pass_count=sum(x.pass_count for x in counts),
|
||||
fail_count=sum(x.fail_count for x in counts),
|
||||
unknown_count=sum(x.unknown_count for x in counts),
|
||||
)
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ from vbv_lernwelt.self_evaluation_feedback.serializers import (
|
|||
from vbv_lernwelt.self_evaluation_feedback.utils import (
|
||||
get_self_assessment_counts,
|
||||
get_self_evaluation_feedback_counts,
|
||||
calculate_aggregate,
|
||||
)
|
||||
|
||||
|
||||
|
|
@ -97,6 +98,9 @@ def get_self_evaluation_feedbacks_as_requester(request, course_session_id: int):
|
|||
results = []
|
||||
circle_ids = set()
|
||||
|
||||
all_self_assessment_counts = []
|
||||
all_feedback_assessment_counts = []
|
||||
|
||||
for learning_unit in LearningUnit.objects.filter(
|
||||
feedback_user=LearningUnitPerformanceFeedbackType.MENTOR_FEEDBACK.value,
|
||||
course_category__course=course_session.course,
|
||||
|
|
@ -104,15 +108,18 @@ def get_self_evaluation_feedbacks_as_requester(request, course_session_id: int):
|
|||
circle = learning_unit.get_parent().specific
|
||||
circle_ids.add(circle.id)
|
||||
|
||||
feedback_assessment = None
|
||||
|
||||
feedback = SelfEvaluationFeedback.objects.filter(
|
||||
learning_unit=learning_unit,
|
||||
feedback_requester_user=request.user,
|
||||
).first()
|
||||
|
||||
if feedback:
|
||||
if not feedback:
|
||||
# no feedback given yet
|
||||
feedback_assessment = None
|
||||
else:
|
||||
# feedback given
|
||||
feedback_counts = get_self_evaluation_feedback_counts(feedback)
|
||||
all_feedback_assessment_counts.append(feedback_counts)
|
||||
|
||||
feedback_assessment = {
|
||||
"submitted_by_provider": feedback.feedback_submitted,
|
||||
|
|
@ -125,11 +132,14 @@ def get_self_evaluation_feedbacks_as_requester(request, course_session_id: int):
|
|||
}
|
||||
|
||||
self_assessment_counts = get_self_assessment_counts(learning_unit, request.user)
|
||||
all_self_assessment_counts.append(self_assessment_counts)
|
||||
|
||||
results.append(
|
||||
{
|
||||
"id": learning_unit.id,
|
||||
"title": learning_unit.title,
|
||||
"circle_id": circle.id,
|
||||
"circle_title": circle.title,
|
||||
"feedback_assessment": feedback_assessment,
|
||||
"self_assessment": {
|
||||
"pass": self_assessment_counts.pass_count,
|
||||
|
|
@ -139,12 +149,32 @@ def get_self_evaluation_feedbacks_as_requester(request, course_session_id: int):
|
|||
}
|
||||
)
|
||||
|
||||
self_assessment_counts_aggregate = calculate_aggregate(
|
||||
counts=all_self_assessment_counts
|
||||
)
|
||||
|
||||
feedback_assessment_counts_aggregate = calculate_aggregate(
|
||||
counts=all_feedback_assessment_counts
|
||||
)
|
||||
|
||||
return Response(
|
||||
{
|
||||
"results": results,
|
||||
"circles": list(
|
||||
Circle.objects.filter(id__in=circle_ids).values("id", "title")
|
||||
),
|
||||
"aggregates": {
|
||||
"feedback_assessment": {
|
||||
"pass": feedback_assessment_counts_aggregate.pass_count,
|
||||
"fail": feedback_assessment_counts_aggregate.fail_count,
|
||||
"unknown": feedback_assessment_counts_aggregate.unknown_count,
|
||||
},
|
||||
"self_assessment": {
|
||||
"pass": self_assessment_counts_aggregate.pass_count,
|
||||
"fail": self_assessment_counts_aggregate.fail_count,
|
||||
"unknown": self_assessment_counts_aggregate.unknown_count,
|
||||
},
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue