From 2c45ba3b3c7133e8dc268f3ca1fb2aacf9cfdc7f Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Mon, 13 May 2024 11:09:58 +0200 Subject: [PATCH] Factor out some field types from CSV import app --- aleksis/apps/cursus/model_extensions.py | 35 +++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 aleksis/apps/cursus/model_extensions.py diff --git a/aleksis/apps/cursus/model_extensions.py b/aleksis/apps/cursus/model_extensions.py new file mode 100644 index 0000000..e7a9bf5 --- /dev/null +++ b/aleksis/apps/cursus/model_extensions.py @@ -0,0 +1,35 @@ +from django.apps import apps +from django.db.models import Model +from django.utils.translation import gettext as _ + +from .models import Course, Subject + +if apps.is_installed("aleksis.apps.csv_import"): + from aleksis.apps.csv_import.field_types import ProcessFieldType + + class GroupSubjectByShortNameFieldType(ProcessFieldType): + name = "group_subject_short_name" + verbose_name = _("Short name of the subject") + + def process(self, instance: Model, value): + subject, __ = Subject.objects.get_or_create(short_name=value, defaults={"name": value}) + instance.subject = subject + instance.save() + + class SubjectByShortNameFieldType(ProcessFieldType): + name = "subject_by_short_name" + verbose_name = _("Short name of the subject") + run_before_save = True + + def process(self, instance: Model, value): + subject, __ = Subject.objects.get_or_create(short_name=value, defaults={"name": value}) + instance.subject = subject + + class CourseByUniqueReferenceFieldType(ProcessFieldType): + name = "course_by_unique_reference" + verbose_name = _("Short name of the subject") + run_before_save = True + + def process(self, instance: Model, value): + course = Course.objects.get(extended_data__import_ref_csv=value) + instance.course = course -- GitLab