Add result data for edoniq test

This commit is contained in:
Daniel Egger 2023-09-05 11:13:21 +02:00
parent 428ac294e0
commit 4bc1ca636c
5 changed files with 83 additions and 7 deletions

View File

@ -566,6 +566,7 @@ export type Query = {
__typename?: 'Query';
assignment?: Maybe<AssignmentObjectType>;
assignment_completion?: Maybe<AssignmentCompletionObjectType>;
assignment_completions?: Maybe<Array<Maybe<AssignmentCompletionObjectType>>>;
circle?: Maybe<CircleObjectType>;
competence_certificate?: Maybe<CompetenceCertificateObjectType>;
competence_certificate_list?: Maybe<CompetenceCertificateListObjectType>;
@ -599,6 +600,13 @@ export type QueryAssignmentCompletionArgs = {
};
export type QueryAssignmentCompletionsArgs = {
assignment_ids: Array<InputMaybe<Scalars['ID']['input']>>;
assignment_user_id?: InputMaybe<Scalars['UUID']['input']>;
course_session_id: Scalars['ID']['input'];
};
export type QueryCircleArgs = {
id?: InputMaybe<Scalars['ID']['input']>;
slug?: InputMaybe<Scalars['String']['input']>;

View File

@ -17,6 +17,7 @@ type Query {
competence_certificate_list(id: ID, slug: String, course_id: ID, course_slug: String): CompetenceCertificateListObjectType
assignment(id: ID, slug: String): AssignmentObjectType
assignment_completion(assignment_id: ID!, course_session_id: ID!, learning_content_page_id: ID, assignment_user_id: UUID): AssignmentCompletionObjectType
assignment_completions(assignment_ids: [ID]!, course_session_id: ID!, assignment_user_id: UUID): [AssignmentCompletionObjectType]
}
type LearningPathObjectType implements CoursePageInterface {

View File

@ -58,3 +58,33 @@ class AssignmentQuery(object):
course_session_id=course_session_id,
).first()
raise PermissionDenied()
assignment_completions = graphene.List(
AssignmentCompletionObjectType,
assignment_ids=graphene.List(graphene.ID, required=True),
course_session_id=graphene.ID(required=True),
assignment_user_id=graphene.UUID(required=False),
)
def resolve_assignment_completions(
root,
info,
assignment_ids,
course_session_id,
assignment_user_id=None,
**kwargs,
):
if assignment_user_id is None:
assignment_user_id = info.context.user.id
if str(assignment_user_id) == str(
info.context.user.id
) or is_course_session_expert(info.context.user, course_session_id):
course_id = CourseSession.objects.get(id=course_session_id).course_id
if has_course_access(info.context.user, course_id):
return AssignmentCompletion.objects.filter(
assignment_user_id=assignment_user_id,
assignment_id__in=assignment_ids,
course_session_id=course_session_id,
)
raise PermissionDenied()

View File

@ -9,7 +9,8 @@ from vbv_lernwelt.core.constants import (
from vbv_lernwelt.core.models import User
from vbv_lernwelt.course.creators.test_course import (
create_test_assignment_submitted_data,
create_test_assignment_evaulation_data,
create_test_assignment_evaluation_data,
create_edoniq_test_result_data,
)
from vbv_lernwelt.course.models import CourseCompletion, CourseSession
from vbv_lernwelt.notify.models import Notification
@ -26,7 +27,16 @@ from vbv_lernwelt.notify.models import Notification
default=False,
help="will create assignment evaluation data for test-student1@example.com",
)
def command(create_assignment_completion, create_assignment_evaluation):
@click.option(
"--create-edoniq-test-results/--no-create-edoniq-test-results",
default=False,
help="will create edoniq result data for test-student1@example.com",
)
def command(
create_assignment_completion,
create_assignment_evaluation,
create_edoniq_test_results,
):
print("cypress reset data")
CourseCompletion.objects.all().delete()
Notification.objects.all().delete()
@ -45,7 +55,7 @@ def command(create_assignment_completion, create_assignment_evaluation):
)
if create_assignment_evaluation:
print("create assignment evaulation data for test course")
create_test_assignment_evaulation_data(
create_test_assignment_evaluation_data(
assignment=Assignment.objects.get(
slug="test-lehrgang-assignment-überprüfen-einer-motorfahrzeugs-versicherungspolice"
),
@ -53,3 +63,13 @@ def command(create_assignment_completion, create_assignment_evaluation):
assignment_user=User.objects.get(id=TEST_STUDENT1_USER_ID),
evaluation_user=User.objects.get(id=TEST_TRAINER1_USER_ID),
)
if create_edoniq_test_results:
print("create edoniq test results")
create_edoniq_test_result_data(
assignment=Assignment.objects.get(
slug="test-lehrgang-assignment-edoniq-wissens-und-verständisfragen-circle-fahrzeug-demo"
),
course_session=CourseSession.objects.get(id=TEST_COURSE_SESSION_BERN_ID),
assignment_user=User.objects.get(id=TEST_STUDENT1_USER_ID),
)

View File

@ -229,7 +229,7 @@ def create_test_assignment_submitted_data(assignment, course_session, user):
)
def create_test_assignment_evaulation_data(
def create_test_assignment_evaluation_data(
assignment, course_session, assignment_user, evaluation_user
):
if assignment and course_session and assignment_user and evaluation_user:
@ -237,13 +237,13 @@ def create_test_assignment_evaulation_data(
evaluation_points = 0
for index, evaluation_task in enumerate(subtasks):
evaluation_points += 2
evaluation_points += evaluation_task["value"]["max_points"]
update_assignment_completion(
assignment_user=assignment_user,
assignment=assignment,
course_session=course_session,
learning_content_page=assignment.learningcontentassignment_set.first(),
learning_content_page=assignment.find_attached_learning_content(),
completion_data={
evaluation_task["id"]: {
"expert_data": {
@ -260,7 +260,7 @@ def create_test_assignment_evaulation_data(
assignment_user=assignment_user,
assignment=assignment,
course_session=course_session,
learning_content_page=assignment.learningcontentassignment_set.first(),
learning_content_page=assignment.find_attached_learning_content(),
completion_data={},
completion_status=AssignmentCompletionStatus.EVALUATION_SUBMITTED,
evaluation_user=evaluation_user,
@ -269,6 +269,23 @@ def create_test_assignment_evaulation_data(
)
def create_edoniq_test_result_data(
assignment, course_session, assignment_user, points=24
):
if assignment and course_session and assignment_user:
update_assignment_completion(
assignment_user=assignment_user,
assignment=assignment,
course_session=course_session,
learning_content_page=assignment.find_attached_learning_content(),
completion_data={},
completion_status=AssignmentCompletionStatus.EVALUATION_SUBMITTED,
evaluation_user=User.objects.get(username="admin"),
evaluation_grade=6,
evaluation_points=points,
)
def create_test_course_with_categories(apps=None, schema_editor=None):
if apps is not None:
Course = apps.get_model("course", "Course")