diff --git a/client/src/pages/cockpit/cockpitPage/AssignmentSubmissionProgress.vue b/client/src/pages/cockpit/cockpitPage/AssignmentSubmissionProgress.vue index 6e52aa4a..ed9d64ca 100644 --- a/client/src/pages/cockpit/cockpitPage/AssignmentSubmissionProgress.vue +++ b/client/src/pages/cockpit/cockpitPage/AssignmentSubmissionProgress.vue @@ -61,6 +61,7 @@ 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 === "EDONIQ_TEST" ); }); diff --git a/client/src/pages/cockpit/cockpitPage/SubmissionsOverview.vue b/client/src/pages/cockpit/cockpitPage/SubmissionsOverview.vue index 59545d61..671e9bd5 100644 --- a/client/src/pages/cockpit/cockpitPage/SubmissionsOverview.vue +++ b/client/src/pages/cockpit/cockpitPage/SubmissionsOverview.vue @@ -101,7 +101,11 @@ const getLearningContentType = (lc: LearningContent) => { const getShowDetailsText = (lc: LearningContent) => { if (isAssignment(lc)) { const assignmentType = (lc as LearningContentAssignment).assignment_type; - if (assignmentType === "MANDATORY_CASEWORK" || assignmentType === "REFLECTION") { + if ( + assignmentType === "VOLUNTARY_CASEWORK" || + assignmentType === "MANDATORY_CASEWORK" || + assignmentType === "REFLECTION" + ) { return t("a.Ergebnisse anschauen"); } else if ( assignmentType === "PREP_ASSIGNMENT" || @@ -132,6 +136,7 @@ const getIconName = (lc: LearningContent) => { if ( assignmentType === "PREP_ASSIGNMENT" || assignmentType === "MANDATORY_CASEWORK" || + assignmentType === "VOLUNTARY_CASEWORK" || 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 8142fa60..2e5cbb6a 100644 --- a/client/src/pages/learningPath/learningContentPage/assignment/AssignmentSubmissionView.vue +++ b/client/src/pages/learningPath/learningContentPage/assignment/AssignmentSubmissionView.vue @@ -19,6 +19,7 @@ import { computed, reactive } from "vue"; import { useTranslation } from "i18next-vue"; import eventBus from "@/utils/eventBus"; import dayjs from "dayjs"; +import type { AssignmentAssignmentAssignmentTypeChoices } from "@/gql/graphql"; const props = defineProps<{ assignment: Assignment; @@ -83,8 +84,13 @@ const canSubmit = computed(() => { ); }); -const isCasework = computed( - () => props.assignment.assignment_type === "MANDATORY_CASEWORK" +const isCasework = computed(() => + ( + [ + "MANDATORY_CASEWORK", + "VOLUNTARY_CASEWORK", + ] as AssignmentAssignmentAssignmentTypeChoices[] + ).includes(props.assignment.assignment_type) ); const upsertAssignmentCompletionMutation = useMutation( diff --git a/client/src/utils/utils.ts b/client/src/utils/utils.ts index d384340b..f40aeb56 100644 --- a/client/src/utils/utils.ts +++ b/client/src/utils/utils.ts @@ -41,7 +41,9 @@ export function getAssignmentTypeTitle(assignmentType: AssignmentType): string { switch (assignmentType) { case "MANDATORY_CASEWORK": - return t("learningContentTypes.casework"); + return t("learningContentTypes.mandatory_casework"); + case "VOLUNTARY_CASEWORK": + return t("learningContentTypes.voluntary_casework"); case "PREP_ASSIGNMENT": return t("learningContentTypes.prepAssignment"); case "REFLECTION": diff --git a/server/vbv_lernwelt/assignment/tests/test_services.py b/server/vbv_lernwelt/assignment/tests/test_services.py index 3708a8d0..126b676c 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="CASEWORK") + .filter(assignment__assignment_type="MANDATORY_CASEWORK") .first() .specific ) diff --git a/server/vbv_lernwelt/course_session/models.py b/server/vbv_lernwelt/course_session/models.py index ee0b6b77..aeb24510 100644 --- a/server/vbv_lernwelt/course_session/models.py +++ b/server/vbv_lernwelt/course_session/models.py @@ -132,7 +132,8 @@ class CourseSessionAssignment(models.Model): ) assignment_type = self.learning_content.assignment_type assignment_type_translation_keys = { - AssignmentType.MANDATORY_CASEWORK.value: "learningContentTypes.casework", + AssignmentType.MANDATORY_CASEWORK.value: "learningContentTypes.mandatory_casework", + AssignmentType.VOLUNTARY_CASEWORK.value: "learningContentTypes.voluntary_casework", AssignmentType.PREP_ASSIGNMENT.value: "learningContentTypes.prepAssignment", AssignmentType.REFLECTION.value: "learningContentTypes.reflection", } @@ -141,6 +142,7 @@ class CourseSessionAssignment(models.Model): if assignment_type in ( AssignmentType.MANDATORY_CASEWORK.value, + AssignmentType.VOLUNTARY_CASEWORK.value, AssignmentType.PREP_ASSIGNMENT.value, ): if not self.submission_deadline_id: diff --git a/server/vbv_lernwelt/importer/services.py b/server/vbv_lernwelt/importer/services.py index 8e96ac6e..e4565bcf 100644 --- a/server/vbv_lernwelt/importer/services.py +++ b/server/vbv_lernwelt/importer/services.py @@ -459,7 +459,8 @@ def create_or_update_course_session_assignment( csa.submission_deadline.save() elif ( - csa.learning_content.assignment_type == AssignmentType.MANDATORY_CASEWORK.value + csa.learning_content.assignment_type + == AssignmentType.MANDATORY_CASEWORK.value and start ): csa.submission_deadline.start = timezone.make_aware(