diff --git a/client/src/pages/cockpit/assignmentEvaluationPage/EvaluationContainer.vue b/client/src/pages/cockpit/assignmentEvaluationPage/EvaluationContainer.vue
index 1b4a872f..0ff0f641 100644
--- a/client/src/pages/cockpit/assignmentEvaluationPage/EvaluationContainer.vue
+++ b/client/src/pages/cockpit/assignmentEvaluationPage/EvaluationContainer.vue
@@ -60,7 +60,9 @@ function editTask(task: AssignmentEvaluationTask) {
const assignmentDetail = computed(() => findAssignmentDetail(props.assignment.id));
-const dueDate = computed(() => dayjs(assignmentDetail.value?.evaluation_deadline_end));
+const dueDate = computed(() =>
+ dayjs(assignmentDetail.value?.evaluation_deadline_start)
+);
const inEvaluationTask = computed(
() => stepIndex.value >= 1 && stepIndex.value <= numTasks.value
diff --git a/client/src/pages/cockpit/assignmentsPage/AssignmentDetails.vue b/client/src/pages/cockpit/assignmentsPage/AssignmentDetails.vue
index eaae98e0..515ad009 100644
--- a/client/src/pages/cockpit/assignmentsPage/AssignmentDetails.vue
+++ b/client/src/pages/cockpit/assignmentsPage/AssignmentDetails.vue
@@ -56,12 +56,12 @@ const assignmentDetail = computed(() =>
Abgabetermin:
- {{ dayjs(assignmentDetail.submission_deadline_end).format("DD.MM.YYYY") }}
+ {{ dayjs(assignmentDetail.submission_deadline_start).format("DD.MM.YYYY") }}
-
Freigabetermin:
- {{ dayjs(assignmentDetail.evaluation_deadline_end).format("DD.MM.YYYY") }}
+ {{ dayjs(assignmentDetail.evaluation_deadline_start).format("DD.MM.YYYY") }}
diff --git a/client/src/pages/learningPath/learningContentPage/assignment/AssignmentView.vue b/client/src/pages/learningPath/learningContentPage/assignment/AssignmentView.vue
index a310c78f..98d3af32 100644
--- a/client/src/pages/learningPath/learningContentPage/assignment/AssignmentView.vue
+++ b/client/src/pages/learningPath/learningContentPage/assignment/AssignmentView.vue
@@ -123,7 +123,7 @@ const showPreviousButton = computed(() => stepIndex.value != 0);
const showNextButton = computed(() => stepIndex.value + 1 < numPages.value);
const showExitButton = computed(() => numPages.value === stepIndex.value + 1);
const dueDate = computed(() =>
- dayjs(state.courseSessionAssignment?.submission_deadline_end)
+ dayjs(state.courseSessionAssignment?.submission_deadline_start)
);
const currentTask = computed(() => {
if (stepIndex.value > 0 && stepIndex.value <= numTasks.value) {
diff --git a/client/src/types.ts b/client/src/types.ts
index ab0f521d..7b523401 100644
--- a/client/src/types.ts
+++ b/client/src/types.ts
@@ -428,9 +428,9 @@ export interface CourseSessionAssignment {
course_session_id: number;
learning_content_id: number;
submission_deadline_id: number;
- submission_deadline_end: string;
+ submission_deadline_start: string;
evaluation_deadline_id: number;
- evaluation_deadline_end: string;
+ evaluation_deadline_start: string;
}
export interface CourseSession {
diff --git a/server/vbv_lernwelt/course/creators/test_course.py b/server/vbv_lernwelt/course/creators/test_course.py
index 44a9a8d0..1e3df840 100644
--- a/server/vbv_lernwelt/course/creators/test_course.py
+++ b/server/vbv_lernwelt/course/creators/test_course.py
@@ -180,11 +180,11 @@ def create_course_session_assignment(course_session, assignment):
course_session.save()
submission_deadline = csa.submission_deadline
if submission_deadline:
- submission_deadline.end = course_session.start_date + timedelta(days=14)
+ submission_deadline.start = course_session.start_date + timedelta(days=14)
submission_deadline.save()
evaluation_deadline = csa.evaluation_deadline
if evaluation_deadline:
- evaluation_deadline.end = course_session.start_date + timedelta(days=28)
+ evaluation_deadline.start = course_session.start_date + timedelta(days=28)
evaluation_deadline.save()
return csa
diff --git a/server/vbv_lernwelt/course/management/commands/create_default_courses.py b/server/vbv_lernwelt/course/management/commands/create_default_courses.py
index ec204b8d..3023653e 100644
--- a/server/vbv_lernwelt/course/management/commands/create_default_courses.py
+++ b/server/vbv_lernwelt/course/management/commands/create_default_courses.py
@@ -589,11 +589,11 @@ def create_course_session_assignments(course_session, assignment_slug, i=1):
course_session.save()
submission_deadline = csa.submission_deadline
if submission_deadline:
- submission_deadline.end = course_session.start_date + timedelta(days=14)
+ submission_deadline.start = course_session.start_date + timedelta(days=14)
submission_deadline.save()
evaluation_deadline = csa.evaluation_deadline
if evaluation_deadline:
- evaluation_deadline.end = course_session.start_date + timedelta(days=28)
+ evaluation_deadline.start = course_session.start_date + timedelta(days=28)
evaluation_deadline.save()
diff --git a/server/vbv_lernwelt/course_session/serializers.py b/server/vbv_lernwelt/course_session/serializers.py
index 9d524ccd..defd7c6a 100644
--- a/server/vbv_lernwelt/course_session/serializers.py
+++ b/server/vbv_lernwelt/course_session/serializers.py
@@ -31,8 +31,8 @@ class CourseSessionAttendanceCourseSerializer(serializers.ModelSerializer):
class CourseSessionAssignmentSerializer(serializers.ModelSerializer):
- submission_deadline_end = serializers.SerializerMethodField()
- evaluation_deadline_end = serializers.SerializerMethodField()
+ submission_deadline_start = serializers.SerializerMethodField()
+ evaluation_deadline_start = serializers.SerializerMethodField()
class Meta:
model = CourseSessionAssignment
@@ -41,15 +41,15 @@ class CourseSessionAssignmentSerializer(serializers.ModelSerializer):
"course_session_id",
"learning_content_id",
"submission_deadline_id",
- "submission_deadline_end",
+ "submission_deadline_start",
"evaluation_deadline_id",
- "evaluation_deadline_end",
+ "evaluation_deadline_start",
]
- def get_evaluation_deadline_end(self, obj):
+ def get_evaluation_deadline_start(self, obj):
if obj.evaluation_deadline:
- return obj.evaluation_deadline.end
+ return obj.evaluation_deadline.start
- def get_submission_deadline_end(self, obj):
+ def get_submission_deadline_start(self, obj):
if obj.submission_deadline:
- return obj.submission_deadline.end
+ return obj.submission_deadline.start
diff --git a/server/vbv_lernwelt/course_session/tests/test_models.py b/server/vbv_lernwelt/course_session/tests/test_models.py
index e3590f37..8e1e40b5 100644
--- a/server/vbv_lernwelt/course_session/tests/test_models.py
+++ b/server/vbv_lernwelt/course_session/tests/test_models.py
@@ -22,8 +22,8 @@ class CourseSessionModelsTestCase(TestCase):
deadline_date = datetime(
2023, 7, 6, 8, 30, tzinfo=timezone.get_current_timezone()
)
- due_date.end = deadline_date
+ due_date.start = deadline_date
due_date.save()
this_date = DueDate.objects.get(pk=due_date.pk)
- self.assertEqual(this_date.end, deadline_date)
+ self.assertEqual(this_date.start, deadline_date)
diff --git a/server/vbv_lernwelt/duedate/migrations/0010_auto_20230712_0920.py b/server/vbv_lernwelt/duedate/migrations/0010_auto_20230712_0920.py
new file mode 100644
index 00000000..a54f8713
--- /dev/null
+++ b/server/vbv_lernwelt/duedate/migrations/0010_auto_20230712_0920.py
@@ -0,0 +1,38 @@
+# Generated by Django 3.2.13 on 2023-07-12 07:20
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ("duedate", "0009_alter_duedate_course_session"),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name="duedate",
+ name="description",
+ field=models.CharField(blank=True, default="", max_length=1024),
+ ),
+ migrations.AlterField(
+ model_name="duedate",
+ name="end",
+ field=models.DateTimeField(blank=True, db_index=True, null=True),
+ ),
+ migrations.AlterField(
+ model_name="duedate",
+ name="learning_content_description",
+ field=models.CharField(blank=True, default="", max_length=1024),
+ ),
+ migrations.AlterField(
+ model_name="duedate",
+ name="start",
+ field=models.DateTimeField(db_index=True, null=True),
+ ),
+ migrations.AlterField(
+ model_name="duedate",
+ name="title",
+ field=models.CharField(default="", max_length=1024),
+ ),
+ ]
diff --git a/server/vbv_lernwelt/duedate/models.py b/server/vbv_lernwelt/duedate/models.py
index c584d49d..36d8f773 100644
--- a/server/vbv_lernwelt/duedate/models.py
+++ b/server/vbv_lernwelt/duedate/models.py
@@ -10,12 +10,13 @@ from vbv_lernwelt.course.models import CourseSession
class DueDate(models.Model):
- start = models.DateTimeField(null=True, blank=True, db_index=True)
- end = models.DateTimeField(db_index=True, null=True)
- # TODO: Welcher Default Wert ist hier sinnvoll?
- title = models.CharField(default=_("Termin"), max_length=1024)
- learning_content_description = models.CharField(default="", max_length=1024)
- description = models.CharField(default="", max_length=1024)
+ start = models.DateTimeField(null=True, db_index=True)
+ end = models.DateTimeField(null=True, blank=True, db_index=True)
+ title = models.CharField(default="", max_length=1024)
+ learning_content_description = models.CharField(
+ default="", blank=True, max_length=1024
+ )
+ description = models.CharField(default="", blank=True, max_length=1024)
url = models.CharField(default="", blank=True, max_length=1024)
course_session = models.ForeignKey(
"course.CourseSession",
@@ -28,20 +29,27 @@ class DueDate(models.Model):
def Meta(self):
ordering = ["start", "end"]
verbose_name = _("Termin")
- help = "The end date is mandatory. You can set the start date if you want to have a deadline with a duration."
+ help = "The start date is mandatory. You can set the end date if you want to have a deadline with a duration."
def __str__(self):
+ if self.is_undefined:
+ return f"DueDate: {self.title} undefined"
start_str = self.start.strftime("%Y-%m-%d %H:%M") if self.start else "-"
- end_str = self.end.strftime("%Y-%m-%d %H:%M") if self.end else "-"
- return f"DueDate: {self.title} {start_str} to {end_str}"
+ result = f"DueDate: {self.title} {start_str}"
+
+ if self.end:
+ end_str = self.end.strftime("%Y-%m-%d %H:%M") if self.end else "-"
+ result += f" - {end_str}"
+
+ return result
@property
def is_undefined(self):
- return self.end is None
+ return self.start is None
@property
def duration(self):
- if self.start is None:
+ if self.end is None:
return datetime.timedelta(0)
return self.end - self.start
@@ -65,12 +73,12 @@ class DueDate(models.Model):
else:
qs = qs.filter(course_session__course_assignment__user=user)
- qs = qs.order_by("end")[:limit]
+ qs = qs.order_by("start")[:limit]
return qs
@classmethod
def get_next_due_dates_qs(cls):
now = timezone.now()
- qs = cls.objects.filter(end__gte=now)
+ qs = cls.objects.filter(start__gte=now)
return qs