From 4fd10db9352fdef5844b0713a4753337dbeb9008 Mon Sep 17 00:00:00 2001 From: Lorenz Padberg Date: Mon, 3 Jul 2023 21:53:07 +0200 Subject: [PATCH] Improve test data generation --- .../assignment/creators/create_assignments.py | 7 ++-- .../course/creators/test_course.py | 8 +++-- .../commands/create_default_courses.py | 11 +++--- server/vbv_lernwelt/course_session/models.py | 2 +- server/vbv_lernwelt/duedate/admin.py | 2 +- .../migrations/0007_auto_20230703_1741.py | 36 +++++++++++++++++++ server/vbv_lernwelt/duedate/models.py | 11 +++--- 7 files changed, 58 insertions(+), 19 deletions(-) create mode 100644 server/vbv_lernwelt/duedate/migrations/0007_auto_20230703_1741.py diff --git a/server/vbv_lernwelt/assignment/creators/create_assignments.py b/server/vbv_lernwelt/assignment/creators/create_assignments.py index 8c74555d..a8ce50a7 100644 --- a/server/vbv_lernwelt/assignment/creators/create_assignments.py +++ b/server/vbv_lernwelt/assignment/creators/create_assignments.py @@ -1,3 +1,7 @@ +from wagtail.blocks import StreamValue +from wagtail.blocks.list_block import ListBlock, ListValue +from wagtail.rich_text import RichText + from vbv_lernwelt.assignment.models import ( AssignmentListPage, AssignmentType, @@ -20,9 +24,6 @@ from vbv_lernwelt.course.consts import ( COURSE_VERSICHERUNGSVERMITTLERIN_ID, ) from vbv_lernwelt.course.models import CoursePage -from wagtail.blocks import StreamValue -from wagtail.blocks.list_block import ListBlock, ListValue -from wagtail.rich_text import RichText def create_uk_fahrzeug_casework(course_id=COURSE_UK): diff --git a/server/vbv_lernwelt/course/creators/test_course.py b/server/vbv_lernwelt/course/creators/test_course.py index 512b230a..0131722c 100644 --- a/server/vbv_lernwelt/course/creators/test_course.py +++ b/server/vbv_lernwelt/course/creators/test_course.py @@ -1,5 +1,6 @@ import json -from datetime import datetime +import random +from datetime import datetime, timedelta import wagtail_factories from django.conf import settings @@ -177,9 +178,10 @@ def create_course_session_attendance_course(course_session, course): location="Handelsschule KV Bern, Zimmer 123, Eigerstrasse 16, 3012 Bern", trainer="Roland Grossenbacher, roland.grossenbacher@helvetia.ch", ) + random_week = random.randint(1, 26) - casc.due_date.start = timezone.make_aware(datetime(2023, 6, 14, 8, 30)) - casc.due_date.end = timezone.make_aware(datetime(2023, 6, 14, 17, 0)) + casc.due_date.start = timezone.make_aware(datetime(2023, 6, 14, 8, 30) + timedelta(weeks=random_week)) + casc.due_date.end = timezone.make_aware(datetime(2023, 6, 14, 17, 0) + timedelta(weeks=random_week)) casc.due_date.save() return casc 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 4af77f76..f289367a 100644 --- a/server/vbv_lernwelt/course/management/commands/create_default_courses.py +++ b/server/vbv_lernwelt/course/management/commands/create_default_courses.py @@ -74,7 +74,6 @@ from vbv_lernwelt.course_session.models import ( CourseSessionAssignment, CourseSessionAttendanceCourse, ) -from vbv_lernwelt.duedate.models import DueDate from vbv_lernwelt.feedback.creators.create_demo_feedback import create_feedback from vbv_lernwelt.importer.services import ( import_course_sessions_from_excel, @@ -258,14 +257,14 @@ def create_course_uk_de(): learning_content=LearningContentAttendanceCourse.objects.get( slug="überbetriebliche-kurse-lp-circle-fahrzeug-lc-präsenzkurs-fahrzeug" ), - due_date=DueDate.objects.create( - course_session=cs, - ), location="Handelsschule KV Bern, Zimmer 123, Eigerstrasse 16, 3012 Bern", trainer="Roland Grossenbacher, roland.grossenbacher@helvetia.ch", ) - csac.due_date.start = timezone.make_aware(datetime(2023, 6, 14, 8, 30)) - csac.due_date.end = timezone.make_aware(datetime(2023, 6, 14, 17, 0)) + + # TODO: create dates schlauer + random_week = random.randint(1, 26) + csac.due_date.start = timezone.make_aware(datetime(2023, 6, 14, 8, 30) + timedelta(weeks=random_week)) + csac.due_date.end = timezone.make_aware(datetime(2023, 6, 14, 17, 0) + timedelta(weeks=random_week)) csac.due_date.save() # figma demo users and data diff --git a/server/vbv_lernwelt/course_session/models.py b/server/vbv_lernwelt/course_session/models.py index 5d988d50..a6f1fb6a 100644 --- a/server/vbv_lernwelt/course_session/models.py +++ b/server/vbv_lernwelt/course_session/models.py @@ -42,7 +42,7 @@ class CourseSessionAttendanceCourse(models.Model): self.due_date = DueDate.objects.create( url=url, title=f"{title}", - learning_content_description=f"{_('Präsenztag')}", + learning_content_description=f"{_('Präsenzkurs')}", description="", course_session=self.course_session, page=page, diff --git a/server/vbv_lernwelt/duedate/admin.py b/server/vbv_lernwelt/duedate/admin.py index 1f0ad4db..a769e0fd 100644 --- a/server/vbv_lernwelt/duedate/admin.py +++ b/server/vbv_lernwelt/duedate/admin.py @@ -12,7 +12,7 @@ from vbv_lernwelt.learnpath.models import ( @admin.register(DueDate) class DueDateAdmin(admin.ModelAdmin): date_hierarchy = "end" - list_display = ["title", "course_session", "start", "end", "unset"] + list_display = ["title", "course_session", "start", "end", "is_undefined"] list_filter = ["course_session"] readonly_fields = ["course_session", "page"] diff --git a/server/vbv_lernwelt/duedate/migrations/0007_auto_20230703_1741.py b/server/vbv_lernwelt/duedate/migrations/0007_auto_20230703_1741.py new file mode 100644 index 00000000..c9f5963d --- /dev/null +++ b/server/vbv_lernwelt/duedate/migrations/0007_auto_20230703_1741.py @@ -0,0 +1,36 @@ +# Generated by Django 3.2.13 on 2023-07-03 15:41 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('course', '0006_remove_coursesession_assignment_details_list'), + ('duedate', '0006_auto_20230627_1553'), + ] + + operations = [ + migrations.AlterField( + model_name='duedate', + name='course_session', + field=models.ForeignKey(blank=True, default=1, on_delete=django.db.models.deletion.CASCADE, related_name='duedates', to='course.coursesession'), + preserve_default=False, + ), + migrations.AlterField( + model_name='duedate', + name='description', + field=models.CharField(default='', max_length=1024), + ), + migrations.AlterField( + model_name='duedate', + name='learning_content_description', + field=models.CharField(default='', max_length=1024), + ), + migrations.AlterField( + model_name='duedate', + name='url', + field=models.URLField(blank=True, default='', max_length=1024), + ), + ] diff --git a/server/vbv_lernwelt/duedate/models.py b/server/vbv_lernwelt/duedate/models.py index 77e6c9cf..9db1981b 100644 --- a/server/vbv_lernwelt/duedate/models.py +++ b/server/vbv_lernwelt/duedate/models.py @@ -12,17 +12,17 @@ from vbv_lernwelt.course.models import CourseSession class DueDate(models.Model): start = models.DateTimeField(null=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=_("GeleiteteFallarbeit"), max_length=1024 + default="", max_length=1024 ) - description = models.CharField(default=_("Abgabetermin"), max_length=1024) - url = models.URLField(null=True, blank=True, max_length=1024) + description = models.CharField(default="", max_length=1024) + url = models.URLField(default="", blank=True, max_length=1024) course_session = models.ForeignKey( "course.CourseSession", on_delete=models.CASCADE, related_name="duedates", - null=True, blank=True, ) @@ -31,6 +31,7 @@ class DueDate(models.Model): def Meta(self): ordering = ["start", "end"] verbose_name = _("Termin") + help = "Set only the end date if you want to create a deadline without a duration." def __str__(self): start_str = self.start.strftime("%Y-%m-%d %H:%M") if self.start else "" @@ -38,7 +39,7 @@ class DueDate(models.Model): return f"DueDate: {self.title} {start_str} to {end_str}" @property - def unset(self): + def is_undefined(self): return self.end is None @property