diff --git a/client/src/components/ui/ItPersonRow.vue b/client/src/components/ui/ItPersonRow.vue index 98f2792b..c7383606 100644 --- a/client/src/components/ui/ItPersonRow.vue +++ b/client/src/components/ui/ItPersonRow.vue @@ -1,18 +1,30 @@ - - {{ name }} + + + + {{ props.name }} + + + {{ props.extraInfo }} + + diff --git a/client/src/gql/gql.ts b/client/src/gql/gql.ts index a159d573..37055776 100644 --- a/client/src/gql/gql.ts +++ b/client/src/gql/gql.ts @@ -20,7 +20,7 @@ const documents = { "\n query assignmentCompletionQuery(\n $assignmentId: ID!\n $courseSessionId: ID!\n $learningContentId: ID\n $assignmentUserId: UUID\n ) {\n assignment(id: $assignmentId) {\n assignment_type\n needs_expert_evaluation\n max_points\n content_type\n effort_required\n evaluation_description\n evaluation_document_url\n evaluation_tasks\n id\n intro_text\n performance_objectives\n slug\n tasks\n title\n translation_key\n solution_sample {\n id\n url\n }\n competence_certificate {\n ...CoursePageFields\n }\n }\n assignment_completion(\n assignment_id: $assignmentId\n course_session_id: $courseSessionId\n assignment_user_id: $assignmentUserId\n learning_content_page_id: $learningContentId\n ) {\n id\n completion_status\n submitted_at\n evaluation_submitted_at\n evaluation_user {\n id\n first_name\n last_name\n }\n assignment_user {\n avatar_url\n first_name\n last_name\n id\n }\n evaluation_points\n evaluation_max_points\n evaluation_points_deducted\n evaluation_points_deducted_reason\n evaluation_points_final\n\n evaluation_passed\n edoniq_extended_time_flag\n completion_data\n task_completion_data\n }\n }\n": types.AssignmentCompletionQueryDocument, "\n query competenceCertificateQuery($courseSlug: String!, $courseSessionId: ID!) {\n competence_certificate_list(course_slug: $courseSlug) {\n ...CoursePageFields\n competence_certificates {\n ...CoursePageFields\n assignments {\n ...CoursePageFields\n assignment_type\n max_points\n competence_certificate_weight\n completion(course_session_id: $courseSessionId) {\n id\n completion_status\n submitted_at\n evaluation_points\n evaluation_points_deducted\n evaluation_points_final\n evaluation_max_points\n evaluation_passed\n }\n learning_content {\n ...CoursePageFields\n circle {\n id\n title\n slug\n }\n }\n }\n }\n }\n }\n": types.CompetenceCertificateQueryDocument, "\n query competenceCertificateForUserQuery(\n $courseSlug: String!\n $courseSessionId: ID!\n $userId: UUID!\n ) {\n competence_certificate_list_for_user(course_slug: $courseSlug, user_id: $userId) {\n ...CoursePageFields\n competence_certificates {\n ...CoursePageFields\n assignments {\n ...CoursePageFields\n assignment_type\n max_points\n competence_certificate_weight\n completion(course_session_id: $courseSessionId) {\n id\n completion_status\n submitted_at\n evaluation_points\n evaluation_points_final\n evaluation_points_deducted\n evaluation_max_points\n evaluation_passed\n }\n learning_content {\n ...CoursePageFields\n circle {\n id\n title\n slug\n }\n }\n }\n }\n }\n }\n": types.CompetenceCertificateForUserQueryDocument, - "\n query courseSessionDetail($courseSessionId: ID!) {\n course_session(id: $courseSessionId) {\n id\n title\n course {\n id\n title\n slug\n configuration {\n id\n enable_circle_documents\n enable_learning_mentor\n enable_competence_certificates\n }\n }\n users {\n id\n user_id\n first_name\n last_name\n email\n avatar_url\n role\n circles {\n id\n title\n slug\n }\n }\n attendance_courses {\n id\n location\n trainer\n due_date {\n id\n start\n end\n }\n learning_content_id\n learning_content {\n id\n title\n circle {\n id\n title\n slug\n }\n }\n }\n assignments {\n id\n submission_deadline {\n id\n start\n }\n evaluation_deadline {\n id\n start\n }\n learning_content {\n id\n title\n content_assignment {\n id\n title\n assignment_type\n }\n }\n }\n edoniq_tests {\n id\n deadline {\n id\n start\n end\n }\n learning_content {\n id\n title\n content_assignment {\n id\n title\n assignment_type\n }\n }\n }\n }\n }\n": types.CourseSessionDetailDocument, + "\n query courseSessionDetail($courseSessionId: ID!) {\n course_session(id: $courseSessionId) {\n id\n title\n course {\n id\n title\n slug\n configuration {\n id\n enable_circle_documents\n enable_learning_mentor\n enable_competence_certificates\n }\n }\n users {\n id\n user_id\n first_name\n last_name\n email\n avatar_url\n role\n circles {\n id\n title\n slug\n }\n optional_attendance\n }\n attendance_courses {\n id\n location\n trainer\n due_date {\n id\n start\n end\n }\n learning_content_id\n learning_content {\n id\n title\n circle {\n id\n title\n slug\n }\n }\n }\n assignments {\n id\n submission_deadline {\n id\n start\n }\n evaluation_deadline {\n id\n start\n }\n learning_content {\n id\n title\n content_assignment {\n id\n title\n assignment_type\n }\n }\n }\n edoniq_tests {\n id\n deadline {\n id\n start\n end\n }\n learning_content {\n id\n title\n content_assignment {\n id\n title\n assignment_type\n }\n }\n }\n }\n }\n": types.CourseSessionDetailDocument, "\n query courseQuery($slug: String!) {\n course(slug: $slug) {\n id\n title\n slug\n category_name\n configuration {\n id\n enable_circle_documents\n enable_learning_mentor\n enable_competence_certificates\n is_uk\n }\n action_competences {\n competence_id\n ...CoursePageFields\n performance_criteria {\n competence_id\n learning_unit {\n id\n slug\n evaluate_url\n }\n ...CoursePageFields\n }\n }\n learning_path {\n ...CoursePageFields\n topics {\n is_visible\n ...CoursePageFields\n circles {\n description\n goals\n ...CoursePageFields\n learning_sequences {\n icon\n ...CoursePageFields\n learning_units {\n evaluate_url\n ...CoursePageFields\n performance_criteria {\n ...CoursePageFields\n }\n learning_contents {\n can_user_self_toggle_course_completion\n content_url\n minutes\n description\n ...CoursePageFields\n ... on LearningContentAssignmentObjectType {\n assignment_type\n content_assignment {\n id\n assignment_type\n }\n competence_certificate {\n ...CoursePageFields\n }\n }\n ... on LearningContentEdoniqTestObjectType {\n checkbox_text\n has_extended_time_test\n content_assignment {\n id\n assignment_type\n }\n competence_certificate {\n ...CoursePageFields\n }\n }\n ... on LearningContentRichTextObjectType {\n text\n }\n }\n }\n }\n }\n }\n }\n }\n }\n": types.CourseQueryDocument, "\n query dashboardConfig {\n dashboard_config {\n id\n slug\n name\n dashboard_type\n course_configuration {\n id\n enable_circle_documents\n enable_learning_mentor\n enable_competence_certificates\n is_uk\n }\n }\n }\n": types.DashboardConfigDocument, "\n query dashboardProgress($courseId: ID!) {\n course_progress(course_id: $courseId) {\n _id\n course_id\n session_to_continue_id\n competence {\n _id\n total_count\n success_count\n fail_count\n }\n assignment {\n _id\n total_count\n points_max_count\n points_achieved_count\n }\n }\n }\n": types.DashboardProgressDocument, @@ -75,7 +75,7 @@ export function graphql(source: "\n query competenceCertificateForUserQuery(\n /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ -export function graphql(source: "\n query courseSessionDetail($courseSessionId: ID!) {\n course_session(id: $courseSessionId) {\n id\n title\n course {\n id\n title\n slug\n configuration {\n id\n enable_circle_documents\n enable_learning_mentor\n enable_competence_certificates\n }\n }\n users {\n id\n user_id\n first_name\n last_name\n email\n avatar_url\n role\n circles {\n id\n title\n slug\n }\n }\n attendance_courses {\n id\n location\n trainer\n due_date {\n id\n start\n end\n }\n learning_content_id\n learning_content {\n id\n title\n circle {\n id\n title\n slug\n }\n }\n }\n assignments {\n id\n submission_deadline {\n id\n start\n }\n evaluation_deadline {\n id\n start\n }\n learning_content {\n id\n title\n content_assignment {\n id\n title\n assignment_type\n }\n }\n }\n edoniq_tests {\n id\n deadline {\n id\n start\n end\n }\n learning_content {\n id\n title\n content_assignment {\n id\n title\n assignment_type\n }\n }\n }\n }\n }\n"): (typeof documents)["\n query courseSessionDetail($courseSessionId: ID!) {\n course_session(id: $courseSessionId) {\n id\n title\n course {\n id\n title\n slug\n configuration {\n id\n enable_circle_documents\n enable_learning_mentor\n enable_competence_certificates\n }\n }\n users {\n id\n user_id\n first_name\n last_name\n email\n avatar_url\n role\n circles {\n id\n title\n slug\n }\n }\n attendance_courses {\n id\n location\n trainer\n due_date {\n id\n start\n end\n }\n learning_content_id\n learning_content {\n id\n title\n circle {\n id\n title\n slug\n }\n }\n }\n assignments {\n id\n submission_deadline {\n id\n start\n }\n evaluation_deadline {\n id\n start\n }\n learning_content {\n id\n title\n content_assignment {\n id\n title\n assignment_type\n }\n }\n }\n edoniq_tests {\n id\n deadline {\n id\n start\n end\n }\n learning_content {\n id\n title\n content_assignment {\n id\n title\n assignment_type\n }\n }\n }\n }\n }\n"]; +export function graphql(source: "\n query courseSessionDetail($courseSessionId: ID!) {\n course_session(id: $courseSessionId) {\n id\n title\n course {\n id\n title\n slug\n configuration {\n id\n enable_circle_documents\n enable_learning_mentor\n enable_competence_certificates\n }\n }\n users {\n id\n user_id\n first_name\n last_name\n email\n avatar_url\n role\n circles {\n id\n title\n slug\n }\n optional_attendance\n }\n attendance_courses {\n id\n location\n trainer\n due_date {\n id\n start\n end\n }\n learning_content_id\n learning_content {\n id\n title\n circle {\n id\n title\n slug\n }\n }\n }\n assignments {\n id\n submission_deadline {\n id\n start\n }\n evaluation_deadline {\n id\n start\n }\n learning_content {\n id\n title\n content_assignment {\n id\n title\n assignment_type\n }\n }\n }\n edoniq_tests {\n id\n deadline {\n id\n start\n end\n }\n learning_content {\n id\n title\n content_assignment {\n id\n title\n assignment_type\n }\n }\n }\n }\n }\n"): (typeof documents)["\n query courseSessionDetail($courseSessionId: ID!) {\n course_session(id: $courseSessionId) {\n id\n title\n course {\n id\n title\n slug\n configuration {\n id\n enable_circle_documents\n enable_learning_mentor\n enable_competence_certificates\n }\n }\n users {\n id\n user_id\n first_name\n last_name\n email\n avatar_url\n role\n circles {\n id\n title\n slug\n }\n optional_attendance\n }\n attendance_courses {\n id\n location\n trainer\n due_date {\n id\n start\n end\n }\n learning_content_id\n learning_content {\n id\n title\n circle {\n id\n title\n slug\n }\n }\n }\n assignments {\n id\n submission_deadline {\n id\n start\n }\n evaluation_deadline {\n id\n start\n }\n learning_content {\n id\n title\n content_assignment {\n id\n title\n assignment_type\n }\n }\n }\n edoniq_tests {\n id\n deadline {\n id\n start\n end\n }\n learning_content {\n id\n title\n content_assignment {\n id\n title\n assignment_type\n }\n }\n }\n }\n }\n"]; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ diff --git a/client/src/gql/graphql.ts b/client/src/gql/graphql.ts index beb6b10f..732491b5 100644 --- a/client/src/gql/graphql.ts +++ b/client/src/gql/graphql.ts @@ -455,6 +455,7 @@ export type CourseSessionUserObjectsType = { first_name: Scalars['String']['output']; id: Scalars['ID']['output']; last_name: Scalars['String']['output']; + optional_attendance?: Maybe; role: Scalars['String']['output']; user_id: Scalars['UUID']['output']; }; @@ -1285,7 +1286,7 @@ export type CourseSessionDetailQueryVariables = Exact<{ }>; -export type CourseSessionDetailQuery = { __typename?: 'Query', course_session?: { __typename?: 'CourseSessionObjectType', id: string, title: string, course: { __typename?: 'CourseObjectType', id: string, title: string, slug: string, configuration: { __typename?: 'CourseConfigurationObjectType', id: string, enable_circle_documents: boolean, enable_learning_mentor: boolean, enable_competence_certificates: boolean } }, users: Array<{ __typename?: 'CourseSessionUserObjectsType', id: string, user_id: string, first_name: string, last_name: string, email: string, avatar_url: string, role: string, circles: Array<{ __typename?: 'CourseSessionUserExpertCircleType', id: string, title: string, slug: string }> }>, attendance_courses: Array<{ __typename?: 'CourseSessionAttendanceCourseObjectType', id: string, location: string, trainer: string, learning_content_id?: string | null, due_date?: { __typename?: 'DueDateObjectType', id: string, start?: string | null, end?: string | null } | null, learning_content: { __typename?: 'LearningContentAttendanceCourseObjectType', id: string, title: string, circle?: { __typename?: 'CircleLightObjectType', id: string, title: string, slug: string } | null } }>, assignments: Array<{ __typename?: 'CourseSessionAssignmentObjectType', id: string, submission_deadline?: { __typename?: 'DueDateObjectType', id: string, start?: string | null } | null, evaluation_deadline?: { __typename?: 'DueDateObjectType', id: string, start?: string | null } | null, learning_content: { __typename?: 'LearningContentAssignmentObjectType', id: string, title: string, content_assignment: { __typename?: 'AssignmentObjectType', id: string, title: string, assignment_type: AssignmentAssignmentAssignmentTypeChoices } } }>, edoniq_tests: Array<{ __typename?: 'CourseSessionEdoniqTestObjectType', id: string, deadline?: { __typename?: 'DueDateObjectType', id: string, start?: string | null, end?: string | null } | null, learning_content: { __typename?: 'LearningContentEdoniqTestObjectType', id: string, title: string, content_assignment: { __typename?: 'AssignmentObjectType', id: string, title: string, assignment_type: AssignmentAssignmentAssignmentTypeChoices } } }> } | null }; +export type CourseSessionDetailQuery = { __typename?: 'Query', course_session?: { __typename?: 'CourseSessionObjectType', id: string, title: string, course: { __typename?: 'CourseObjectType', id: string, title: string, slug: string, configuration: { __typename?: 'CourseConfigurationObjectType', id: string, enable_circle_documents: boolean, enable_learning_mentor: boolean, enable_competence_certificates: boolean } }, users: Array<{ __typename?: 'CourseSessionUserObjectsType', id: string, user_id: string, first_name: string, last_name: string, email: string, avatar_url: string, role: string, optional_attendance?: boolean | null, circles: Array<{ __typename?: 'CourseSessionUserExpertCircleType', id: string, title: string, slug: string }> }>, attendance_courses: Array<{ __typename?: 'CourseSessionAttendanceCourseObjectType', id: string, location: string, trainer: string, learning_content_id?: string | null, due_date?: { __typename?: 'DueDateObjectType', id: string, start?: string | null, end?: string | null } | null, learning_content: { __typename?: 'LearningContentAttendanceCourseObjectType', id: string, title: string, circle?: { __typename?: 'CircleLightObjectType', id: string, title: string, slug: string } | null } }>, assignments: Array<{ __typename?: 'CourseSessionAssignmentObjectType', id: string, submission_deadline?: { __typename?: 'DueDateObjectType', id: string, start?: string | null } | null, evaluation_deadline?: { __typename?: 'DueDateObjectType', id: string, start?: string | null } | null, learning_content: { __typename?: 'LearningContentAssignmentObjectType', id: string, title: string, content_assignment: { __typename?: 'AssignmentObjectType', id: string, title: string, assignment_type: AssignmentAssignmentAssignmentTypeChoices } } }>, edoniq_tests: Array<{ __typename?: 'CourseSessionEdoniqTestObjectType', id: string, deadline?: { __typename?: 'DueDateObjectType', id: string, start?: string | null, end?: string | null } | null, learning_content: { __typename?: 'LearningContentEdoniqTestObjectType', id: string, title: string, content_assignment: { __typename?: 'AssignmentObjectType', id: string, title: string, assignment_type: AssignmentAssignmentAssignmentTypeChoices } } }> } | null }; export type CourseQueryQueryVariables = Exact<{ slug: Scalars['String']['input']; @@ -1411,7 +1412,7 @@ export const AttendanceCheckQueryDocument = {"kind":"Document","definitions":[{" export const AssignmentCompletionQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"assignmentCompletionQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"assignmentId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"courseSessionId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"learningContentId"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"assignmentUserId"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"UUID"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"assignment"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"assignmentId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"assignment_type"}},{"kind":"Field","name":{"kind":"Name","value":"needs_expert_evaluation"}},{"kind":"Field","name":{"kind":"Name","value":"max_points"}},{"kind":"Field","name":{"kind":"Name","value":"content_type"}},{"kind":"Field","name":{"kind":"Name","value":"effort_required"}},{"kind":"Field","name":{"kind":"Name","value":"evaluation_description"}},{"kind":"Field","name":{"kind":"Name","value":"evaluation_document_url"}},{"kind":"Field","name":{"kind":"Name","value":"evaluation_tasks"}},{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"intro_text"}},{"kind":"Field","name":{"kind":"Name","value":"performance_objectives"}},{"kind":"Field","name":{"kind":"Name","value":"slug"}},{"kind":"Field","name":{"kind":"Name","value":"tasks"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"translation_key"}},{"kind":"Field","name":{"kind":"Name","value":"solution_sample"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"url"}}]}},{"kind":"Field","name":{"kind":"Name","value":"competence_certificate"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CoursePageFields"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"assignment_completion"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"assignment_id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"assignmentId"}}},{"kind":"Argument","name":{"kind":"Name","value":"course_session_id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"courseSessionId"}}},{"kind":"Argument","name":{"kind":"Name","value":"assignment_user_id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"assignmentUserId"}}},{"kind":"Argument","name":{"kind":"Name","value":"learning_content_page_id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"learningContentId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"completion_status"}},{"kind":"Field","name":{"kind":"Name","value":"submitted_at"}},{"kind":"Field","name":{"kind":"Name","value":"evaluation_submitted_at"}},{"kind":"Field","name":{"kind":"Name","value":"evaluation_user"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"first_name"}},{"kind":"Field","name":{"kind":"Name","value":"last_name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"assignment_user"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"avatar_url"}},{"kind":"Field","name":{"kind":"Name","value":"first_name"}},{"kind":"Field","name":{"kind":"Name","value":"last_name"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"evaluation_points"}},{"kind":"Field","name":{"kind":"Name","value":"evaluation_max_points"}},{"kind":"Field","name":{"kind":"Name","value":"evaluation_points_deducted"}},{"kind":"Field","name":{"kind":"Name","value":"evaluation_points_deducted_reason"}},{"kind":"Field","name":{"kind":"Name","value":"evaluation_points_final"}},{"kind":"Field","name":{"kind":"Name","value":"evaluation_passed"}},{"kind":"Field","name":{"kind":"Name","value":"edoniq_extended_time_flag"}},{"kind":"Field","name":{"kind":"Name","value":"completion_data"}},{"kind":"Field","name":{"kind":"Name","value":"task_completion_data"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CoursePageFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"CoursePageInterface"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"slug"}},{"kind":"Field","name":{"kind":"Name","value":"content_type"}},{"kind":"Field","name":{"kind":"Name","value":"frontend_url"}}]}}]} as unknown as DocumentNode; export const CompetenceCertificateQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"competenceCertificateQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"courseSlug"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"courseSessionId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"competence_certificate_list"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"course_slug"},"value":{"kind":"Variable","name":{"kind":"Name","value":"courseSlug"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CoursePageFields"}},{"kind":"Field","name":{"kind":"Name","value":"competence_certificates"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CoursePageFields"}},{"kind":"Field","name":{"kind":"Name","value":"assignments"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CoursePageFields"}},{"kind":"Field","name":{"kind":"Name","value":"assignment_type"}},{"kind":"Field","name":{"kind":"Name","value":"max_points"}},{"kind":"Field","name":{"kind":"Name","value":"competence_certificate_weight"}},{"kind":"Field","name":{"kind":"Name","value":"completion"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"course_session_id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"courseSessionId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"completion_status"}},{"kind":"Field","name":{"kind":"Name","value":"submitted_at"}},{"kind":"Field","name":{"kind":"Name","value":"evaluation_points"}},{"kind":"Field","name":{"kind":"Name","value":"evaluation_points_deducted"}},{"kind":"Field","name":{"kind":"Name","value":"evaluation_points_final"}},{"kind":"Field","name":{"kind":"Name","value":"evaluation_max_points"}},{"kind":"Field","name":{"kind":"Name","value":"evaluation_passed"}}]}},{"kind":"Field","name":{"kind":"Name","value":"learning_content"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CoursePageFields"}},{"kind":"Field","name":{"kind":"Name","value":"circle"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"slug"}}]}}]}}]}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CoursePageFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"CoursePageInterface"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"slug"}},{"kind":"Field","name":{"kind":"Name","value":"content_type"}},{"kind":"Field","name":{"kind":"Name","value":"frontend_url"}}]}}]} as unknown as DocumentNode; export const CompetenceCertificateForUserQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"competenceCertificateForUserQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"courseSlug"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"courseSessionId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"userId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UUID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"competence_certificate_list_for_user"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"course_slug"},"value":{"kind":"Variable","name":{"kind":"Name","value":"courseSlug"}}},{"kind":"Argument","name":{"kind":"Name","value":"user_id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"userId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CoursePageFields"}},{"kind":"Field","name":{"kind":"Name","value":"competence_certificates"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CoursePageFields"}},{"kind":"Field","name":{"kind":"Name","value":"assignments"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CoursePageFields"}},{"kind":"Field","name":{"kind":"Name","value":"assignment_type"}},{"kind":"Field","name":{"kind":"Name","value":"max_points"}},{"kind":"Field","name":{"kind":"Name","value":"competence_certificate_weight"}},{"kind":"Field","name":{"kind":"Name","value":"completion"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"course_session_id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"courseSessionId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"completion_status"}},{"kind":"Field","name":{"kind":"Name","value":"submitted_at"}},{"kind":"Field","name":{"kind":"Name","value":"evaluation_points"}},{"kind":"Field","name":{"kind":"Name","value":"evaluation_points_final"}},{"kind":"Field","name":{"kind":"Name","value":"evaluation_points_deducted"}},{"kind":"Field","name":{"kind":"Name","value":"evaluation_max_points"}},{"kind":"Field","name":{"kind":"Name","value":"evaluation_passed"}}]}},{"kind":"Field","name":{"kind":"Name","value":"learning_content"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CoursePageFields"}},{"kind":"Field","name":{"kind":"Name","value":"circle"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"slug"}}]}}]}}]}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CoursePageFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"CoursePageInterface"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"slug"}},{"kind":"Field","name":{"kind":"Name","value":"content_type"}},{"kind":"Field","name":{"kind":"Name","value":"frontend_url"}}]}}]} as unknown as DocumentNode; -export const CourseSessionDetailDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"courseSessionDetail"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"courseSessionId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"course_session"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"courseSessionId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"course"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"slug"}},{"kind":"Field","name":{"kind":"Name","value":"configuration"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"enable_circle_documents"}},{"kind":"Field","name":{"kind":"Name","value":"enable_learning_mentor"}},{"kind":"Field","name":{"kind":"Name","value":"enable_competence_certificates"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"users"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"user_id"}},{"kind":"Field","name":{"kind":"Name","value":"first_name"}},{"kind":"Field","name":{"kind":"Name","value":"last_name"}},{"kind":"Field","name":{"kind":"Name","value":"email"}},{"kind":"Field","name":{"kind":"Name","value":"avatar_url"}},{"kind":"Field","name":{"kind":"Name","value":"role"}},{"kind":"Field","name":{"kind":"Name","value":"circles"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"slug"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"attendance_courses"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"location"}},{"kind":"Field","name":{"kind":"Name","value":"trainer"}},{"kind":"Field","name":{"kind":"Name","value":"due_date"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"start"}},{"kind":"Field","name":{"kind":"Name","value":"end"}}]}},{"kind":"Field","name":{"kind":"Name","value":"learning_content_id"}},{"kind":"Field","name":{"kind":"Name","value":"learning_content"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"circle"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"slug"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"assignments"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"submission_deadline"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"start"}}]}},{"kind":"Field","name":{"kind":"Name","value":"evaluation_deadline"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"start"}}]}},{"kind":"Field","name":{"kind":"Name","value":"learning_content"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"content_assignment"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"assignment_type"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"edoniq_tests"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"deadline"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"start"}},{"kind":"Field","name":{"kind":"Name","value":"end"}}]}},{"kind":"Field","name":{"kind":"Name","value":"learning_content"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"content_assignment"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"assignment_type"}}]}}]}}]}}]}}]}}]} as unknown as DocumentNode; +export const CourseSessionDetailDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"courseSessionDetail"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"courseSessionId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"course_session"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"courseSessionId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"course"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"slug"}},{"kind":"Field","name":{"kind":"Name","value":"configuration"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"enable_circle_documents"}},{"kind":"Field","name":{"kind":"Name","value":"enable_learning_mentor"}},{"kind":"Field","name":{"kind":"Name","value":"enable_competence_certificates"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"users"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"user_id"}},{"kind":"Field","name":{"kind":"Name","value":"first_name"}},{"kind":"Field","name":{"kind":"Name","value":"last_name"}},{"kind":"Field","name":{"kind":"Name","value":"email"}},{"kind":"Field","name":{"kind":"Name","value":"avatar_url"}},{"kind":"Field","name":{"kind":"Name","value":"role"}},{"kind":"Field","name":{"kind":"Name","value":"circles"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"slug"}}]}},{"kind":"Field","name":{"kind":"Name","value":"optional_attendance"}}]}},{"kind":"Field","name":{"kind":"Name","value":"attendance_courses"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"location"}},{"kind":"Field","name":{"kind":"Name","value":"trainer"}},{"kind":"Field","name":{"kind":"Name","value":"due_date"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"start"}},{"kind":"Field","name":{"kind":"Name","value":"end"}}]}},{"kind":"Field","name":{"kind":"Name","value":"learning_content_id"}},{"kind":"Field","name":{"kind":"Name","value":"learning_content"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"circle"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"slug"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"assignments"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"submission_deadline"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"start"}}]}},{"kind":"Field","name":{"kind":"Name","value":"evaluation_deadline"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"start"}}]}},{"kind":"Field","name":{"kind":"Name","value":"learning_content"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"content_assignment"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"assignment_type"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"edoniq_tests"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"deadline"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"start"}},{"kind":"Field","name":{"kind":"Name","value":"end"}}]}},{"kind":"Field","name":{"kind":"Name","value":"learning_content"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"content_assignment"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"assignment_type"}}]}}]}}]}}]}}]}}]} as unknown as DocumentNode; export const CourseQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"courseQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"slug"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"course"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"slug"},"value":{"kind":"Variable","name":{"kind":"Name","value":"slug"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"slug"}},{"kind":"Field","name":{"kind":"Name","value":"category_name"}},{"kind":"Field","name":{"kind":"Name","value":"configuration"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"enable_circle_documents"}},{"kind":"Field","name":{"kind":"Name","value":"enable_learning_mentor"}},{"kind":"Field","name":{"kind":"Name","value":"enable_competence_certificates"}},{"kind":"Field","name":{"kind":"Name","value":"is_uk"}}]}},{"kind":"Field","name":{"kind":"Name","value":"action_competences"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"competence_id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"CoursePageFields"}},{"kind":"Field","name":{"kind":"Name","value":"performance_criteria"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"competence_id"}},{"kind":"Field","name":{"kind":"Name","value":"learning_unit"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"slug"}},{"kind":"Field","name":{"kind":"Name","value":"evaluate_url"}}]}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"CoursePageFields"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"learning_path"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CoursePageFields"}},{"kind":"Field","name":{"kind":"Name","value":"topics"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"is_visible"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"CoursePageFields"}},{"kind":"Field","name":{"kind":"Name","value":"circles"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"goals"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"CoursePageFields"}},{"kind":"Field","name":{"kind":"Name","value":"learning_sequences"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"icon"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"CoursePageFields"}},{"kind":"Field","name":{"kind":"Name","value":"learning_units"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"evaluate_url"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"CoursePageFields"}},{"kind":"Field","name":{"kind":"Name","value":"performance_criteria"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CoursePageFields"}}]}},{"kind":"Field","name":{"kind":"Name","value":"learning_contents"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"can_user_self_toggle_course_completion"}},{"kind":"Field","name":{"kind":"Name","value":"content_url"}},{"kind":"Field","name":{"kind":"Name","value":"minutes"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"CoursePageFields"}},{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"LearningContentAssignmentObjectType"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"assignment_type"}},{"kind":"Field","name":{"kind":"Name","value":"content_assignment"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"assignment_type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"competence_certificate"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CoursePageFields"}}]}}]}},{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"LearningContentEdoniqTestObjectType"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"checkbox_text"}},{"kind":"Field","name":{"kind":"Name","value":"has_extended_time_test"}},{"kind":"Field","name":{"kind":"Name","value":"content_assignment"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"assignment_type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"competence_certificate"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CoursePageFields"}}]}}]}},{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"LearningContentRichTextObjectType"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"text"}}]}}]}}]}}]}}]}}]}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CoursePageFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"CoursePageInterface"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"slug"}},{"kind":"Field","name":{"kind":"Name","value":"content_type"}},{"kind":"Field","name":{"kind":"Name","value":"frontend_url"}}]}}]} as unknown as DocumentNode; export const DashboardConfigDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"dashboardConfig"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"dashboard_config"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"slug"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"dashboard_type"}},{"kind":"Field","name":{"kind":"Name","value":"course_configuration"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"enable_circle_documents"}},{"kind":"Field","name":{"kind":"Name","value":"enable_learning_mentor"}},{"kind":"Field","name":{"kind":"Name","value":"enable_competence_certificates"}},{"kind":"Field","name":{"kind":"Name","value":"is_uk"}}]}}]}}]}}]} as unknown as DocumentNode; export const DashboardProgressDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"dashboardProgress"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"courseId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"course_progress"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"course_id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"courseId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"_id"}},{"kind":"Field","name":{"kind":"Name","value":"course_id"}},{"kind":"Field","name":{"kind":"Name","value":"session_to_continue_id"}},{"kind":"Field","name":{"kind":"Name","value":"competence"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"_id"}},{"kind":"Field","name":{"kind":"Name","value":"total_count"}},{"kind":"Field","name":{"kind":"Name","value":"success_count"}},{"kind":"Field","name":{"kind":"Name","value":"fail_count"}}]}},{"kind":"Field","name":{"kind":"Name","value":"assignment"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"_id"}},{"kind":"Field","name":{"kind":"Name","value":"total_count"}},{"kind":"Field","name":{"kind":"Name","value":"points_max_count"}},{"kind":"Field","name":{"kind":"Name","value":"points_achieved_count"}}]}}]}}]}}]} as unknown as DocumentNode; diff --git a/client/src/gql/schema.graphql b/client/src/gql/schema.graphql index af9a73ac..14d5f4ed 100644 --- a/client/src/gql/schema.graphql +++ b/client/src/gql/schema.graphql @@ -713,6 +713,7 @@ type CourseSessionUserObjectsType { avatar_url: String! role: String! circles: [CourseSessionUserExpertCircleType!]! + optional_attendance: Boolean } type CourseSessionUserExpertCircleType { diff --git a/client/src/graphql/queries.ts b/client/src/graphql/queries.ts index c1ef08ac..65d46547 100644 --- a/client/src/graphql/queries.ts +++ b/client/src/graphql/queries.ts @@ -192,6 +192,7 @@ export const COURSE_SESSION_DETAIL_QUERY = graphql(` title slug } + optional_attendance } attendance_courses { id diff --git a/client/src/pages/cockpit/attendanceCheckPage/AttendanceCheckPage.vue b/client/src/pages/cockpit/attendanceCheckPage/AttendanceCheckPage.vue index b079551d..9f6d6e94 100644 --- a/client/src/pages/cockpit/attendanceCheckPage/AttendanceCheckPage.vue +++ b/client/src/pages/cockpit/attendanceCheckPage/AttendanceCheckPage.vue @@ -224,6 +224,9 @@ watch( :name="`${csu.first_name} ${csu.last_name}`" :avatar-url="csu.avatar_url" :class="0 === index ? 'border-none' : ''" + :extra-info=" + csu.optional_attendance ? `${$t('a.Optionale Anwesenheit')}` : '' + " > { {{ user.first_name }} {{ user.last_name }} {{ user.email }} - {{ $t("a.Teilnehmer") }} + + {{ $t("a.Teilnehmer") }} + + {{ $t("a.Optionale Anwesenheit") }} + + diff --git a/cypress/e2e/cockpit/cockpitAttendaceCheck.cy.js b/cypress/e2e/cockpit/cockpitAttendaceCheck.cy.js new file mode 100644 index 00000000..81f0eed9 --- /dev/null +++ b/cypress/e2e/cockpit/cockpitAttendaceCheck.cy.js @@ -0,0 +1,11 @@ +import { login } from "../helpers"; + +describe("cockpitAttendaceCheck.cy.js", () => { + it("will display optional participants", () => { + cy.manageCommand("cypress_reset --set-optional-attendance-flag"); + login("test-trainer1@example.com", "test"); + cy.visit("/course/test-lehrgang/cockpit/attendance"); + + cy.get('[data-cy="extra-info"]').should("contain", "Optionale Anwesenheit"); + }); +}); diff --git a/cypress/e2e/publicProfile/publicProfileAttendance.cy.js b/cypress/e2e/publicProfile/publicProfileAttendance.cy.js new file mode 100644 index 00000000..2abd72e1 --- /dev/null +++ b/cypress/e2e/publicProfile/publicProfileAttendance.cy.js @@ -0,0 +1,17 @@ +import { login } from "../helpers"; +import { TEST_STUDENT1_USER_ID } from "../../consts"; + +describe("publicProfileAttendance.cy.js", () => { + it("will display optional attendance", () => { + cy.manageCommand("cypress_reset --set-optional-attendance-flag"); + login("test-trainer1@example.com", "test"); + cy.visit( + `course/test-lehrgang/profile/${TEST_STUDENT1_USER_ID}/learning-path`, + ); + + cy.get('[data-cy="optional-attendance"]').should( + "contain", + "Optionale Anwesenheit", + ); + }); +}); diff --git a/server/locale/de/LC_MESSAGES/django.po b/server/locale/de/LC_MESSAGES/django.po index 826c9f35..d377dfff 100644 --- a/server/locale/de/LC_MESSAGES/django.po +++ b/server/locale/de/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-18 15:24+0200\n" +"POT-Creation-Date: 2024-07-27 20:59+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -38,32 +38,32 @@ msgstr "" msgid "Nicht bestanden" msgstr "" -#: vbv_lernwelt/assignment/export.py:203 vbv_lernwelt/assignment/export.py:206 -#: vbv_lernwelt/assignment/export.py:207 +#: vbv_lernwelt/assignment/export.py:204 vbv_lernwelt/assignment/export.py:208 +#: vbv_lernwelt/assignment/export.py:209 msgid "Keine Daten" msgstr "" -#: vbv_lernwelt/core/admin.py:32 +#: vbv_lernwelt/core/admin.py:38 vbv_lernwelt/sso/admin.py:83 msgid "Personal info" msgstr "" -#: vbv_lernwelt/core/admin.py:34 +#: vbv_lernwelt/core/admin.py:40 msgid "Permissions" msgstr "" -#: vbv_lernwelt/core/admin.py:45 +#: vbv_lernwelt/core/admin.py:51 msgid "Important dates" msgstr "" -#: vbv_lernwelt/core/admin.py:47 +#: vbv_lernwelt/core/admin.py:53 msgid "Profile" msgstr "" -#: vbv_lernwelt/core/admin.py:62 +#: vbv_lernwelt/core/admin.py:70 msgid "Organisation" msgstr "" -#: vbv_lernwelt/core/admin.py:75 +#: vbv_lernwelt/core/admin.py:83 vbv_lernwelt/sso/admin.py:86 msgid "Additional data" msgstr "" @@ -87,31 +87,31 @@ msgstr "" msgid "Lehrgang-Seite" msgstr "" -#: vbv_lernwelt/course/models.py:272 +#: vbv_lernwelt/course/models.py:278 msgid "Teilnehmer" msgstr "" -#: vbv_lernwelt/course/models.py:273 +#: vbv_lernwelt/course/models.py:279 msgid "Experte/Trainer" msgstr "" -#: vbv_lernwelt/course/models.py:332 +#: vbv_lernwelt/course/models.py:339 msgid "Dokumente im Circle ein/aus" msgstr "" -#: vbv_lernwelt/course/models.py:336 +#: vbv_lernwelt/course/models.py:343 msgid "Lernmentor-Funktion ein/aus" msgstr "" -#: vbv_lernwelt/course/models.py:340 +#: vbv_lernwelt/course/models.py:347 msgid "Kompetenzweise ein/aus" msgstr "" -#: vbv_lernwelt/course/models.py:343 +#: vbv_lernwelt/course/models.py:350 msgid "Versicherungsvermittler-Lehrgang" msgstr "" -#: vbv_lernwelt/course/models.py:344 +#: vbv_lernwelt/course/models.py:351 msgid "ÜK-Lehrgang" msgstr "" @@ -119,31 +119,43 @@ msgstr "" msgid "export_anwesenheit" msgstr "" -#: vbv_lernwelt/course_session/services/export_attendance.py:92 +#: vbv_lernwelt/course_session/services/export_attendance.py:86 +msgid "Optionale Anwesenheit" +msgstr "" + +#: vbv_lernwelt/course_session/services/export_attendance.py:96 msgid "Anwesenheit" msgstr "" -#: vbv_lernwelt/course_session/services/export_attendance.py:116 +#: vbv_lernwelt/course_session/services/export_attendance.py:119 +msgid "Ja" +msgstr "" + +#: vbv_lernwelt/course_session/services/export_attendance.py:119 +msgid "Nein" +msgstr "" + +#: vbv_lernwelt/course_session/services/export_attendance.py:128 msgid "Anwesend" msgstr "" -#: vbv_lernwelt/course_session/services/export_attendance.py:116 +#: vbv_lernwelt/course_session/services/export_attendance.py:128 msgid "Nicht anwesend" msgstr "" -#: vbv_lernwelt/course_session/services/export_attendance.py:123 +#: vbv_lernwelt/course_session/services/export_attendance.py:135 msgid "Vorname" msgstr "" -#: vbv_lernwelt/course_session/services/export_attendance.py:124 +#: vbv_lernwelt/course_session/services/export_attendance.py:136 msgid "Nachname" msgstr "" -#: vbv_lernwelt/course_session/services/export_attendance.py:125 +#: vbv_lernwelt/course_session/services/export_attendance.py:137 msgid "Email" msgstr "Email" -#: vbv_lernwelt/course_session/services/export_attendance.py:126 +#: vbv_lernwelt/course_session/services/export_attendance.py:138 msgid "Lehrvertragsnummer" msgstr "" diff --git a/server/locale/fr/LC_MESSAGES/django.mo b/server/locale/fr/LC_MESSAGES/django.mo index ce61e8a7..57810233 100644 Binary files a/server/locale/fr/LC_MESSAGES/django.mo and b/server/locale/fr/LC_MESSAGES/django.mo differ diff --git a/server/locale/fr/LC_MESSAGES/django.po b/server/locale/fr/LC_MESSAGES/django.po index 949dc188..f18ecf09 100644 --- a/server/locale/fr/LC_MESSAGES/django.po +++ b/server/locale/fr/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-07-12 09:37+0200\n" +"POT-Creation-Date: 2024-07-27 20:59+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -95,23 +95,23 @@ msgstr "" msgid "Experte/Trainer" msgstr "" -#: vbv_lernwelt/course/models.py:338 +#: vbv_lernwelt/course/models.py:339 msgid "Dokumente im Circle ein/aus" msgstr "" -#: vbv_lernwelt/course/models.py:342 +#: vbv_lernwelt/course/models.py:343 msgid "Lernmentor-Funktion ein/aus" msgstr "" -#: vbv_lernwelt/course/models.py:346 +#: vbv_lernwelt/course/models.py:347 msgid "Kompetenzweise ein/aus" msgstr "" -#: vbv_lernwelt/course/models.py:349 +#: vbv_lernwelt/course/models.py:350 msgid "Versicherungsvermittler-Lehrgang" msgstr "" -#: vbv_lernwelt/course/models.py:350 +#: vbv_lernwelt/course/models.py:351 msgid "ÜK-Lehrgang" msgstr "" @@ -119,31 +119,44 @@ msgstr "" msgid "export_anwesenheit" msgstr "export_presence" -#: vbv_lernwelt/course_session/services/export_attendance.py:92 +#: vbv_lernwelt/course_session/services/export_attendance.py:86 +#| msgid "Anwesenheit" +msgid "Optionale Anwesenheit" +msgstr "Présence facultative" + +#: vbv_lernwelt/course_session/services/export_attendance.py:96 msgid "Anwesenheit" msgstr "Présence" -#: vbv_lernwelt/course_session/services/export_attendance.py:117 +#: vbv_lernwelt/course_session/services/export_attendance.py:119 +msgid "Ja" +msgstr "Oui" + +#: vbv_lernwelt/course_session/services/export_attendance.py:119 +msgid "Nein" +msgstr "Non" + +#: vbv_lernwelt/course_session/services/export_attendance.py:128 msgid "Anwesend" msgstr "Présent" -#: vbv_lernwelt/course_session/services/export_attendance.py:117 +#: vbv_lernwelt/course_session/services/export_attendance.py:128 msgid "Nicht anwesend" msgstr "Pas présent" -#: vbv_lernwelt/course_session/services/export_attendance.py:124 +#: vbv_lernwelt/course_session/services/export_attendance.py:135 msgid "Vorname" msgstr "Prénom" -#: vbv_lernwelt/course_session/services/export_attendance.py:125 +#: vbv_lernwelt/course_session/services/export_attendance.py:136 msgid "Nachname" msgstr "Nom de famille" -#: vbv_lernwelt/course_session/services/export_attendance.py:126 +#: vbv_lernwelt/course_session/services/export_attendance.py:137 msgid "Email" msgstr "E-mail" -#: vbv_lernwelt/course_session/services/export_attendance.py:127 +#: vbv_lernwelt/course_session/services/export_attendance.py:138 msgid "Lehrvertragsnummer" msgstr "Numéro de contrat d'apprentissage" diff --git a/server/locale/it/LC_MESSAGES/django.mo b/server/locale/it/LC_MESSAGES/django.mo index 9cd960ba..a046bd94 100644 Binary files a/server/locale/it/LC_MESSAGES/django.mo and b/server/locale/it/LC_MESSAGES/django.mo differ diff --git a/server/locale/it/LC_MESSAGES/django.po b/server/locale/it/LC_MESSAGES/django.po index bd228f25..13e9a24a 100644 --- a/server/locale/it/LC_MESSAGES/django.po +++ b/server/locale/it/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-07-12 09:36+0200\n" +"POT-Creation-Date: 2024-07-27 20:59+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -95,23 +95,23 @@ msgstr "" msgid "Experte/Trainer" msgstr "" -#: vbv_lernwelt/course/models.py:338 +#: vbv_lernwelt/course/models.py:339 msgid "Dokumente im Circle ein/aus" msgstr "" -#: vbv_lernwelt/course/models.py:342 +#: vbv_lernwelt/course/models.py:343 msgid "Lernmentor-Funktion ein/aus" msgstr "" -#: vbv_lernwelt/course/models.py:346 +#: vbv_lernwelt/course/models.py:347 msgid "Kompetenzweise ein/aus" msgstr "" -#: vbv_lernwelt/course/models.py:349 +#: vbv_lernwelt/course/models.py:350 msgid "Versicherungsvermittler-Lehrgang" msgstr "" -#: vbv_lernwelt/course/models.py:350 +#: vbv_lernwelt/course/models.py:351 msgid "ÜK-Lehrgang" msgstr "" @@ -119,31 +119,44 @@ msgstr "" msgid "export_anwesenheit" msgstr "esportazione_presenza" -#: vbv_lernwelt/course_session/services/export_attendance.py:92 +#: vbv_lernwelt/course_session/services/export_attendance.py:86 +#| msgid "Anwesenheit" +msgid "Optionale Anwesenheit" +msgstr "Presenza opzionale" + +#: vbv_lernwelt/course_session/services/export_attendance.py:96 msgid "Anwesenheit" msgstr "Presenza" -#: vbv_lernwelt/course_session/services/export_attendance.py:117 +#: vbv_lernwelt/course_session/services/export_attendance.py:119 +msgid "Ja" +msgstr "Sì" + +#: vbv_lernwelt/course_session/services/export_attendance.py:119 +msgid "Nein" +msgstr "No" + +#: vbv_lernwelt/course_session/services/export_attendance.py:128 msgid "Anwesend" msgstr "Presente" -#: vbv_lernwelt/course_session/services/export_attendance.py:117 +#: vbv_lernwelt/course_session/services/export_attendance.py:128 msgid "Nicht anwesend" msgstr "Non presente" -#: vbv_lernwelt/course_session/services/export_attendance.py:124 +#: vbv_lernwelt/course_session/services/export_attendance.py:135 msgid "Vorname" msgstr "Nome" -#: vbv_lernwelt/course_session/services/export_attendance.py:125 +#: vbv_lernwelt/course_session/services/export_attendance.py:136 msgid "Nachname" msgstr "Cognome" -#: vbv_lernwelt/course_session/services/export_attendance.py:126 +#: vbv_lernwelt/course_session/services/export_attendance.py:137 msgid "Email" msgstr "Email" -#: vbv_lernwelt/course_session/services/export_attendance.py:127 +#: vbv_lernwelt/course_session/services/export_attendance.py:138 msgid "Lehrvertragsnummer" msgstr "Numero di contratto di tirocinio" diff --git a/server/vbv_lernwelt/api/tests/test_profile.py b/server/vbv_lernwelt/api/tests/test_profile.py index bb8c3206..453e479f 100644 --- a/server/vbv_lernwelt/api/tests/test_profile.py +++ b/server/vbv_lernwelt/api/tests/test_profile.py @@ -71,5 +71,6 @@ class ProfileViewTest(APITestCase): "organisation_postal_code": "", "organisation_city": "", "organisation_country": None, + "optional_attendance": [], }, ) diff --git a/server/vbv_lernwelt/core/management/commands/cypress_reset.py b/server/vbv_lernwelt/core/management/commands/cypress_reset.py index 1a02a343..38c38c9c 100644 --- a/server/vbv_lernwelt/core/management/commands/cypress_reset.py +++ b/server/vbv_lernwelt/core/management/commands/cypress_reset.py @@ -120,6 +120,11 @@ from vbv_lernwelt.shop.models import CheckoutInformation default=False, help="Will set only the is_vv flag for the test course and enable learning mentors for the course", ) +@click.option( + "--set-optional-attendance-flag/--no-optional-attendance-flag", + default=False, + help="Will set the optional attendance flag for the test-student1@example.com", +) def command( create_assignment_completion, create_assignment_evaluation, @@ -133,6 +138,7 @@ def command( create_learning_mentor, set_only_is_uk_flag, set_only_is_vv_flag, + set_optional_attendance_flag, ): print("cypress reset data") CourseCompletion.objects.all().delete() @@ -478,4 +484,17 @@ def command( course.configuration.is_uk = False course.configuration.enable_learning_mentor = False + if set_optional_attendance_flag: + course_session_user = CourseSessionUser.objects.get( + user__id=TEST_STUDENT1_USER_ID + ) + course_session_user.optional_attendance = True + course_session_user.save() + else: + course_session_user = CourseSessionUser.objects.get( + user_id=TEST_STUDENT1_USER_ID + ) + course_session_user.optional_attendance = False + course_session_user.save() + course.configuration.save() diff --git a/server/vbv_lernwelt/core/serializers.py b/server/vbv_lernwelt/core/serializers.py index 31965017..ba43e949 100644 --- a/server/vbv_lernwelt/core/serializers.py +++ b/server/vbv_lernwelt/core/serializers.py @@ -55,6 +55,7 @@ class UserSerializer(serializers.ModelSerializer): course_session_experts = serializers.SerializerMethodField() country = CountrySerializer() organisation_country = CountrySerializer() + optional_attendance = serializers.SerializerMethodField() class Meta: model = User @@ -83,6 +84,7 @@ class UserSerializer(serializers.ModelSerializer): "organisation_postal_code", "organisation_city", "organisation_country", + "optional_attendance", ] read_only_fields = [ "id", @@ -108,6 +110,12 @@ class UserSerializer(serializers.ModelSerializer): return [str(_id) for _id in (supervisor_in_session_ids | expert_in_session_ids)] + def get_optional_attendance(self, obj: User) -> bool: + optional_attendance_ids = CourseSessionUser.objects.filter( + user=obj, optional_attendance=True + ).values_list("course_session__id", flat=True) + return [str(id) for id in optional_attendance_ids] + def update(self, instance, validated_data): country_data = validated_data.pop("country", None) organisation_country_data = validated_data.pop("organisation_country", None) diff --git a/server/vbv_lernwelt/course/admin.py b/server/vbv_lernwelt/course/admin.py index 4a4741f3..8ec26bb9 100644 --- a/server/vbv_lernwelt/course/admin.py +++ b/server/vbv_lernwelt/course/admin.py @@ -64,6 +64,7 @@ class CourseSessionUserAdmin(admin.ModelAdmin): "course_session", "role", "circles", + "optional_attendance", # "created_at", # "updated_at", ] @@ -76,6 +77,7 @@ class CourseSessionUserAdmin(admin.ModelAdmin): list_filter = [ "role", "course_session", + "optional_attendance", ] raw_id_fields = [ "user", @@ -97,7 +99,7 @@ class CourseSessionUserAdmin(admin.ModelAdmin): return ", ".join([c.title for c in obj.expert.all()]) fieldsets = [ - (None, {"fields": ("user", "course_session", "role")}), + (None, {"fields": ("user", "course_session", "role", "optional_attendance")}), ( "Expert/Trainer", { diff --git a/server/vbv_lernwelt/course/graphql/types.py b/server/vbv_lernwelt/course/graphql/types.py index fb6ec987..32665319 100644 --- a/server/vbv_lernwelt/course/graphql/types.py +++ b/server/vbv_lernwelt/course/graphql/types.py @@ -151,6 +151,7 @@ class CourseSessionUserObjectsType(ObjectType): circles = graphene.List( graphene.NonNull(CourseSessionUserExpertCircleType), required=True ) + optional_attendance = graphene.Boolean(required=False) class CircleDocumentObjectType(DjangoObjectType): @@ -233,6 +234,7 @@ class CourseSessionObjectType(DjangoObjectType): ) for circle in course_session_user.expert.all() # noqa ], + optional_attendance=course_session_user.optional_attendance, # noqa ) ) diff --git a/server/vbv_lernwelt/course/migrations/0009_coursesessionuser_required_attendance_and_more.py b/server/vbv_lernwelt/course/migrations/0009_coursesessionuser_required_attendance_and_more.py new file mode 100644 index 00000000..3c7fe2f8 --- /dev/null +++ b/server/vbv_lernwelt/course/migrations/0009_coursesessionuser_required_attendance_and_more.py @@ -0,0 +1,32 @@ +# Generated by Django 4.2.13 on 2024-07-25 05:47 + +from django.db import migrations, models + +import vbv_lernwelt.course.models + + +class Migration(migrations.Migration): + dependencies = [ + ("course", "0008_auto_20240403_1132"), + ] + + operations = [ + migrations.AddField( + model_name="coursesessionuser", + name="optional_attendance", + field=models.BooleanField(default=False), + ), + migrations.AlterField( + model_name="coursecompletion", + name="completion_status", + field=models.CharField( + choices=[ + ("SUCCESS", "Success"), + ("FAIL", "Fail"), + ("UNKNOWN", "Unknown"), + ], + default=vbv_lernwelt.course.models.CourseCompletionStatus["UNKNOWN"], + max_length=255, + ), + ), + ] diff --git a/server/vbv_lernwelt/course/models.py b/server/vbv_lernwelt/course/models.py index d8b6997a..d85c6a9a 100644 --- a/server/vbv_lernwelt/course/models.py +++ b/server/vbv_lernwelt/course/models.py @@ -283,6 +283,7 @@ class CourseSessionUser(models.Model): expert = models.ManyToManyField( "learnpath.Circle", related_name="expert", blank=True ) + optional_attendance = models.BooleanField(default=False) class Meta: constraints = [ diff --git a/server/vbv_lernwelt/course_session/services/export_attendance.py b/server/vbv_lernwelt/course_session/services/export_attendance.py index 71587217..214d9b77 100644 --- a/server/vbv_lernwelt/course_session/services/export_attendance.py +++ b/server/vbv_lernwelt/course_session/services/export_attendance.py @@ -82,6 +82,10 @@ def _create_sheet( # headers # common user headers..., , status , .. col_idx = add_user_headers(sheet) + + sheet.cell(row=1, column=col_idx, value=str(_("Optionale Anwesenheit"))) + col_idx += 1 + attendance_data = {} for course in attendance_courses: @@ -110,6 +114,13 @@ def _create_sheet( def _add_rows(sheet, users: list[CourseSessionUser], attendance_data): for row_idx, user in enumerate(users, start=2): col_idx = add_user_export_data(sheet, user, row_idx) + + optional_attendance_text = ( + str(_("Ja")) if user.optional_attendance else str(_("Nein")) + ) + sheet.cell(row=row_idx, column=col_idx, value=optional_attendance_text) + col_idx += 1 + for key, user_dict_map in attendance_data.items(): user_dict = user_dict_map.get(str(user.user.id), {}) status = user_dict.get("status", "") if user_dict else "" diff --git a/server/vbv_lernwelt/course_session/tests/test_attendance_export.py b/server/vbv_lernwelt/course_session/tests/test_attendance_export.py index 350ffaa4..eb217f4b 100644 --- a/server/vbv_lernwelt/course_session/tests/test_attendance_export.py +++ b/server/vbv_lernwelt/course_session/tests/test_attendance_export.py @@ -8,7 +8,7 @@ from vbv_lernwelt.core.constants import TEST_STUDENT1_USER_ID, TEST_STUDENT2_USE from vbv_lernwelt.core.create_default_users import create_default_users from vbv_lernwelt.core.models import User from vbv_lernwelt.course.creators.test_course import create_test_course -from vbv_lernwelt.course.models import CourseSession +from vbv_lernwelt.course.models import CourseSession, CourseSessionUser from vbv_lernwelt.course_session.services.export_attendance import export_attendance @@ -42,6 +42,11 @@ class AttendanceExportTestCase(ExportBaseTestCase): self.test_student1 = User.objects.get(id=TEST_STUDENT1_USER_ID) self.test_student1.additional_json_data = {"Lehrvertragsnummer": 1234567890} self.test_student1.save() + csu1 = CourseSessionUser.objects.get( + user=self.test_student1, course_session=self.course_session_be + ) + csu1.optional_attendance = True + csu1.save() self.test_student2 = User.objects.get(id=TEST_STUDENT2_USER_ID) self.test_student2.additional_json_data = {"Lehrvertragsnummer": 1987654321} self.test_student2.save() @@ -64,6 +69,7 @@ class AttendanceExportTestCase(ExportBaseTestCase): self.test_student1.last_name, self.test_student1.email, self.test_student1.additional_json_data["Lehrvertragsnummer"], + "Ja", "Anwesend", ], [ @@ -71,6 +77,7 @@ class AttendanceExportTestCase(ExportBaseTestCase): self.test_student2.last_name, self.test_student2.email, self.test_student2.additional_json_data["Lehrvertragsnummer"], + "Nein", "Nicht anwesend", ], [ @@ -78,6 +85,7 @@ class AttendanceExportTestCase(ExportBaseTestCase): self.test_student3.last_name, self.test_student3.email, None, + "Nein", "Nicht anwesend", ], ] @@ -95,6 +103,7 @@ class AttendanceExportTestCase(ExportBaseTestCase): "Nachname", "Email", "Lehrvertragsnummer", + "Optionale Anwesenheit", f"Anwesenheit {csac.get_circle().title} {csac.due_date.start.strftime('%d.%m.%Y')}", ] @@ -103,7 +112,7 @@ class AttendanceExportTestCase(ExportBaseTestCase): self.assertEqual(len(wb.sheetnames), 1) self.assertEqual(wb.sheetnames[0], "Test Bern 2022 a") - self._check_export(wb, self.expected_data_be, 4, 5) + self._check_export(wb, self.expected_data_be, 4, 6) def test_attendance_export_multiple_cs(self): self.attendance_course_zh.attendance_user_list = [ @@ -123,6 +132,7 @@ class AttendanceExportTestCase(ExportBaseTestCase): self.test_student2.last_name, self.test_student2.email, self.test_student2.additional_json_data["Lehrvertragsnummer"], + "Nein", "Anwesend", ], ] @@ -136,10 +146,10 @@ class AttendanceExportTestCase(ExportBaseTestCase): self.assertEqual(wb.sheetnames[0], "Test Bern 2022 a") self.assertEqual(wb.sheetnames[1], "Test Zürich 2022 a") - self._check_export(wb, self.expected_data_be, 4, 5) + self._check_export(wb, self.expected_data_be, 4, 6) wb.active = wb["Test Zürich 2022 a"] - self._check_export(wb, expected_data_zh, 2, 5) + self._check_export(wb, expected_data_zh, 2, 6) def test_french_export(self): activate("fr") @@ -150,6 +160,7 @@ class AttendanceExportTestCase(ExportBaseTestCase): "Nom de famille", "E-mail", "Numéro de contrat d'apprentissage", + "Présence facultative", f"Présence {self.attendance_course_be.get_circle().title} {self.attendance_course_be.due_date.start.strftime('%d.%m.%Y')}", ] @@ -160,6 +171,7 @@ class AttendanceExportTestCase(ExportBaseTestCase): self.test_student1.last_name, self.test_student1.email, self.test_student1.additional_json_data["Lehrvertragsnummer"], + "Oui", "Présent", ], [ @@ -167,6 +179,7 @@ class AttendanceExportTestCase(ExportBaseTestCase): self.test_student2.last_name, self.test_student2.email, self.test_student2.additional_json_data["Lehrvertragsnummer"], + "Non", "Pas présent", ], [ @@ -174,10 +187,11 @@ class AttendanceExportTestCase(ExportBaseTestCase): self.test_student3.last_name, self.test_student3.email, None, + "Non", "Pas présent", ], ] - self._check_export(wb, expected_data_be, 4, 5) + self._check_export(wb, expected_data_be, 4, 6) def test_italian_export(self): activate("it") @@ -188,6 +202,7 @@ class AttendanceExportTestCase(ExportBaseTestCase): "Cognome", "Email", "Numero di contratto di tirocinio", + "Presenza opzionale", f"Presenza {self.attendance_course_be.get_circle().title} {self.attendance_course_be.due_date.start.strftime('%d.%m.%Y')}", ] @@ -198,6 +213,7 @@ class AttendanceExportTestCase(ExportBaseTestCase): self.test_student1.last_name, self.test_student1.email, self.test_student1.additional_json_data["Lehrvertragsnummer"], + "Sì", "Presente", ], [ @@ -205,6 +221,7 @@ class AttendanceExportTestCase(ExportBaseTestCase): self.test_student2.last_name, self.test_student2.email, self.test_student2.additional_json_data["Lehrvertragsnummer"], + "No", "Non presente", ], [ @@ -212,7 +229,8 @@ class AttendanceExportTestCase(ExportBaseTestCase): self.test_student3.last_name, self.test_student3.email, None, + "No", "Non presente", ], ] - self._check_export(wb, expected_data_be, 4, 5) + self._check_export(wb, expected_data_be, 4, 6)
{{ name }}
+ {{ props.name }} +
+ {{ props.extraInfo }} +
{{ user.email }}
{{ $t("a.Teilnehmer") }}
+ {{ $t("a.Teilnehmer") }} + + {{ $t("a.Optionale Anwesenheit") }} + +