fix: properly merge competence per learning unit
This commit is contained in:
parent
a01e8bd9f0
commit
d61c93db09
|
|
@ -15,6 +15,7 @@ class CompetenceRecordStatisticsType(graphene.ObjectType):
|
|||
_id = graphene.ID(required=True)
|
||||
course_session_id = graphene.ID(required=True)
|
||||
generation = graphene.String(required=True)
|
||||
title = graphene.String(required=True)
|
||||
circle_id = graphene.ID(required=True)
|
||||
success_count = graphene.Int(required=True)
|
||||
fail_count = graphene.Int(required=True)
|
||||
|
|
@ -55,24 +56,33 @@ def competences(
|
|||
] = completion.page.specific.learning_unit.get_circle()
|
||||
|
||||
circle = circle_cache[completion.page.id]
|
||||
learning_unit = completion.page.specific.learning_unit
|
||||
|
||||
if circle.id not in competence_records:
|
||||
details_url = f"/course/{course_slug}/cockpit?courseSessionId={completion.course_session.id}"
|
||||
competence_records[circle.id] = CompetenceRecordStatisticsType(
|
||||
competence_records.setdefault(circle.id, {}).setdefault(
|
||||
learning_unit,
|
||||
CompetenceRecordStatisticsType(
|
||||
_id=circle.id, # noqa
|
||||
title=learning_unit.title, # noqa
|
||||
course_session_id=completion.course_session.id, # noqa
|
||||
generation=completion.course_session.generation, # noqa
|
||||
circle_id=circle.id, # noqa
|
||||
success_count=0, # noqa
|
||||
fail_count=0, # noqa
|
||||
details_url=details_url, # noqa
|
||||
)
|
||||
if completion.completion_status == CourseCompletionStatus.SUCCESS.value:
|
||||
competence_records[circle.id].success_count += 1
|
||||
elif completion.completion_status == CourseCompletionStatus.FAIL.value:
|
||||
competence_records[circle.id].fail_count += 1
|
||||
details_url=f"/course/{course_slug}/cockpit?courseSessionId={completion.course_session.id}", # noqa
|
||||
),
|
||||
)
|
||||
|
||||
if completion.completion_status == CourseCompletionStatus.SUCCESS.value:
|
||||
competence_records[circle.id][learning_unit].success_count += 1
|
||||
elif completion.completion_status == CourseCompletionStatus.FAIL.value:
|
||||
competence_records[circle.id][learning_unit].fail_count += 1
|
||||
|
||||
values = [
|
||||
record
|
||||
for circle_records in competence_records.values()
|
||||
for record in circle_records.values()
|
||||
]
|
||||
|
||||
values = list(competence_records.values())
|
||||
success_count = sum([c.success_count for c in values])
|
||||
fail_count = sum([c.fail_count for c in values])
|
||||
|
||||
|
|
|
|||
|
|
@ -66,6 +66,7 @@ class DashboardCompetenceTestCase(GraphQLTestCase):
|
|||
course_statistics(course_id: $course_id) {{
|
||||
competences {{
|
||||
records {{
|
||||
title
|
||||
course_session_id
|
||||
generation
|
||||
circle_id
|
||||
|
|
@ -92,6 +93,7 @@ class DashboardCompetenceTestCase(GraphQLTestCase):
|
|||
competences = response.json()["data"]["course_statistics"]["competences"]
|
||||
records = competences["records"]
|
||||
|
||||
self.assertEqual(records[0]["title"], "Learning Unit")
|
||||
self.assertEqual(records[0]["success_count"], 1)
|
||||
self.assertEqual(records[0]["fail_count"], 1)
|
||||
self.assertEqual(records[0]["circle_id"], str(circle.id))
|
||||
|
|
|
|||
Loading…
Reference in New Issue