Add Knowledge Assignment (Fachcheck) type

This commit is contained in:
Christian Cueni 2023-11-16 12:58:44 +01:00
parent 427ed3e827
commit 766944d580
10 changed files with 125 additions and 1 deletions

View File

@ -615,6 +615,23 @@ export type LearningContentInterface = {
translation_key: Scalars['String']['output'];
};
export type LearningContentKnowledgeAssessmentObjectType = CoursePageInterface & LearningContentInterface & {
__typename?: 'LearningContentKnowledgeAssessmentObjectType';
can_user_self_toggle_course_completion: Scalars['Boolean']['output'];
circle?: Maybe<CircleLightObjectType>;
content_type: Scalars['String']['output'];
content_url: Scalars['String']['output'];
course?: Maybe<CourseObjectType>;
description: Scalars['String']['output'];
frontend_url: Scalars['String']['output'];
id: Scalars['ID']['output'];
live: Scalars['Boolean']['output'];
minutes?: Maybe<Scalars['Int']['output']>;
slug: Scalars['String']['output'];
title: Scalars['String']['output'];
translation_key: Scalars['String']['output'];
};
export type LearningContentLearningModuleObjectType = CoursePageInterface & LearningContentInterface & {
__typename?: 'LearningContentLearningModuleObjectType';
can_user_self_toggle_course_completion: Scalars['Boolean']['output'];
@ -849,6 +866,7 @@ export type Query = {
learning_content_attendance_course?: Maybe<LearningContentAttendanceCourseObjectType>;
learning_content_document_list?: Maybe<LearningContentDocumentListObjectType>;
learning_content_feedback?: Maybe<LearningContentFeedbackObjectType>;
learning_content_knowledge_assessment?: Maybe<LearningContentKnowledgeAssessmentObjectType>;
learning_content_learning_module?: Maybe<LearningContentLearningModuleObjectType>;
learning_content_media_library?: Maybe<LearningContentMediaLibraryObjectType>;
learning_content_placeholder?: Maybe<LearningContentPlaceholderObjectType>;
@ -1024,6 +1042,8 @@ type CoursePageFieldsLearningContentEdoniqTestObjectTypeFragment = { __typename?
type CoursePageFieldsLearningContentFeedbackObjectTypeFragment = { __typename?: 'LearningContentFeedbackObjectType', title: string, id: string, slug: string, content_type: string, frontend_url: string } & { ' $fragmentName'?: 'CoursePageFieldsLearningContentFeedbackObjectTypeFragment' };
type CoursePageFieldsLearningContentKnowledgeAssessmentObjectTypeFragment = { __typename?: 'LearningContentKnowledgeAssessmentObjectType', title: string, id: string, slug: string, content_type: string, frontend_url: string } & { ' $fragmentName'?: 'CoursePageFieldsLearningContentKnowledgeAssessmentObjectTypeFragment' };
type CoursePageFieldsLearningContentLearningModuleObjectTypeFragment = { __typename?: 'LearningContentLearningModuleObjectType', title: string, id: string, slug: string, content_type: string, frontend_url: string } & { ' $fragmentName'?: 'CoursePageFieldsLearningContentLearningModuleObjectTypeFragment' };
type CoursePageFieldsLearningContentMediaLibraryObjectTypeFragment = { __typename?: 'LearningContentMediaLibraryObjectType', title: string, id: string, slug: string, content_type: string, frontend_url: string } & { ' $fragmentName'?: 'CoursePageFieldsLearningContentMediaLibraryObjectTypeFragment' };
@ -1044,7 +1064,7 @@ type CoursePageFieldsPerformanceCriteriaObjectTypeFragment = { __typename?: 'Per
type CoursePageFieldsTopicObjectTypeFragment = { __typename?: 'TopicObjectType', title: string, id: string, slug: string, content_type: string, frontend_url: string } & { ' $fragmentName'?: 'CoursePageFieldsTopicObjectTypeFragment' };
export type CoursePageFieldsFragment = CoursePageFieldsActionCompetenceObjectTypeFragment | CoursePageFieldsAssignmentObjectTypeFragment | CoursePageFieldsCircleObjectTypeFragment | CoursePageFieldsCompetenceCertificateListObjectTypeFragment | CoursePageFieldsCompetenceCertificateObjectTypeFragment | CoursePageFieldsLearningContentAssignmentObjectTypeFragment | CoursePageFieldsLearningContentAttendanceCourseObjectTypeFragment | CoursePageFieldsLearningContentDocumentListObjectTypeFragment | CoursePageFieldsLearningContentEdoniqTestObjectTypeFragment | CoursePageFieldsLearningContentFeedbackObjectTypeFragment | CoursePageFieldsLearningContentLearningModuleObjectTypeFragment | CoursePageFieldsLearningContentMediaLibraryObjectTypeFragment | CoursePageFieldsLearningContentPlaceholderObjectTypeFragment | CoursePageFieldsLearningContentRichTextObjectTypeFragment | CoursePageFieldsLearningContentVideoObjectTypeFragment | CoursePageFieldsLearningPathObjectTypeFragment | CoursePageFieldsLearningSequenceObjectTypeFragment | CoursePageFieldsLearningUnitObjectTypeFragment | CoursePageFieldsPerformanceCriteriaObjectTypeFragment | CoursePageFieldsTopicObjectTypeFragment;
export type CoursePageFieldsFragment = CoursePageFieldsActionCompetenceObjectTypeFragment | CoursePageFieldsAssignmentObjectTypeFragment | CoursePageFieldsCircleObjectTypeFragment | CoursePageFieldsCompetenceCertificateListObjectTypeFragment | CoursePageFieldsCompetenceCertificateObjectTypeFragment | CoursePageFieldsLearningContentAssignmentObjectTypeFragment | CoursePageFieldsLearningContentAttendanceCourseObjectTypeFragment | CoursePageFieldsLearningContentDocumentListObjectTypeFragment | CoursePageFieldsLearningContentEdoniqTestObjectTypeFragment | CoursePageFieldsLearningContentFeedbackObjectTypeFragment | CoursePageFieldsLearningContentKnowledgeAssessmentObjectTypeFragment | CoursePageFieldsLearningContentLearningModuleObjectTypeFragment | CoursePageFieldsLearningContentMediaLibraryObjectTypeFragment | CoursePageFieldsLearningContentPlaceholderObjectTypeFragment | CoursePageFieldsLearningContentRichTextObjectTypeFragment | CoursePageFieldsLearningContentVideoObjectTypeFragment | CoursePageFieldsLearningPathObjectTypeFragment | CoursePageFieldsLearningSequenceObjectTypeFragment | CoursePageFieldsLearningUnitObjectTypeFragment | CoursePageFieldsPerformanceCriteriaObjectTypeFragment | CoursePageFieldsTopicObjectTypeFragment;
export type AttendanceCheckQueryQueryVariables = Exact<{
courseSessionId: Scalars['ID']['input'];
@ -1090,6 +1110,9 @@ export type CompetenceCertificateQueryQuery = { __typename?: 'Query', competence
) | (
{ __typename?: 'LearningContentFeedbackObjectType', circle?: { __typename?: 'CircleLightObjectType', id: string, title: string, slug: string } | null }
& { ' $fragmentRefs'?: { 'CoursePageFieldsLearningContentFeedbackObjectTypeFragment': CoursePageFieldsLearningContentFeedbackObjectTypeFragment } }
) | (
{ __typename?: 'LearningContentKnowledgeAssessmentObjectType', circle?: { __typename?: 'CircleLightObjectType', id: string, title: string, slug: string } | null }
& { ' $fragmentRefs'?: { 'CoursePageFieldsLearningContentKnowledgeAssessmentObjectTypeFragment': CoursePageFieldsLearningContentKnowledgeAssessmentObjectTypeFragment } }
) | (
{ __typename?: 'LearningContentLearningModuleObjectType', circle?: { __typename?: 'CircleLightObjectType', id: string, title: string, slug: string } | null }
& { ' $fragmentRefs'?: { 'CoursePageFieldsLearningContentLearningModuleObjectTypeFragment': CoursePageFieldsLearningContentLearningModuleObjectTypeFragment } }
@ -1160,6 +1183,9 @@ export type CourseQueryQuery = { __typename?: 'Query', course?: { __typename?: '
) | (
{ __typename?: 'LearningContentFeedbackObjectType', can_user_self_toggle_course_completion: boolean, content_url: string, minutes?: number | null, description: string }
& { ' $fragmentRefs'?: { 'CoursePageFieldsLearningContentFeedbackObjectTypeFragment': CoursePageFieldsLearningContentFeedbackObjectTypeFragment } }
) | (
{ __typename?: 'LearningContentKnowledgeAssessmentObjectType', can_user_self_toggle_course_completion: boolean, content_url: string, minutes?: number | null, description: string }
& { ' $fragmentRefs'?: { 'CoursePageFieldsLearningContentKnowledgeAssessmentObjectTypeFragment': CoursePageFieldsLearningContentKnowledgeAssessmentObjectTypeFragment } }
) | (
{ __typename?: 'LearningContentLearningModuleObjectType', can_user_self_toggle_course_completion: boolean, content_url: string, minutes?: number | null, description: string }
& { ' $fragmentRefs'?: { 'CoursePageFieldsLearningContentLearningModuleObjectTypeFragment': CoursePageFieldsLearningContentLearningModuleObjectTypeFragment } }

View File

@ -11,6 +11,7 @@ type Query {
learning_content_attendance_course: LearningContentAttendanceCourseObjectType
learning_content_feedback: LearningContentFeedbackObjectType
learning_content_learning_module: LearningContentLearningModuleObjectType
learning_content_knowledge_assessment: LearningContentKnowledgeAssessmentObjectType
learning_content_placeholder: LearningContentPlaceholderObjectType
learning_content_rich_text: LearningContentRichTextObjectType
learning_content_test: LearningContentEdoniqTestObjectType
@ -732,6 +733,22 @@ type LearningContentLearningModuleObjectType implements CoursePageInterface & Le
circle: CircleLightObjectType
}
type LearningContentKnowledgeAssessmentObjectType implements CoursePageInterface & LearningContentInterface {
id: ID!
title: String!
slug: String!
content_type: String!
live: Boolean!
translation_key: String!
frontend_url: String!
course: CourseObjectType
minutes: Int
description: String!
content_url: String!
can_user_self_toggle_course_completion: Boolean!
circle: CircleLightObjectType
}
type LearningContentPlaceholderObjectType implements CoursePageInterface & LearningContentInterface {
id: ID!
title: String!

View File

@ -56,6 +56,7 @@ export const LearningContentDocumentListObjectType = "LearningContentDocumentLis
export const LearningContentEdoniqTestObjectType = "LearningContentEdoniqTestObjectType";
export const LearningContentFeedbackObjectType = "LearningContentFeedbackObjectType";
export const LearningContentInterface = "LearningContentInterface";
export const LearningContentKnowledgeAssessmentObjectType = "LearningContentKnowledgeAssessmentObjectType";
export const LearningContentLearningModuleObjectType = "LearningContentLearningModuleObjectType";
export const LearningContentMediaLibraryObjectType = "LearningContentMediaLibraryObjectType";
export const LearningContentPlaceholderObjectType = "LearningContentPlaceholderObjectType";

View File

@ -44,6 +44,7 @@ const COMPONENTS: Record<LearningContentContentType, Component> = {
"learnpath.LearningContentDocumentList": DocumentListBlock,
"learnpath.LearningContentFeedback": FeedbackBlock,
"learnpath.LearningContentLearningModule": IframeBlock,
"learnpath.LearningContentKnowledgeAssessment": IframeBlock,
"learnpath.LearningContentMediaLibrary": MediaLibraryBlock,
"learnpath.LearningContentPlaceholder": PlaceholderBlock,
"learnpath.LearningContentRichText": RichTextBlock,

View File

@ -12,6 +12,7 @@ import type {
LearningContentDocumentListObjectType,
LearningContentEdoniqTestObjectType,
LearningContentFeedbackObjectType,
LearningContentKnowledgeAssessmentObjectType,
LearningContentLearningModuleObjectType,
LearningContentMediaLibraryObjectType,
LearningContentPlaceholderObjectType,
@ -75,6 +76,11 @@ export type LearningContentLearningModule = LearningContentLearningModuleObjectT
readonly content_type: "learnpath.LearningContentLearningModule";
};
export type LearningContentKnowledgeAssessment =
LearningContentKnowledgeAssessmentObjectType & {
readonly content_type: "learnpath.LearningContentKnowledgeAssessment";
};
export type LearningContentMediaLibrary = LearningContentMediaLibraryObjectType & {
readonly content_type: "learnpath.LearningContentMediaLibrary";
};
@ -98,6 +104,7 @@ export type LearningContent =
| LearningContentEdoniqTest
| LearningContentFeedback
| LearningContentLearningModule
| LearningContentKnowledgeAssessment
| LearningContentMediaLibrary
| LearningContentPlaceholder
| LearningContentRichText

View File

@ -33,6 +33,11 @@ export function learningContentTypeData(
title: t("learningContentTypes.learningModule"),
icon: "it-icon-lc-learning-module",
};
case "learnpath.LearningContentKnowledgeAssessment":
return {
title: t("learningContentTypes.knowledgeAssessment"),
icon: "it-icon-lc-test",
};
case "learnpath.LearningContentMediaLibrary":
return { title: t("a.Mediathek"), icon: "it-icon-lc-media-library" };
case "learnpath.LearningContentVideo":

View File

@ -11,6 +11,7 @@ from vbv_lernwelt.learnpath.graphql.types import (
LearningContentDocumentListObjectType,
LearningContentEdoniqTestObjectType,
LearningContentFeedbackObjectType,
LearningContentKnowledgeAssessmentObjectType,
LearningContentLearningModuleObjectType,
LearningContentMediaLibraryObjectType,
LearningContentPlaceholderObjectType,
@ -53,6 +54,9 @@ class CourseQuery(graphene.ObjectType):
learning_content_learning_module = graphene.Field(
LearningContentLearningModuleObjectType
)
learning_content_knowledge_assessment = graphene.Field(
LearningContentKnowledgeAssessmentObjectType
)
learning_content_placeholder = graphene.Field(LearningContentPlaceholderObjectType)
learning_content_rich_text = graphene.Field(LearningContentRichTextObjectType)
learning_content_test = graphene.Field(LearningContentEdoniqTestObjectType)

View File

@ -11,6 +11,7 @@ from vbv_lernwelt.learnpath.models import (
LearningContentDocumentList,
LearningContentEdoniqTest,
LearningContentFeedback,
LearningContentKnowledgeAssessment,
LearningContentLearningModule,
LearningContentMediaLibrary,
LearningContentPlaceholder,
@ -52,6 +53,8 @@ class LearningContentInterface(CoursePageInterface):
return LearningContentFeedbackObjectType
elif isinstance(instance, LearningContentLearningModule):
return LearningContentLearningModuleObjectType
elif isinstance(instance, LearningContentKnowledgeAssessment):
return LearningContentKnowledgeAssessmentObjectType
elif isinstance(instance, LearningContentMediaLibrary):
return LearningContentMediaLibraryObjectType
elif isinstance(instance, LearningContentPlaceholder):
@ -122,6 +125,16 @@ class LearningContentLearningModuleObjectType(DjangoObjectType):
fields = []
class LearningContentKnowledgeAssessmentObjectType(DjangoObjectType):
class Meta:
model = LearningContentKnowledgeAssessment
interfaces = (
CoursePageInterface,
LearningContentInterface,
)
fields = []
class LearningContentMediaLibraryObjectType(DjangoObjectType):
class Meta:
model = LearningContentMediaLibrary

View File

@ -0,0 +1,43 @@
# Generated by Django 3.2.20 on 2023-11-16 09:47
import django.db.models.deletion
import wagtail.fields
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("wagtailcore", "0089_log_entry_data_json_null_to_object"),
("learnpath", "0010_alter_learningcontentedoniqtest_content_assignment"),
]
operations = [
migrations.CreateModel(
name="LearningContentKnowledgeAssessment",
fields=[
(
"page_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="wagtailcore.page",
),
),
("minutes", models.PositiveIntegerField(default=15)),
("description", wagtail.fields.RichTextField(blank=True)),
("content_url", models.TextField(blank=True)),
("has_course_completion_status", models.BooleanField(default=True)),
(
"can_user_self_toggle_course_completion",
models.BooleanField(default=True),
),
],
options={
"abstract": False,
},
bases=("wagtailcore.page",),
),
]

View File

@ -74,6 +74,7 @@ class Circle(CourseBasePage):
"learnpath.LearningContentAttendanceCourse",
"learnpath.LearningContentFeedback",
"learnpath.LearningContentLearningModule",
"learnpath.LearningContentKnowledgeAssessment",
"learnpath.LearningContentMediaLibrary",
"learnpath.LearningContentPlaceholder",
"learnpath.LearningContentRichText",
@ -329,6 +330,12 @@ class LearningContentLearningModule(LearningContent):
can_user_self_toggle_course_completion = models.BooleanField(default=True)
class LearningContentKnowledgeAssessment(LearningContent):
parent_page_types = ["learnpath.Circle"]
subpage_types = []
can_user_self_toggle_course_completion = models.BooleanField(default=True)
class LearningContentMediaLibrary(LearningContent):
parent_page_types = ["learnpath.Circle"]
subpage_types = []