chore: details url for competence performances
This commit is contained in:
parent
d5025e3408
commit
d2d5f22536
|
|
@ -14,6 +14,7 @@ class CompetencePerformance(graphene.ObjectType):
|
||||||
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)
|
||||||
|
details_url = graphene.String(required=True)
|
||||||
|
|
||||||
|
|
||||||
class Competences(graphene.ObjectType):
|
class Competences(graphene.ObjectType):
|
||||||
|
|
@ -23,6 +24,7 @@ class Competences(graphene.ObjectType):
|
||||||
|
|
||||||
def competences(
|
def competences(
|
||||||
course_session_selection_ids: graphene.List(graphene.ID),
|
course_session_selection_ids: graphene.List(graphene.ID),
|
||||||
|
course_slug: graphene.String,
|
||||||
) -> Competences:
|
) -> Competences:
|
||||||
completions = CourseCompletion.objects.filter(
|
completions = CourseCompletion.objects.filter(
|
||||||
course_session_id__in=course_session_selection_ids,
|
course_session_id__in=course_session_selection_ids,
|
||||||
|
|
@ -33,23 +35,27 @@ def competences(
|
||||||
|
|
||||||
circle_cache = {}
|
circle_cache = {}
|
||||||
|
|
||||||
for c in completions:
|
for completion in completions:
|
||||||
if c.page.id not in circle_cache:
|
if completion.page.id not in circle_cache:
|
||||||
circle_cache[c.page.id] = c.page.specific.learning_unit.get_circle()
|
circle_cache[
|
||||||
|
completion.page.id
|
||||||
|
] = completion.page.specific.learning_unit.get_circle()
|
||||||
|
|
||||||
circle = circle_cache[c.page.id]
|
circle = circle_cache[completion.page.id]
|
||||||
|
|
||||||
if circle.id not in competence_performances:
|
if circle.id not in competence_performances:
|
||||||
|
details_url = f"/course/{course_slug}/cockpit?courseSessionId={completion.course_session.id}"
|
||||||
competence_performances[circle.id] = CompetencePerformance(
|
competence_performances[circle.id] = CompetencePerformance(
|
||||||
course_session_id=c.course_session.id, # noqa
|
course_session_id=completion.course_session.id, # noqa
|
||||||
generation=c.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
|
||||||
)
|
)
|
||||||
if c.completion_status == CourseCompletionStatus.SUCCESS.value:
|
if completion.completion_status == CourseCompletionStatus.SUCCESS.value:
|
||||||
competence_performances[circle.id].success_count += 1
|
competence_performances[circle.id].success_count += 1
|
||||||
elif c.completion_status == CourseCompletionStatus.FAIL.value:
|
elif completion.completion_status == CourseCompletionStatus.FAIL.value:
|
||||||
competence_performances[circle.id].fail_count += 1
|
competence_performances[circle.id].fail_count += 1
|
||||||
|
|
||||||
return Competences(
|
return Competences(
|
||||||
|
|
|
||||||
|
|
@ -84,6 +84,7 @@ class CourseStatisticsType(graphene.ObjectType):
|
||||||
def resolve_competences(root, info) -> Competences:
|
def resolve_competences(root, info) -> Competences:
|
||||||
return competences(
|
return competences(
|
||||||
course_session_selection_ids=root.course_session_selection_ids,
|
course_session_selection_ids=root.course_session_selection_ids,
|
||||||
|
course_slug=root.course_slug,
|
||||||
)
|
)
|
||||||
|
|
||||||
def resolve_assignments(root, info) -> Assignments:
|
def resolve_assignments(root, info) -> Assignments:
|
||||||
|
|
|
||||||
|
|
@ -72,6 +72,7 @@ class DashboardCompetenceTestCase(GraphQLTestCase):
|
||||||
circle_id
|
circle_id
|
||||||
success_count
|
success_count
|
||||||
fail_count
|
fail_count
|
||||||
|
details_url
|
||||||
}}
|
}}
|
||||||
summary {{
|
summary {{
|
||||||
success_total
|
success_total
|
||||||
|
|
@ -97,6 +98,10 @@ class DashboardCompetenceTestCase(GraphQLTestCase):
|
||||||
self.assertEqual(performances[0]["circle_id"], str(circle.id))
|
self.assertEqual(performances[0]["circle_id"], str(circle.id))
|
||||||
self.assertEqual(performances[0]["course_session_id"], str(course_session.id))
|
self.assertEqual(performances[0]["course_session_id"], str(course_session.id))
|
||||||
self.assertEqual(performances[0]["generation"], "2023")
|
self.assertEqual(performances[0]["generation"], "2023")
|
||||||
|
self.assertEqual(
|
||||||
|
performances[0]["details_url"],
|
||||||
|
f"/course/{course.slug}/cockpit?courseSessionId={course_session.id}",
|
||||||
|
)
|
||||||
|
|
||||||
summary = competences["summary"]
|
summary = competences["summary"]
|
||||||
self.assertEqual(summary["success_total"], 1)
|
self.assertEqual(summary["success_total"], 1)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue