diff --git a/client/src/gql/graphql.ts b/client/src/gql/graphql.ts index 5eaf387d..5c7a561d 100644 --- a/client/src/gql/graphql.ts +++ b/client/src/gql/graphql.ts @@ -63,18 +63,18 @@ export type ActionCompetenceObjectType = CoursePageInterface & { /** An enumeration. */ export type AssignmentAssignmentAssignmentTypeChoices = + /** CASEWORK */ + | 'CASEWORK' /** CONDITION_ACCEPTANCE */ | 'CONDITION_ACCEPTANCE' /** EDONIQ_TEST */ | 'EDONIQ_TEST' - /** MANDATORY_CASEWORK */ - | 'MANDATORY_CASEWORK' + /** PRAXIS_ASSIGNMENT */ + | 'PRAXIS_ASSIGNMENT' /** PREP_ASSIGNMENT */ | 'PREP_ASSIGNMENT' /** REFLECTION */ - | 'REFLECTION' - /** VOLUNTARY_CASEWORK */ - | 'VOLUNTARY_CASEWORK'; + | 'REFLECTION'; /** An enumeration. */ export type AssignmentAssignmentCompletionCompletionStatusChoices = @@ -766,18 +766,18 @@ export type LearningUnitObjectType = CoursePageInterface & { /** An enumeration. */ export type LearnpathLearningContentAssignmentAssignmentTypeChoices = + /** CASEWORK */ + | 'CASEWORK' /** CONDITION_ACCEPTANCE */ | 'CONDITION_ACCEPTANCE' /** EDONIQ_TEST */ | 'EDONIQ_TEST' - /** MANDATORY_CASEWORK */ - | 'MANDATORY_CASEWORK' + /** PRAXIS_ASSIGNMENT */ + | 'PRAXIS_ASSIGNMENT' /** PREP_ASSIGNMENT */ | 'PREP_ASSIGNMENT' /** REFLECTION */ - | 'REFLECTION' - /** VOLUNTARY_CASEWORK */ - | 'VOLUNTARY_CASEWORK'; + | 'REFLECTION'; export type Mutation = { __typename?: 'Mutation'; diff --git a/client/src/gql/schema.graphql b/client/src/gql/schema.graphql index 96df2a7d..56c4c08e 100644 --- a/client/src/gql/schema.graphql +++ b/client/src/gql/schema.graphql @@ -490,11 +490,11 @@ type AssignmentObjectType implements CoursePageInterface { """An enumeration.""" enum AssignmentAssignmentAssignmentTypeChoices { - """VOLUNTARY_CASEWORK""" - VOLUNTARY_CASEWORK + """PRAXIS_ASSIGNMENT""" + PRAXIS_ASSIGNMENT - """MANDATORY_CASEWORK""" - MANDATORY_CASEWORK + """CASEWORK""" + CASEWORK """PREP_ASSIGNMENT""" PREP_ASSIGNMENT @@ -607,11 +607,11 @@ scalar JSONString """An enumeration.""" enum LearnpathLearningContentAssignmentAssignmentTypeChoices { - """VOLUNTARY_CASEWORK""" - VOLUNTARY_CASEWORK + """PRAXIS_ASSIGNMENT""" + PRAXIS_ASSIGNMENT - """MANDATORY_CASEWORK""" - MANDATORY_CASEWORK + """CASEWORK""" + CASEWORK """PREP_ASSIGNMENT""" PREP_ASSIGNMENT @@ -876,4 +876,4 @@ enum AssignmentCompletionStatus { SUBMITTED EVALUATION_IN_PROGRESS EVALUATION_SUBMITTED -} \ No newline at end of file +} diff --git a/client/src/pages/cockpit/cockpitPage/AssignmentSubmissionProgress.vue b/client/src/pages/cockpit/cockpitPage/AssignmentSubmissionProgress.vue index ed9d64ca..4dc55dec 100644 --- a/client/src/pages/cockpit/cockpitPage/AssignmentSubmissionProgress.vue +++ b/client/src/pages/cockpit/cockpitPage/AssignmentSubmissionProgress.vue @@ -60,8 +60,8 @@ const totalCount = (status: StatusCount) => { const showEvaluationStatus = computed(() => { return ( - props.learningContent.content_assignment.assignment_type === "MANDATORY_CASEWORK" || - props.learningContent.content_assignment.assignment_type === "VOLUNTARY_CASEWORK" || + props.learningContent.content_assignment.assignment_type === "CASEWORK" || + props.learningContent.content_assignment.assignment_type === "PRAXIS_ASSIGNMENT" || props.learningContent.content_assignment.assignment_type === "EDONIQ_TEST" ); }); diff --git a/client/src/pages/cockpit/cockpitPage/SubmissionsOverview.vue b/client/src/pages/cockpit/cockpitPage/SubmissionsOverview.vue index 671e9bd5..2362bb2c 100644 --- a/client/src/pages/cockpit/cockpitPage/SubmissionsOverview.vue +++ b/client/src/pages/cockpit/cockpitPage/SubmissionsOverview.vue @@ -102,8 +102,8 @@ const getShowDetailsText = (lc: LearningContent) => { if (isAssignment(lc)) { const assignmentType = (lc as LearningContentAssignment).assignment_type; if ( - assignmentType === "VOLUNTARY_CASEWORK" || - assignmentType === "MANDATORY_CASEWORK" || + assignmentType === "PRAXIS_ASSIGNMENT" || + assignmentType === "CASEWORK" || assignmentType === "REFLECTION" ) { return t("a.Ergebnisse anschauen"); @@ -135,8 +135,8 @@ const getIconName = (lc: LearningContent) => { const assignmentType = (lc as LearningContentAssignment).assignment_type; if ( assignmentType === "PREP_ASSIGNMENT" || - assignmentType === "MANDATORY_CASEWORK" || - assignmentType === "VOLUNTARY_CASEWORK" || + assignmentType === "CASEWORK" || + assignmentType === "PRAXIS_ASSIGNMENT" || assignmentType === "CONDITION_ACCEPTANCE" ) { return "it-icon-assignment-large"; diff --git a/client/src/pages/learningPath/learningContentPage/assignment/AssignmentSubmissionView.vue b/client/src/pages/learningPath/learningContentPage/assignment/AssignmentSubmissionView.vue index 2e5cbb6a..1ddd6569 100644 --- a/client/src/pages/learningPath/learningContentPage/assignment/AssignmentSubmissionView.vue +++ b/client/src/pages/learningPath/learningContentPage/assignment/AssignmentSubmissionView.vue @@ -80,16 +80,13 @@ const completionTaskData = computed(() => { const canSubmit = computed(() => { return ( !state.confirmInput || - (props.assignment.assignment_type === "MANDATORY_CASEWORK" && !state.confirmPerson) + (props.assignment.assignment_type === "CASEWORK" && !state.confirmPerson) ); }); const isCasework = computed(() => ( - [ - "MANDATORY_CASEWORK", - "VOLUNTARY_CASEWORK", - ] as AssignmentAssignmentAssignmentTypeChoices[] + ["CASEWORK", "PRAXIS_ASSIGNMENT"] as AssignmentAssignmentAssignmentTypeChoices[] ).includes(props.assignment.assignment_type) ); diff --git a/client/src/types.ts b/client/src/types.ts index 9766e8db..86053292 100644 --- a/client/src/types.ts +++ b/client/src/types.ts @@ -374,7 +374,7 @@ export type ActionCompetence = Omit< }; export interface CompetenceCertificateAssignment extends BaseCourseWagtailPage { - assignment_type: "MANDATORY_CASEWORK" | "EDONIQ_TEST"; + assignment_type: "CASEWORK" | "EDONIQ_TEST"; max_points: number; learning_content: | (BaseCourseWagtailPage & { diff --git a/client/src/utils/utils.ts b/client/src/utils/utils.ts index f40aeb56..093f1f54 100644 --- a/client/src/utils/utils.ts +++ b/client/src/utils/utils.ts @@ -40,9 +40,9 @@ export function getAssignmentTypeTitle(assignmentType: AssignmentType): string { const { t } = useTranslation(); switch (assignmentType) { - case "MANDATORY_CASEWORK": + case "CASEWORK": return t("learningContentTypes.mandatory_casework"); - case "VOLUNTARY_CASEWORK": + case "PRAXIS_ASSIGNMENT": return t("learningContentTypes.voluntary_casework"); case "PREP_ASSIGNMENT": return t("learningContentTypes.prepAssignment"); diff --git a/server/vbv_lernwelt/assignment/models.py b/server/vbv_lernwelt/assignment/models.py index 194926a5..a10136aa 100644 --- a/server/vbv_lernwelt/assignment/models.py +++ b/server/vbv_lernwelt/assignment/models.py @@ -111,8 +111,8 @@ class EvaluationTaskBlock(blocks.StructBlock): class AssignmentType(Enum): - VOLUNTARY_CASEWORK = "VOLUNTARY_CASEWORK" # Praxisauftrag - MANDATORY_CASEWORK = "MANDATORY_CASEWORK" # Geleitete Fallarbeit + PRAXIS_ASSIGNMENT = "PRAXIS_ASSIGNMENT" # Praxisauftrag + CASEWORK = "CASEWORK" # Geleitete Fallarbeit PREP_ASSIGNMENT = "PREP_ASSIGNMENT" # Vorbereitungsauftrag REFLECTION = "REFLECTION" # Reflexion CONDITION_ACCEPTANCE = "CONDITION_ACCEPTANCE" # Bedingungsannahme @@ -139,7 +139,7 @@ class Assignment(CourseBasePage): assignment_type = models.CharField( max_length=50, choices=[(tag.value, tag.value) for tag in AssignmentType], - default=AssignmentType.MANDATORY_CASEWORK.value, + default=AssignmentType.CASEWORK.value, ) needs_expert_evaluation = models.BooleanField( diff --git a/server/vbv_lernwelt/assignment/tests/test_services.py b/server/vbv_lernwelt/assignment/tests/test_services.py index 126b676c..1c747e5a 100644 --- a/server/vbv_lernwelt/assignment/tests/test_services.py +++ b/server/vbv_lernwelt/assignment/tests/test_services.py @@ -27,7 +27,7 @@ class UpdateAssignmentCompletionTestCase(TestCase): self.assignment = ( self.course.coursepage.get_descendants() .exact_type(Assignment) - .filter(assignment__assignment_type="MANDATORY_CASEWORK") + .filter(assignment__assignment_type="CASEWORK") .first() .specific ) @@ -261,7 +261,7 @@ class UpdateAssignmentCompletionTestCase(TestCase): user_text_input = find_first( subtasks, pred=lambda x: (value := x.get("value")) - and value.get("text", "").startswith( + and value.get("text", "").startswith( "Gibt es zusätzliche Deckungen, die du der Person empfehlen würdest?" ), ) @@ -344,7 +344,7 @@ class UpdateAssignmentCompletionTestCase(TestCase): user_text_input = find_first( subtasks, pred=lambda x: (value := x.get("value")) - and value.get("text", "").startswith( + and value.get("text", "").startswith( "Gibt es zusätzliche Deckungen, die du der Person empfehlen würdest?" ), ) @@ -396,7 +396,7 @@ class UpdateAssignmentCompletionTestCase(TestCase): user_text_input = find_first( subtasks, pred=lambda x: (value := x.get("value")) - and value.get("text", "").startswith( + and value.get("text", "").startswith( "Gibt es zusätzliche Deckungen, die du der Person empfehlen würdest?" ), ) @@ -437,7 +437,7 @@ class UpdateAssignmentCompletionTestCase(TestCase): user_text_input = find_first( subtasks, pred=lambda x: (value := x.get("value")) - and value.get("text", "").startswith( + and value.get("text", "").startswith( "Gibt es zusätzliche Deckungen, die du der Person empfehlen würdest?" ), ) diff --git a/server/vbv_lernwelt/course_session/models.py b/server/vbv_lernwelt/course_session/models.py index aeb24510..bd36e291 100644 --- a/server/vbv_lernwelt/course_session/models.py +++ b/server/vbv_lernwelt/course_session/models.py @@ -132,8 +132,8 @@ class CourseSessionAssignment(models.Model): ) assignment_type = self.learning_content.assignment_type assignment_type_translation_keys = { - AssignmentType.MANDATORY_CASEWORK.value: "learningContentTypes.mandatory_casework", - AssignmentType.VOLUNTARY_CASEWORK.value: "learningContentTypes.voluntary_casework", + AssignmentType.CASEWORK.value: "learningContentTypes.mandatory_casework", + AssignmentType.PRAXIS_ASSIGNMENT.value: "learningContentTypes.voluntary_casework", AssignmentType.PREP_ASSIGNMENT.value: "learningContentTypes.prepAssignment", AssignmentType.REFLECTION.value: "learningContentTypes.reflection", } @@ -141,8 +141,8 @@ class CourseSessionAssignment(models.Model): url_expert = f"/course/{self.course_session.course.slug}/cockpit/assignment/{self.learning_content_id}?courseSessionId={self.course_session.id}" if assignment_type in ( - AssignmentType.MANDATORY_CASEWORK.value, - AssignmentType.VOLUNTARY_CASEWORK.value, + AssignmentType.CASEWORK.value, + AssignmentType.PRAXIS_ASSIGNMENT.value, AssignmentType.PREP_ASSIGNMENT.value, ): if not self.submission_deadline_id: @@ -164,7 +164,7 @@ class CourseSessionAssignment(models.Model): self.submission_deadline.save() - if assignment_type == AssignmentType.MANDATORY_CASEWORK.value: + if assignment_type == AssignmentType.CASEWORK.value: if not self.evaluation_deadline_id: self.evaluation_deadline = DueDate.objects.create( course_session=self.course_session, diff --git a/server/vbv_lernwelt/dashboard/graphql/types/assignment.py b/server/vbv_lernwelt/dashboard/graphql/types/assignment.py index b25f3f32..ebf37dd8 100644 --- a/server/vbv_lernwelt/dashboard/graphql/types/assignment.py +++ b/server/vbv_lernwelt/dashboard/graphql/types/assignment.py @@ -152,7 +152,7 @@ def assignments( for csa in CourseSessionAssignment.objects.filter( course_session=course_session, learning_content__content_assignment__assignment_type__in=[ - AssignmentType.MANDATORY_CASEWORK.value, + AssignmentType.CASEWORK.value, ], learning_content__content_assignment__competence_certificate__isnull=False, ): diff --git a/server/vbv_lernwelt/dashboard/tests/graphql/test_assignment.py b/server/vbv_lernwelt/dashboard/tests/graphql/test_assignment.py index 1cbcb9a3..35d6b764 100644 --- a/server/vbv_lernwelt/dashboard/tests/graphql/test_assignment.py +++ b/server/vbv_lernwelt/dashboard/tests/graphql/test_assignment.py @@ -99,7 +99,7 @@ class AssignmentTestCase(GraphQLTestCase): def test_dashboard_contains_casework(self): self._test_assignment_type_dashboard_details( - assignment_type=AssignmentType.MANDATORY_CASEWORK + assignment_type=AssignmentType.CASEWORK ) def test_dashboard_contains_edoniq_tests(self): @@ -115,7 +115,7 @@ class AssignmentTestCase(GraphQLTestCase): """ irrelevant_types_for_dashboard = set(AssignmentType) - { - AssignmentType.MANDATORY_CASEWORK, + AssignmentType.CASEWORK, AssignmentType.EDONIQ_TEST, } @@ -196,7 +196,7 @@ class AssignmentTestCase(GraphQLTestCase): # GIVEN assignment_1, _ = mix_assignment_cocktail( deadline_at=datetime(1990, 4, 1), - assignment_type=AssignmentType.MANDATORY_CASEWORK, + assignment_type=AssignmentType.CASEWORK, course_session=self.course_session, circle=self.circle, add_competence_certificate=True, @@ -212,7 +212,7 @@ class AssignmentTestCase(GraphQLTestCase): assignment_3, _ = mix_assignment_cocktail( deadline_at=datetime(2010, 4, 1), - assignment_type=AssignmentType.MANDATORY_CASEWORK, + assignment_type=AssignmentType.CASEWORK, course_session=self.course_session, circle=self.circle, add_competence_certificate=True, diff --git a/server/vbv_lernwelt/dashboard/tests/graphql/test_dashboard.py b/server/vbv_lernwelt/dashboard/tests/graphql/test_dashboard.py index 00c4f0d7..5a8e0e40 100644 --- a/server/vbv_lernwelt/dashboard/tests/graphql/test_dashboard.py +++ b/server/vbv_lernwelt/dashboard/tests/graphql/test_dashboard.py @@ -50,7 +50,7 @@ class DashboardTestCase(GraphQLTestCase): create_assignment_completion( user=member, assignment=create_assignment( - course=course, assignment_type=AssignmentType.MANDATORY_CASEWORK + course=course, assignment_type=AssignmentType.CASEWORK ), course_session=cs_1, has_passed=True, @@ -61,7 +61,7 @@ class DashboardTestCase(GraphQLTestCase): create_assignment_completion( user=member, assignment=create_assignment( - course=course, assignment_type=AssignmentType.MANDATORY_CASEWORK + course=course, assignment_type=AssignmentType.CASEWORK ), course_session=cs_2, has_passed=False, diff --git a/server/vbv_lernwelt/importer/services.py b/server/vbv_lernwelt/importer/services.py index e4565bcf..312cc87f 100644 --- a/server/vbv_lernwelt/importer/services.py +++ b/server/vbv_lernwelt/importer/services.py @@ -460,7 +460,7 @@ def create_or_update_course_session_assignment( elif ( csa.learning_content.assignment_type - == AssignmentType.MANDATORY_CASEWORK.value + == AssignmentType.CASEWORK.value and start ): csa.submission_deadline.start = timezone.make_aware( diff --git a/server/vbv_lernwelt/importer/tests/test_import_course_sessions.py b/server/vbv_lernwelt/importer/tests/test_import_course_sessions.py index f425c206..c887ea4f 100644 --- a/server/vbv_lernwelt/importer/tests/test_import_course_sessions.py +++ b/server/vbv_lernwelt/importer/tests/test_import_course_sessions.py @@ -99,7 +99,7 @@ class CreateOrUpdateCourseSessionTestCase(TestCase): self.assertEqual(4, DueDate.objects.count()) casework = CourseSessionAssignment.objects.filter( - learning_content__assignment_type=AssignmentType.MANDATORY_CASEWORK.value + learning_content__assignment_type=AssignmentType.CASEWORK.value ).first() self.assertEqual( casework.submission_deadline.start.isoformat(), "2023-07-06T11:30:00+00:00" @@ -183,7 +183,7 @@ class CreateOrUpdateCourseSessionTestCase(TestCase): self.assertEqual(4, DueDate.objects.count()) casework = CourseSessionAssignment.objects.filter( - learning_content__assignment_type=AssignmentType.MANDATORY_CASEWORK.value + learning_content__assignment_type=AssignmentType.CASEWORK.value ).first() self.assertEqual( casework.submission_deadline.start.isoformat(), "2023-07-06T12:30:00+00:00" diff --git a/server/vbv_lernwelt/learnpath/models.py b/server/vbv_lernwelt/learnpath/models.py index 3864bfc7..da56a8fc 100644 --- a/server/vbv_lernwelt/learnpath/models.py +++ b/server/vbv_lernwelt/learnpath/models.py @@ -426,7 +426,7 @@ class LearningContentAssignment(LearningContent): assignment_type = models.CharField( max_length=50, choices=[(tag.name, tag.name) for tag in AssignmentType], - default=AssignmentType.MANDATORY_CASEWORK.name, + default=AssignmentType.CASEWORK.name, ) content_panels = [ diff --git a/server/vbv_lernwelt/notify/email/reminders/assigment.py b/server/vbv_lernwelt/notify/email/reminders/assigment.py index 7de3b98a..50a030c3 100644 --- a/server/vbv_lernwelt/notify/email/reminders/assigment.py +++ b/server/vbv_lernwelt/notify/email/reminders/assigment.py @@ -26,7 +26,7 @@ def send_assignment_reminder_notifications(): submission_deadline__start__lte=end, submission_deadline__start__gte=start, learning_content__assignment_type__in=[ - AssignmentType.MANDATORY_CASEWORK.value, + AssignmentType.CASEWORK.value, AssignmentType.PREP_ASSIGNMENT.value, ], ): @@ -60,7 +60,7 @@ def send_assignment_reminder_notifications(): evaluation_deadline__start__lte=end, evaluation_deadline__start__gte=start, learning_content__assignment_type__in=[ - AssignmentType.MANDATORY_CASEWORK.value, + AssignmentType.CASEWORK.value, ], ): for expert in CourseSessionUser.objects.filter( diff --git a/server/vbv_lernwelt/notify/services.py b/server/vbv_lernwelt/notify/services.py index 03f1d5e1..bf792511 100644 --- a/server/vbv_lernwelt/notify/services.py +++ b/server/vbv_lernwelt/notify/services.py @@ -156,7 +156,7 @@ class NotificationService: } templates = { - AssignmentType.MANDATORY_CASEWORK: EmailTemplate.ASSIGNMENT_REMINDER_CASEWORK_MEMBER, + AssignmentType.CASEWORK: EmailTemplate.ASSIGNMENT_REMINDER_CASEWORK_MEMBER, AssignmentType.PREP_ASSIGNMENT: EmailTemplate.ASSIGNMENT_REMINDER_PREP_ASSIGNMENT_MEMBER, } diff --git a/server/vbv_lernwelt/notify/tests/test_assigment_reminders.py b/server/vbv_lernwelt/notify/tests/test_assigment_reminders.py index c31b0ead..fc970baa 100644 --- a/server/vbv_lernwelt/notify/tests/test_assigment_reminders.py +++ b/server/vbv_lernwelt/notify/tests/test_assigment_reminders.py @@ -39,7 +39,7 @@ ASSIGNMENT_TYPE_LEARNING_CONTENT_LOOKUP: Dict[AssignmentType, str] = { AssignmentType.CONDITION_ACCEPTANCE: "test-lehrgang-lp-circle-fahrzeug-lc-redlichkeitserklärung", AssignmentType.PREP_ASSIGNMENT: "test-lehrgang-lp-circle-fahrzeug-lc-fahrzeug-mein-erstes-auto", AssignmentType.REFLECTION: "test-lehrgang-lp-circle-fahrzeug-lc-reflexion", - AssignmentType.MANDATORY_CASEWORK: "test-lehrgang-lp-circle-fahrzeug-lc-überprüfen-einer-motorfahrzeug-versicherungspolice", + AssignmentType.CASEWORK: "test-lehrgang-lp-circle-fahrzeug-lc-überprüfen-einer-motorfahrzeug-versicherungspolice", } @@ -139,7 +139,7 @@ class TestAssignmentCourseRemindersTest(TestCase): action_object.learning_content.assignment_type ) - if assignment_type == AssignmentType.MANDATORY_CASEWORK: + if assignment_type == AssignmentType.CASEWORK: self.assertEquals( EmailTemplate.ASSIGNMENT_REMINDER_CASEWORK_MEMBER.name, email_template, @@ -189,7 +189,7 @@ class TestAssignmentCourseRemindersTest(TestCase): def test_notification_casework_for_members(self): # GIVEN casework = create_assignment( - assignment_type=AssignmentType.MANDATORY_CASEWORK, + assignment_type=AssignmentType.CASEWORK, # has a submission deadline within range -> member notification submission_deadline=timezone.make_aware(datetime(2023, 1, 2)), # but no evaluation deadline within range -> no expert notification @@ -198,14 +198,14 @@ class TestAssignmentCourseRemindersTest(TestCase): # ...too early create_assignment( - assignment_type=AssignmentType.MANDATORY_CASEWORK, + assignment_type=AssignmentType.CASEWORK, submission_deadline=timezone.make_aware(datetime(2023, 1, 4)), evaluation_deadline=timezone.make_aware(datetime(2023, 2, 2)), ) # ...too late create_assignment( - assignment_type=AssignmentType.MANDATORY_CASEWORK, + assignment_type=AssignmentType.CASEWORK, submission_deadline=timezone.make_aware(datetime(2022, 1, 1)), evaluation_deadline=timezone.make_aware(datetime(2022, 2, 2)), ) @@ -227,7 +227,7 @@ class TestAssignmentCourseRemindersTest(TestCase): def test_notification_casework_for_experts(self): # GIVEN casework = create_assignment( - assignment_type=AssignmentType.MANDATORY_CASEWORK, + assignment_type=AssignmentType.CASEWORK, submission_deadline=timezone.make_aware(datetime(2022, 12, 12)), evaluation_deadline=timezone.make_aware(datetime(2023, 1, 2)), )