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)
|
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):
|
def test_no_feedbacks_but_with_completion_status(self):
|
||||||
"""Case: CourseCompletion but NO feedback"""
|
"""Case: CourseCompletion but NO feedback"""
|
||||||
|
|
||||||
|
|
@ -432,6 +440,8 @@ class SelfEvaluationFeedbackAPI(APITestCase):
|
||||||
result = response.data["results"][0]
|
result = response.data["results"][0]
|
||||||
self.assertEqual(result["title"], learning_unit.title)
|
self.assertEqual(result["title"], learning_unit.title)
|
||||||
self.assertEqual(result["id"], learning_unit.id)
|
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"]
|
circles = response.data["circles"]
|
||||||
self.assertEqual(len(circles), 1)
|
self.assertEqual(len(circles), 1)
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ from vbv_lernwelt.self_evaluation_feedback.views import (
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
# /requester/* URLs -> For the user who requests feedback
|
# /requester/* URLs -> For the user who requests feedback
|
||||||
path(
|
path(
|
||||||
"requester/<int:course_session_id>/feedbacks",
|
"requester/<int:course_session_id>/feedbacks/summaries",
|
||||||
get_self_evaluation_feedbacks_as_requester,
|
get_self_evaluation_feedbacks_as_requester,
|
||||||
name="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,
|
fail_count=fail_count,
|
||||||
unknown_count=unknown_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 (
|
from vbv_lernwelt.self_evaluation_feedback.utils import (
|
||||||
get_self_assessment_counts,
|
get_self_assessment_counts,
|
||||||
get_self_evaluation_feedback_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 = []
|
results = []
|
||||||
circle_ids = set()
|
circle_ids = set()
|
||||||
|
|
||||||
|
all_self_assessment_counts = []
|
||||||
|
all_feedback_assessment_counts = []
|
||||||
|
|
||||||
for learning_unit in LearningUnit.objects.filter(
|
for learning_unit in LearningUnit.objects.filter(
|
||||||
feedback_user=LearningUnitPerformanceFeedbackType.MENTOR_FEEDBACK.value,
|
feedback_user=LearningUnitPerformanceFeedbackType.MENTOR_FEEDBACK.value,
|
||||||
course_category__course=course_session.course,
|
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 = learning_unit.get_parent().specific
|
||||||
circle_ids.add(circle.id)
|
circle_ids.add(circle.id)
|
||||||
|
|
||||||
feedback_assessment = None
|
|
||||||
|
|
||||||
feedback = SelfEvaluationFeedback.objects.filter(
|
feedback = SelfEvaluationFeedback.objects.filter(
|
||||||
learning_unit=learning_unit,
|
learning_unit=learning_unit,
|
||||||
feedback_requester_user=request.user,
|
feedback_requester_user=request.user,
|
||||||
).first()
|
).first()
|
||||||
|
|
||||||
if feedback:
|
if not feedback:
|
||||||
|
# no feedback given yet
|
||||||
|
feedback_assessment = None
|
||||||
|
else:
|
||||||
|
# feedback given
|
||||||
feedback_counts = get_self_evaluation_feedback_counts(feedback)
|
feedback_counts = get_self_evaluation_feedback_counts(feedback)
|
||||||
|
all_feedback_assessment_counts.append(feedback_counts)
|
||||||
|
|
||||||
feedback_assessment = {
|
feedback_assessment = {
|
||||||
"submitted_by_provider": feedback.feedback_submitted,
|
"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)
|
self_assessment_counts = get_self_assessment_counts(learning_unit, request.user)
|
||||||
|
all_self_assessment_counts.append(self_assessment_counts)
|
||||||
|
|
||||||
results.append(
|
results.append(
|
||||||
{
|
{
|
||||||
"id": learning_unit.id,
|
"id": learning_unit.id,
|
||||||
"title": learning_unit.title,
|
"title": learning_unit.title,
|
||||||
|
"circle_id": circle.id,
|
||||||
|
"circle_title": circle.title,
|
||||||
"feedback_assessment": feedback_assessment,
|
"feedback_assessment": feedback_assessment,
|
||||||
"self_assessment": {
|
"self_assessment": {
|
||||||
"pass": self_assessment_counts.pass_count,
|
"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(
|
return Response(
|
||||||
{
|
{
|
||||||
"results": results,
|
"results": results,
|
||||||
"circles": list(
|
"circles": list(
|
||||||
Circle.objects.filter(id__in=circle_ids).values("id", "title")
|
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