Select related data
This commit is contained in:
parent
69ea3c8c17
commit
9424979bef
|
|
@ -17,7 +17,7 @@ def query_competence_course_session_assignments(course_session_ids, circle_ids=N
|
||||||
AssignmentType.CASEWORK.value,
|
AssignmentType.CASEWORK.value,
|
||||||
],
|
],
|
||||||
learning_content__content_assignment__competence_certificate__isnull=False,
|
learning_content__content_assignment__competence_certificate__isnull=False,
|
||||||
):
|
).select_related("submission_deadline", "learning_content"):
|
||||||
if circle_ids and csa.learning_content.get_circle().id not in circle_ids:
|
if circle_ids and csa.learning_content.get_circle().id not in circle_ids:
|
||||||
continue
|
continue
|
||||||
result.append(csa)
|
result.append(csa)
|
||||||
|
|
@ -34,7 +34,7 @@ def query_competence_course_session_edoniq_tests(course_session_ids, circle_ids=
|
||||||
for cset in CourseSessionEdoniqTest.objects.filter(
|
for cset in CourseSessionEdoniqTest.objects.filter(
|
||||||
course_session_id__in=course_session_ids,
|
course_session_id__in=course_session_ids,
|
||||||
learning_content__content_assignment__competence_certificate__isnull=False,
|
learning_content__content_assignment__competence_certificate__isnull=False,
|
||||||
):
|
).select_related("deadline", "learning_content"):
|
||||||
if circle_ids and cset.learning_content.get_circle().id not in circle_ids:
|
if circle_ids and cset.learning_content.get_circle().id not in circle_ids:
|
||||||
continue
|
continue
|
||||||
result.append(cset)
|
result.append(cset)
|
||||||
|
|
|
||||||
|
|
@ -2,12 +2,12 @@ import math
|
||||||
from typing import List
|
from typing import List
|
||||||
|
|
||||||
import graphene
|
import graphene
|
||||||
|
from django.db import connection, reset_queries
|
||||||
|
|
||||||
import vbv_lernwelt.assignment.models
|
import vbv_lernwelt.assignment.models
|
||||||
from vbv_lernwelt.assignment.models import (
|
from vbv_lernwelt.assignment.models import (
|
||||||
AssignmentCompletion,
|
AssignmentCompletion,
|
||||||
AssignmentCompletionStatus,
|
AssignmentCompletionStatus,
|
||||||
AssignmentType,
|
|
||||||
)
|
)
|
||||||
from vbv_lernwelt.competence.services import (
|
from vbv_lernwelt.competence.services import (
|
||||||
query_competence_course_session_assignments,
|
query_competence_course_session_assignments,
|
||||||
|
|
@ -176,6 +176,9 @@ def assignments(
|
||||||
circle_ids: List[graphene.ID] | None = None,
|
circle_ids: List[graphene.ID] | None = None,
|
||||||
urql_id: str = None,
|
urql_id: str = None,
|
||||||
) -> AssignmentsStatisticsType:
|
) -> AssignmentsStatisticsType:
|
||||||
|
import structlog
|
||||||
|
|
||||||
|
logger = structlog.get_logger()
|
||||||
if urql_id is None:
|
if urql_id is None:
|
||||||
urql_id = str(course_id)
|
urql_id = str(course_id)
|
||||||
|
|
||||||
|
|
@ -184,22 +187,20 @@ def assignments(
|
||||||
)
|
)
|
||||||
records: List[AssignmentStatisticsRecordType] = []
|
records: List[AssignmentStatisticsRecordType] = []
|
||||||
|
|
||||||
for course_session in course_sessions:
|
reset_queries()
|
||||||
for csa in query_competence_course_session_assignments(
|
csas = query_competence_course_session_assignments(course_sessions, circle_ids)
|
||||||
[course_session.id], circle_ids
|
csets = query_competence_course_session_edoniq_tests(course_sessions, circle_ids)
|
||||||
):
|
|
||||||
record = create_record(csa, user_selection_ids, urql_id_postfix=urql_id)
|
|
||||||
records.append(record)
|
|
||||||
|
|
||||||
for cset in query_competence_course_session_edoniq_tests(
|
for csa in csas:
|
||||||
[course_session.id], circle_ids
|
record = create_record(csa, user_selection_ids, urql_id_postfix=urql_id)
|
||||||
):
|
records.append(record)
|
||||||
record = create_record(
|
|
||||||
course_session_assignment=cset,
|
for cset in csets:
|
||||||
user_selection_ids=user_selection_ids,
|
record = create_record(cset, user_selection_ids, urql_id_postfix=urql_id)
|
||||||
urql_id_postfix=urql_id,
|
records.append(record)
|
||||||
)
|
|
||||||
records.append(record)
|
num_queries = len(connection.queries)
|
||||||
|
logger.info(f"cset number of queries executed: {num_queries}")
|
||||||
|
|
||||||
return AssignmentsStatisticsType(
|
return AssignmentsStatisticsType(
|
||||||
_id=urql_id, # noqa
|
_id=urql_id, # noqa
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue