wip: Rename CASEWORK

This commit is contained in:
Christian Cueni 2023-11-12 12:01:16 +01:00
parent 6afc9dcbc9
commit 5c140f00de
18 changed files with 58 additions and 46 deletions

View File

@ -63,16 +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'
/** PREP_ASSIGNMENT */
| 'PREP_ASSIGNMENT'
/** REFLECTION */
| 'REFLECTION';
| 'REFLECTION'
/** VOLUNTARY_CASEWORK */
| 'VOLUNTARY_CASEWORK';
/** An enumeration. */
export type AssignmentAssignmentCompletionCompletionStatusChoices =
@ -150,7 +152,7 @@ export type AssignmentObjectType = CoursePageInterface & {
learning_content?: Maybe<LearningContentInterface>;
live: Scalars['Boolean']['output'];
max_points?: Maybe<Scalars['Int']['output']>;
/** Muss der Auftrag durch eine Expertin oder einen Experten beurteilt werden? */
/** Muss der Auftrag durch eine/n Experten/in oder eine Lernbegleitung beurteilt werden? */
needs_expert_evaluation: Scalars['Boolean']['output'];
performance_objectives?: Maybe<Scalars['JSONStreamField']['output']>;
slug: Scalars['String']['output'];
@ -764,16 +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'
/** PREP_ASSIGNMENT */
| 'PREP_ASSIGNMENT'
/** REFLECTION */
| 'REFLECTION';
| 'REFLECTION'
/** VOLUNTARY_CASEWORK */
| 'VOLUNTARY_CASEWORK';
export type Mutation = {
__typename?: 'Mutation';

View File

@ -456,7 +456,7 @@ type AssignmentObjectType implements CoursePageInterface {
assignment_type: AssignmentAssignmentAssignmentTypeChoices!
"""
Muss der Auftrag durch eine Expertin oder einen Experten beurteilt werden?
Muss der Auftrag durch eine/n Experten/in oder eine Lernbegleitung beurteilt werden?
"""
needs_expert_evaluation: Boolean!
competence_certificate: CompetenceCertificateObjectType
@ -490,8 +490,11 @@ type AssignmentObjectType implements CoursePageInterface {
"""An enumeration."""
enum AssignmentAssignmentAssignmentTypeChoices {
"""CASEWORK"""
CASEWORK
"""VOLUNTARY_CASEWORK"""
VOLUNTARY_CASEWORK
"""MANDATORY_CASEWORK"""
MANDATORY_CASEWORK
"""PREP_ASSIGNMENT"""
PREP_ASSIGNMENT
@ -604,8 +607,11 @@ scalar JSONString
"""An enumeration."""
enum LearnpathLearningContentAssignmentAssignmentTypeChoices {
"""CASEWORK"""
CASEWORK
"""VOLUNTARY_CASEWORK"""
VOLUNTARY_CASEWORK
"""MANDATORY_CASEWORK"""
MANDATORY_CASEWORK
"""PREP_ASSIGNMENT"""
PREP_ASSIGNMENT

View File

@ -60,7 +60,7 @@ const totalCount = (status: StatusCount) => {
const showEvaluationStatus = computed(() => {
return (
props.learningContent.content_assignment.assignment_type === "CASEWORK" ||
props.learningContent.content_assignment.assignment_type === "MANDATORY_CASEWORK" ||
props.learningContent.content_assignment.assignment_type === "EDONIQ_TEST"
);
});

View File

@ -101,7 +101,7 @@ const getLearningContentType = (lc: LearningContent) => {
const getShowDetailsText = (lc: LearningContent) => {
if (isAssignment(lc)) {
const assignmentType = (lc as LearningContentAssignment).assignment_type;
if (assignmentType === "CASEWORK" || assignmentType === "REFLECTION") {
if (assignmentType === "MANDATORY_CASEWORK" || assignmentType === "REFLECTION") {
return t("a.Ergebnisse anschauen");
} else if (
assignmentType === "PREP_ASSIGNMENT" ||
@ -131,7 +131,7 @@ const getIconName = (lc: LearningContent) => {
const assignmentType = (lc as LearningContentAssignment).assignment_type;
if (
assignmentType === "PREP_ASSIGNMENT" ||
assignmentType === "CASEWORK" ||
assignmentType === "MANDATORY_CASEWORK" ||
assignmentType === "CONDITION_ACCEPTANCE"
) {
return "it-icon-assignment-large";

View File

@ -79,11 +79,13 @@ const completionTaskData = computed(() => {
const canSubmit = computed(() => {
return (
!state.confirmInput ||
(props.assignment.assignment_type === "CASEWORK" && !state.confirmPerson)
(props.assignment.assignment_type === "MANDATORY_CASEWORK" && !state.confirmPerson)
);
});
const isCasework = computed(() => props.assignment.assignment_type === "CASEWORK");
const isCasework = computed(
() => props.assignment.assignment_type === "MANDATORY_CASEWORK"
);
const upsertAssignmentCompletionMutation = useMutation(
UPSERT_ASSIGNMENT_COMPLETION_MUTATION

View File

@ -374,7 +374,7 @@ export type ActionCompetence = Omit<
};
export interface CompetenceCertificateAssignment extends BaseCourseWagtailPage {
assignment_type: "CASEWORK" | "EDONIQ_TEST";
assignment_type: "MANDATORY_CASEWORK" | "EDONIQ_TEST";
max_points: number;
learning_content:
| (BaseCourseWagtailPage & {

View File

@ -40,7 +40,7 @@ export function getAssignmentTypeTitle(assignmentType: AssignmentType): string {
const { t } = useTranslation();
switch (assignmentType) {
case "CASEWORK":
case "MANDATORY_CASEWORK":
return t("learningContentTypes.casework");
case "PREP_ASSIGNMENT":
return t("learningContentTypes.prepAssignment");

View File

@ -111,7 +111,8 @@ class EvaluationTaskBlock(blocks.StructBlock):
class AssignmentType(Enum):
CASEWORK = "CASEWORK" # Geleitete Fallarbeit
VOLUNTARY_CASEWORK = "VOLUNTARY_CASEWORK" # Praxisauftrag
MANDATORY_CASEWORK = "MANDATORY_CASEWORK" # Geleitete Fallarbeit
PREP_ASSIGNMENT = "PREP_ASSIGNMENT" # Vorbereitungsauftrag
REFLECTION = "REFLECTION" # Reflexion
CONDITION_ACCEPTANCE = "CONDITION_ACCEPTANCE" # Bedingungsannahme
@ -138,12 +139,12 @@ class Assignment(CourseBasePage):
assignment_type = models.CharField(
max_length=50,
choices=[(tag.value, tag.value) for tag in AssignmentType],
default=AssignmentType.CASEWORK.value,
default=AssignmentType.MANDATORY_CASEWORK.value,
)
needs_expert_evaluation = models.BooleanField(
default=False,
help_text="Muss der Auftrag durch eine Expertin oder einen Experten beurteilt werden?",
help_text="Muss der Auftrag durch eine/n Experten/in oder eine Lernbegleitung beurteilt werden?",
)
competence_certificate = models.ForeignKey(

View File

@ -132,7 +132,7 @@ class CourseSessionAssignment(models.Model):
)
assignment_type = self.learning_content.assignment_type
assignment_type_translation_keys = {
AssignmentType.CASEWORK.value: "learningContentTypes.casework",
AssignmentType.MANDATORY_CASEWORK.value: "learningContentTypes.casework",
AssignmentType.PREP_ASSIGNMENT.value: "learningContentTypes.prepAssignment",
AssignmentType.REFLECTION.value: "learningContentTypes.reflection",
}
@ -140,7 +140,7 @@ 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.CASEWORK.value,
AssignmentType.MANDATORY_CASEWORK.value,
AssignmentType.PREP_ASSIGNMENT.value,
):
if not self.submission_deadline_id:
@ -162,7 +162,7 @@ class CourseSessionAssignment(models.Model):
self.submission_deadline.save()
if assignment_type == AssignmentType.CASEWORK.value:
if assignment_type == AssignmentType.MANDATORY_CASEWORK.value:
if not self.evaluation_deadline_id:
self.evaluation_deadline = DueDate.objects.create(
course_session=self.course_session,

View File

@ -152,7 +152,7 @@ def assignments(
for csa in CourseSessionAssignment.objects.filter(
course_session=course_session,
learning_content__content_assignment__assignment_type__in=[
AssignmentType.CASEWORK.value,
AssignmentType.MANDATORY_CASEWORK.value,
],
learning_content__content_assignment__competence_certificate__isnull=False,
):

View File

@ -99,7 +99,7 @@ class AssignmentTestCase(GraphQLTestCase):
def test_dashboard_contains_casework(self):
self._test_assignment_type_dashboard_details(
assignment_type=AssignmentType.CASEWORK
assignment_type=AssignmentType.MANDATORY_CASEWORK
)
def test_dashboard_contains_edoniq_tests(self):
@ -115,7 +115,7 @@ class AssignmentTestCase(GraphQLTestCase):
"""
irrelevant_types_for_dashboard = set(AssignmentType) - {
AssignmentType.CASEWORK,
AssignmentType.MANDATORY_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.CASEWORK,
assignment_type=AssignmentType.MANDATORY_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.CASEWORK,
assignment_type=AssignmentType.MANDATORY_CASEWORK,
course_session=self.course_session,
circle=self.circle,
add_competence_certificate=True,

View File

@ -50,7 +50,7 @@ class DashboardTestCase(GraphQLTestCase):
create_assignment_completion(
user=member,
assignment=create_assignment(
course=course, assignment_type=AssignmentType.CASEWORK
course=course, assignment_type=AssignmentType.MANDATORY_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.CASEWORK
course=course, assignment_type=AssignmentType.MANDATORY_CASEWORK
),
course_session=cs_2,
has_passed=False,

View File

@ -459,7 +459,7 @@ def create_or_update_course_session_assignment(
csa.submission_deadline.save()
elif (
csa.learning_content.assignment_type == AssignmentType.CASEWORK.value
csa.learning_content.assignment_type == AssignmentType.MANDATORY_CASEWORK.value
and start
):
csa.submission_deadline.start = timezone.make_aware(

View File

@ -99,7 +99,7 @@ class CreateOrUpdateCourseSessionTestCase(TestCase):
self.assertEqual(4, DueDate.objects.count())
casework = CourseSessionAssignment.objects.filter(
learning_content__assignment_type=AssignmentType.CASEWORK.value
learning_content__assignment_type=AssignmentType.MANDATORY_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.CASEWORK.value
learning_content__assignment_type=AssignmentType.MANDATORY_CASEWORK.value
).first()
self.assertEqual(
casework.submission_deadline.start.isoformat(), "2023-07-06T12:30:00+00:00"

View File

@ -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.CASEWORK.name,
default=AssignmentType.MANDATORY_CASEWORK.name,
)
content_panels = [

View File

@ -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.CASEWORK.value,
AssignmentType.MANDATORY_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.CASEWORK.value,
AssignmentType.MANDATORY_CASEWORK.value,
],
):
for expert in CourseSessionUser.objects.filter(

View File

@ -156,7 +156,7 @@ class NotificationService:
}
templates = {
AssignmentType.CASEWORK: EmailTemplate.ASSIGNMENT_REMINDER_CASEWORK_MEMBER,
AssignmentType.MANDATORY_CASEWORK: EmailTemplate.ASSIGNMENT_REMINDER_CASEWORK_MEMBER,
AssignmentType.PREP_ASSIGNMENT: EmailTemplate.ASSIGNMENT_REMINDER_PREP_ASSIGNMENT_MEMBER,
}

View File

@ -35,12 +35,11 @@ RECIPIENT_STUDENTS = [
"test-student3@example.com",
]
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.CASEWORK: "test-lehrgang-lp-circle-fahrzeug-lc-überprüfen-einer-motorfahrzeug-versicherungspolice",
AssignmentType.MANDATORY_CASEWORK: "test-lehrgang-lp-circle-fahrzeug-lc-überprüfen-einer-motorfahrzeug-versicherungspolice",
}
@ -140,7 +139,7 @@ class TestAssignmentCourseRemindersTest(TestCase):
action_object.learning_content.assignment_type
)
if assignment_type == AssignmentType.CASEWORK:
if assignment_type == AssignmentType.MANDATORY_CASEWORK:
self.assertEquals(
EmailTemplate.ASSIGNMENT_REMINDER_CASEWORK_MEMBER.name,
email_template,
@ -190,7 +189,7 @@ class TestAssignmentCourseRemindersTest(TestCase):
def test_notification_casework_for_members(self):
# GIVEN
casework = create_assignment(
assignment_type=AssignmentType.CASEWORK,
assignment_type=AssignmentType.MANDATORY_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
@ -199,14 +198,14 @@ class TestAssignmentCourseRemindersTest(TestCase):
# ...too early
create_assignment(
assignment_type=AssignmentType.CASEWORK,
assignment_type=AssignmentType.MANDATORY_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.CASEWORK,
assignment_type=AssignmentType.MANDATORY_CASEWORK,
submission_deadline=timezone.make_aware(datetime(2022, 1, 1)),
evaluation_deadline=timezone.make_aware(datetime(2022, 2, 2)),
)
@ -228,7 +227,7 @@ class TestAssignmentCourseRemindersTest(TestCase):
def test_notification_casework_for_experts(self):
# GIVEN
casework = create_assignment(
assignment_type=AssignmentType.CASEWORK,
assignment_type=AssignmentType.MANDATORY_CASEWORK,
submission_deadline=timezone.make_aware(datetime(2022, 12, 12)),
evaluation_deadline=timezone.make_aware(datetime(2023, 1, 2)),
)