diff --git a/aleksis/apps/cursus/model_extensions.py b/aleksis/apps/cursus/model_extensions.py new file mode 100644 index 0000000000000000000000000000000000000000..e7a9bf50fd74235965abf6b4a7f3025d38185948 --- /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