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)
|
_id = graphene.ID(required=True)
|
||||||
course_session_id = graphene.ID(required=True)
|
course_session_id = graphene.ID(required=True)
|
||||||
generation = graphene.String(required=True)
|
generation = graphene.String(required=True)
|
||||||
|
title = graphene.String(required=True)
|
||||||
circle_id = graphene.ID(required=True)
|
circle_id = graphene.ID(required=True)
|
||||||
success_count = graphene.Int(required=True)
|
success_count = graphene.Int(required=True)
|
||||||
fail_count = graphene.Int(required=True)
|
fail_count = graphene.Int(required=True)
|
||||||
|
|
@ -55,24 +56,33 @@ def competences(
|
||||||
] = completion.page.specific.learning_unit.get_circle()
|
] = completion.page.specific.learning_unit.get_circle()
|
||||||
|
|
||||||
circle = circle_cache[completion.page.id]
|
circle = circle_cache[completion.page.id]
|
||||||
|
learning_unit = completion.page.specific.learning_unit
|
||||||
|
|
||||||
if circle.id not in competence_records:
|
competence_records.setdefault(circle.id, {}).setdefault(
|
||||||
details_url = f"/course/{course_slug}/cockpit?courseSessionId={completion.course_session.id}"
|
learning_unit,
|
||||||
competence_records[circle.id] = CompetenceRecordStatisticsType(
|
CompetenceRecordStatisticsType(
|
||||||
_id=circle.id, # noqa
|
_id=circle.id, # noqa
|
||||||
|
title=learning_unit.title, # noqa
|
||||||
course_session_id=completion.course_session.id, # noqa
|
course_session_id=completion.course_session.id, # noqa
|
||||||
generation=completion.course_session.generation, # noqa
|
generation=completion.course_session.generation, # noqa
|
||||||
circle_id=circle.id, # noqa
|
circle_id=circle.id, # noqa
|
||||||
success_count=0, # noqa
|
success_count=0, # noqa
|
||||||
fail_count=0, # noqa
|
fail_count=0, # noqa
|
||||||
details_url=details_url, # noqa
|
details_url=f"/course/{course_slug}/cockpit?courseSessionId={completion.course_session.id}", # noqa
|
||||||
)
|
),
|
||||||
if completion.completion_status == CourseCompletionStatus.SUCCESS.value:
|
)
|
||||||
competence_records[circle.id].success_count += 1
|
|
||||||
elif completion.completion_status == CourseCompletionStatus.FAIL.value:
|
if completion.completion_status == CourseCompletionStatus.SUCCESS.value:
|
||||||
competence_records[circle.id].fail_count += 1
|
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])
|
success_count = sum([c.success_count for c in values])
|
||||||
fail_count = sum([c.fail_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) {{
|
course_statistics(course_id: $course_id) {{
|
||||||
competences {{
|
competences {{
|
||||||
records {{
|
records {{
|
||||||
|
title
|
||||||
course_session_id
|
course_session_id
|
||||||
generation
|
generation
|
||||||
circle_id
|
circle_id
|
||||||
|
|
@ -92,6 +93,7 @@ class DashboardCompetenceTestCase(GraphQLTestCase):
|
||||||
competences = response.json()["data"]["course_statistics"]["competences"]
|
competences = response.json()["data"]["course_statistics"]["competences"]
|
||||||
records = competences["records"]
|
records = competences["records"]
|
||||||
|
|
||||||
|
self.assertEqual(records[0]["title"], "Learning Unit")
|
||||||
self.assertEqual(records[0]["success_count"], 1)
|
self.assertEqual(records[0]["success_count"], 1)
|
||||||
self.assertEqual(records[0]["fail_count"], 1)
|
self.assertEqual(records[0]["fail_count"], 1)
|
||||||
self.assertEqual(records[0]["circle_id"], str(circle.id))
|
self.assertEqual(records[0]["circle_id"], str(circle.id))
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue