diff --git a/aleksis/apps/untis/api.py b/aleksis/apps/untis/api.py
deleted file mode 100644
index 767e5b599a9eb51ecf26c683228de34fa714dd7c..0000000000000000000000000000000000000000
--- a/aleksis/apps/untis/api.py
+++ /dev/null
@@ -1,466 +0,0 @@
-from django.conf import settings
-
-from untisconnect.api_helper import get_term_by_ids, run_using, untis_date_to_date, date_to_untis_date, \
-    untis_split_first
-from . import models
-from timetable.settings import untis_settings
-
-TYPE_TEACHER = 0
-TYPE_ROOM = 1
-TYPE_CLASS = 2
-
-
-def run_all(obj, filter_term=True):
-    return run_default_filter(run_using(obj).all(), filter_term=filter_term)
-
-
-def run_one(obj, filter_term=True):
-    return run_default_filter(run_using(obj), filter_term=filter_term)
-
-
-def run_default_filter(obj, filter_term=True):
-    # Get term by settings in db
-    TERM_ID = untis_settings.term
-    SCHOOLYEAR_ID = untis_settings.school_year  # 20172018
-    TERM = get_term_by_ids(TERM_ID, SCHOOLYEAR_ID)
-    SCHOOL_ID = TERM.school_id  # 705103
-    VERSION_ID = TERM.version_id  # 1
-
-    if filter_term:
-        return obj.filter(school_id=SCHOOL_ID, schoolyear_id=SCHOOLYEAR_ID, version_id=VERSION_ID, term_id=TERM_ID)
-    else:
-        return obj.filter(school_id=SCHOOL_ID, schoolyear_id=SCHOOLYEAR_ID, version_id=VERSION_ID)
-
-
-def row_by_row_helper(db_rows, obj):
-    out_rows = []
-    for db_row in db_rows:
-        o = obj()
-        o.create(db_row)
-        out_rows.append(o)
-    return out_rows
-
-
-def row_by_row(db_ref, obj, filter_term=True):
-    db_rows = run_all(db_ref.objects, filter_term=filter_term)
-    return row_by_row_helper(db_rows, obj)
-
-
-def one_by_id(db_ref, obj):
-    # print(db_ref)
-    if db_ref is not None:
-        o = obj()
-        o.create(db_ref)
-        return o
-    else:
-        return None
-
-
-###########
-# TEACHER #
-###########
-class Teacher(object):
-    def __init__(self):
-        self.filled = False
-        self.id = None
-        self.shortcode = None
-        self.first_name = None
-        self.name = None
-        self.full_name = None
-
-    def __str__(self):
-        if self.filled:
-            return (self.first_name or "") + " " + (self.name or "")
-        else:
-            return "Unbekannt"
-
-    def __eq__(self, other):
-        if not isinstance(other, Teacher):
-            # don't attempt to compare against unrelated types
-            return NotImplemented
-
-        return self.id == other.id
-
-    def create(self, db_obj):
-        self.filled = True
-        self.id = db_obj.teacher_id
-        self.shortcode = db_obj.name
-        self.name = db_obj.longname
-        self.first_name = db_obj.firstname
-
-
-def get_all_teachers():
-    teachers = row_by_row(models.Teacher, Teacher)
-    teachers.sort(key=lambda a: a.shortcode)
-    return teachers
-
-
-def get_teacher_by_id(id):
-    teacher = run_one(models.Teacher.objects).get(teacher_id=id)
-    return one_by_id(teacher, Teacher)
-
-
-def get_teacher_by_shortcode(shortcode):
-    shortcode = shortcode.upper()
-    teacher = run_one(models.Teacher.objects).get(name__icontains=shortcode)
-    return one_by_id(teacher, Teacher)
-
-
-#########
-# CLASS #
-#########
-class Class(object):
-    def __init__(self):
-        self.filled = False
-        self.id = None
-        self.name = None
-        self.text1 = None
-        self.text2 = None
-        self.room = None
-        self.teachers = []
-
-    def __str__(self):
-        if self.filled:
-            return self.name or "Unbekannt"
-        else:
-            return "Unbekannt"
-
-    def __eq__(self, other):
-        if not isinstance(other, Class):
-            # don't attempt to compare against unrelated types
-            return NotImplemented
-
-        return self.id == other.id
-
-    def create(self, db_obj):
-        self.filled = True
-        self.id = db_obj.class_id
-        self.name = db_obj.name
-        self.text1 = db_obj.longname
-        self.text2 = db_obj.text
-        teacher_ids = untis_split_first(db_obj.teacherids, int)
-        self.teachers = [get_teacher_by_id(t_id) for t_id in teacher_ids]
-        print(self.teachers)
-        # print(db_obj.room_id)
-        if db_obj.room_id != 0:
-            #   print("RAUM")
-            self.room = get_room_by_id(db_obj.room_id)
-
-
-def get_all_classes():
-    classes = row_by_row(models.Class, Class)
-    classes.sort(key=lambda a: a.name)
-    return classes
-
-
-def get_class_by_id(id):
-    _class = run_one(models.Class.objects).get(class_id=id)
-    return one_by_id(_class, Class)
-
-
-def get_class_by_name(name):
-    name = name[0].upper() + name[1:]
-    _class = run_one(models.Class.objects).filter(name__icontains=name).all()[0]
-    return one_by_id(_class, Class)
-
-
-def format_classes(classes):
-    """
-    Formats a list of Class objects to a combined string
-
-    example return: "9abcd" for classes 9a, 9b, 9c and 9d
-
-    :param classes: Class list
-    :return: combined string
-    """
-    classes_as_dict = {}
-
-    classes = sorted(classes, key=lambda class_: class_.name)
-
-    for _class in classes:
-        step = _class.name[:-1]
-        part = _class.name[-1:]
-        if step not in classes_as_dict.keys():
-            classes_as_dict[step] = [part]
-        else:
-            classes_as_dict[step].append(part)
-
-    out = []
-    for key, value in classes_as_dict.items():
-        out.append(key + "".join(value))
-    return ", ".join(out)
-
-
-########
-# ROOM #
-########
-class Room(object):
-    def __init__(self):
-        self.filled = False
-        self.id = None
-        self.shortcode = None
-        self.name = None
-
-    def __str__(self):
-        if self.filled:
-            return self.name or "Unbekannt"
-        else:
-            return "Unbekannt"
-
-    def __eq__(self, other):
-        if not isinstance(other, Room):
-            # don't attempt to compare against unrelated types
-            return NotImplemented
-
-        return self.id == other.id
-
-    def create(self, db_obj):
-        self.filled = True
-        self.id = db_obj.room_id
-        self.shortcode = db_obj.name
-        self.name = db_obj.longname
-
-
-def get_all_rooms():
-    rooms = row_by_row(models.Room, Room)
-    rooms.sort(key=lambda a: a.shortcode)
-    return rooms
-
-
-def get_room_by_id(id):
-    room = run_one(models.Room.objects).get(room_id=id)
-    return one_by_id(room, Room)
-
-
-########
-# CORRIDOR #
-########
-class Corridor(object):
-    def __init__(self):
-        self.filled = False
-        self.id = None
-        self.name = None
-
-    def __str__(self):
-        if self.filled:
-            return self.name or "Unbekannt"
-        else:
-            return "Unbekannt"
-
-    def __eq__(self, other):
-        if not isinstance(other, Corridor):
-            # don't attempt to compare against unrelated types
-            return NotImplemented
-
-        return self.id == other.id
-
-    def create(self, db_obj):
-        self.filled = True
-        self.id = db_obj.corridor_id
-        self.name = db_obj.name
-
-
-def get_all_corridors():
-    corridors = row_by_row(models.Corridor, Corridor, filter_term=False)
-    corridors.sort(key=lambda a: a.name)
-    return corridors
-
-
-def get_corridor_by_id(id):
-    # print(id)
-    corridor = run_one(models.Corridor.objects, filter_term=False).get(corridor_id=id)
-    return one_by_id(corridor, Corridor)
-
-
-###########
-# SUBJECT #
-###########
-class Subject(object):
-    def __init__(self):
-        self.filled = False
-        self.id = None
-        self.shortcode = None
-        self.name = None
-        self.color = None
-        self.hex_color = None
-
-    def __str__(self):
-        if self.filled:
-            return self.shortcode or "Unbekannt"
-        else:
-            return "Unbekannt"
-
-    def __eq__(self, other):
-        if not isinstance(other, Teacher):
-            # don't attempt to compare against unrelated types
-            return NotImplemented
-
-        return self.id == other.id
-
-    def create(self, db_obj):
-        self.filled = True
-        self.id = db_obj.subject_id
-        self.shortcode = db_obj.name
-        self.name = db_obj.longname
-        self.color = db_obj.backcolor
-
-        # Convert UNTIS number to HEX
-        hex_bgr = str(hex(db_obj.backcolor)).replace("0x", "")
-
-        # Add beginning zeros if len < 6
-        if len(hex_bgr) < 6:
-            hex_bgr = "0" * (6 - len(hex_bgr)) + hex_bgr
-
-        # Change BGR to RGB
-        hex_rgb = hex_bgr[4:6] + hex_bgr[2:4] + hex_bgr[0:2]
-
-        # Add html #
-        self.hex_color = "#" + hex_rgb
-
-
-def get_all_subjects():
-    subjects = row_by_row(models.Subjects, Subject, filter_term=False)
-    subjects.sort(key=lambda a: a.shortcode)
-
-    return subjects
-
-
-def get_subject_by_id(id):
-    subject = run_one(models.Subjects.objects, filter_term=False).get(subject_id=id)
-    return one_by_id(subject, Subject)
-
-
-class Absence(object):
-    def __init__(self):
-        self.filled = None
-        self.teacher = None
-        self.room = None
-        self.type = TYPE_TEACHER
-        self.from_date = None
-        self.to_date = None
-        self.from_lesson = None
-        self.to_lesson = None
-        self.is_whole_day = None
-
-    def create(self, db_obj):
-        self.filled = True
-        # print(db_obj.ida)
-        # print(db_obj.typea)
-        if db_obj.typea == 101:
-            self.type = TYPE_TEACHER
-        elif db_obj.typea == 100:
-            self.type = TYPE_CLASS
-        elif db_obj.typea == 102:
-            self.type = TYPE_ROOM
-
-        if self.type == TYPE_TEACHER:
-            # print("IDA", db_obj.ida)
-            self.teacher = get_teacher_by_id(db_obj.ida)
-        else:
-            self.room = get_room_by_id(db_obj.ida)
-        self.from_date = untis_date_to_date(db_obj.datefrom)
-        self.to_date = untis_date_to_date(db_obj.dateto)
-        self.from_lesson = db_obj.lessonfrom
-        self.to_lesson = db_obj.lessonto
-        self.is_whole_day = self.from_lesson == 1 and self.to_lesson >= settings.TIMETABLE_HEIGHT
-
-
-def get_all_absences_by_date(date):
-    d_i = int(date_to_untis_date(date))
-    db_rows = run_all(models.Absence.objects.filter(dateto__gte=d_i, datefrom__lte=d_i, deleted=0), filter_term=False)
-    return row_by_row_helper(db_rows, Absence)
-
-
-def get_absence_by_id(id):
-    absence = run_one(models.Absence.objects, filter_term=False).get(absence_id=id)
-    return one_by_id(absence, Absence)
-
-
-#########
-# EVENT #
-#########
-
-class Event(object):
-    def __init__(self):
-        self.filled = None
-        self.text = None
-        self.teachers = []
-        self.classes = []
-        self.rooms = []
-        self.absences = []
-        self.from_date = None
-        self.to_date = None
-        self.from_lesson = None
-        self.to_lesson = None
-        self.is_whole_day = None
-
-    def create(self, db_obj):
-        """0~0~19~0~1859~0,0~0~65~0~1860~0,0~0~21~0~1861~0,0~0~3~0~1862~0"""
-        self.filled = True
-        event_parsed = db_obj.eventelement1.split(",")
-        elements = []
-        for element in event_parsed:
-            elements.append(element.split("~"))
-
-        for element in elements:
-            if element[0] != "0" and element[0] != "":
-                self.classes.append(element[0])
-
-            if element[2] != "0" and element[2] != "":
-                self.teachers.append(element[2])
-
-            if element[3] != "0" and element[3] != "":
-                self.rooms.append(element[3])
-
-            if element[4] != "0" and element[4] != "":
-                self.absences.append(element[4])
-
-        self.text = db_obj.text
-        self.from_date = untis_date_to_date(db_obj.datefrom)
-        self.to_date = untis_date_to_date(db_obj.dateto)
-        self.from_lesson = db_obj.lessonfrom
-        self.to_lesson = db_obj.lessonto
-        self.is_whole_day = self.from_lesson == 1 and self.to_lesson >= settings.TIMETABLE_HEIGHT
-
-
-def get_all_events_by_date(date):
-    d_i = int(date_to_untis_date(date))
-    db_rows = run_all(models.Event.objects.filter(dateto__gte=d_i, datefrom__lte=d_i, deleted=0), filter_term=False)
-    return row_by_row_helper(db_rows, Event)
-
-
-##########
-# LESSON #
-##########
-def get_raw_lessons():
-    return run_all(models.Lesson.objects.filter(deleted=0))
-
-
-###########
-# HOLIDAY #
-###########
-class Holiday(object):
-    def __init__(self):
-        self.filled = False
-        self.name = None
-        self.datefrom = None
-        self.dateto = None
-
-    def __str__(self):
-        if self.filled:
-            return self.name or "Unbekannt"
-        else:
-            return "Unbekannt"
-
-    def create(self, db_obj):
-        self.filled = True
-        self.name = db_obj.name
-        self.datefrom = db_obj.datefrom
-        self.dateto = db_obj.dateto
-
-
-def get_today_holidays(date):
-    # db_holidays = row_by_row(models.Holiday, Holiday)
-    d_i = int(date_to_untis_date(date))
-    db_rows = run_all(models.Holiday.objects.filter(dateto__gte=d_i, datefrom__lte=d_i), filter_term=False)
-    return row_by_row_helper(db_rows, Holiday)
diff --git a/aleksis/apps/untis/api_helper.py b/aleksis/apps/untis/api_helper.py
deleted file mode 100644
index a543cbd126403b25e018c910c14af882a856814f..0000000000000000000000000000000000000000
--- a/aleksis/apps/untis/api_helper.py
+++ /dev/null
@@ -1,117 +0,0 @@
-from django.utils import timezone
-
-from . import models
-
-DB_NAME = 'untis'
-
-
-#####################
-# BASIC DEFINITIONS #
-#####################
-class Basic(object):
-    def __init__(self):
-        self.filled = False
-        self.id = None
-
-    def create(self, db_obj):
-        self.filled = True
-
-
-def run_using(obj):
-    return obj.using(DB_NAME)
-
-
-def get_term_by_ids(term_id, school_year_id):
-    data = run_using(models.Terms.objects).get(term_id=term_id, schoolyear_id=school_year_id)
-    # print(data.schoolyear_id)
-    return data
-
-
-########
-# TERM #
-########
-class Term(object):
-    def __init__(self):
-        self.filled = False
-        self.id = None
-        self.name = None
-        self.school_year_id = None
-
-    def create(self, db_obj):
-        self.filled = True
-        self.id = db_obj.term_id
-        self.name = db_obj.longname
-        self.school_year_id = db_obj.schoolyear_id
-
-
-def get_terms():
-    data = run_using(models.Terms.objects).all()
-    terms = []
-    for item in data:
-        term = Term()
-        term.create(item)
-        terms.append(term)
-        # print(term.name)
-    return terms
-
-
-##############
-# SCHOOLYEAR #
-##############
-class SchoolYear(object):
-    def __init__(self):
-        self.filled = False
-        self.id = None
-        self.name = None
-
-    def create(self, db_obj):
-        self.filled = True
-        self.id = db_obj.schoolyear_id
-        self.name = db_obj.schoolyearzoned
-
-
-def get_school_years():
-    data = run_using(models.Schoolyear.objects).all()
-    years = []
-    for item in data:
-        year = SchoolYear()
-        year.create(item)
-        years.append(year)
-        # print(term.name)
-    return years
-
-
-################
-# HELP METHODS #
-################
-def clean_array(a, conv=None):
-    b = []
-    for el in a:
-        if el != '' and el != "0":
-            if conv is not None:
-                el = conv(el)
-            b.append(el)
-    return b
-
-
-def untis_split_first(s, conv=None):
-    return clean_array(s.split(","), conv=conv)
-
-
-def untis_split_second(s, conv=None):
-    return clean_array(s.split("~"), conv=conv)
-
-
-def untis_split_third(s, conv=None):
-    return clean_array(s.split(";"), conv=conv)
-
-
-DATE_FORMAT = "%Y%m%d"
-
-
-def untis_date_to_date(untis):
-    return timezone.datetime.strptime(str(untis), DATE_FORMAT)
-
-
-def date_to_untis_date(date):
-    return date.strftime(DATE_FORMAT)
diff --git a/aleksis/apps/untis/datetimeutils.py b/aleksis/apps/untis/datetimeutils.py
deleted file mode 100644
index 698aa917ca4952d7b0833c387e57bac3e5eeb448..0000000000000000000000000000000000000000
--- a/aleksis/apps/untis/datetimeutils.py
+++ /dev/null
@@ -1,115 +0,0 @@
-import datetime
-
-from django.utils import timezone, formats
-
-from schoolapps.settings import LONG_WEEK_DAYS
-from untisconnect.api import TYPE_TEACHER, get_teacher_by_shortcode, TYPE_CLASS, get_class_by_name, get_all_teachers, \
-    get_all_classes, get_all_rooms, get_all_subjects
-from userinformation import UserInformation
-
-
-def get_name_for_next_week_day_from_today() -> str:
-    """
-    Return the next week day as you would say it from today: "today", "tomorrow" or "<weekday>"
-    :return: Formatted date
-    """
-    # Next weekday
-    next_weekday: timezone.datetime = get_next_weekday_with_time(timezone.now(), timezone.now().time())
-
-    if next_weekday.date() == timezone.now().date():
-        # Today
-        date_formatted = "heute"
-    elif next_weekday.date() == timezone.now().date() + timezone.timedelta(days=1):
-        # Tomorrow
-        date_formatted = "morgen"
-    else:
-        # Other weekday
-        date_formatted = LONG_WEEK_DAYS[next_weekday.isoweekday() - 1][0]
-
-    return date_formatted
-
-
-def get_calendar_weeks(year=timezone.datetime.now().year):
-    weeks = []
-
-    # Get first day of year > first calendar week
-    first_day_of_year = timezone.datetime(year=year, month=1, day=1)
-    if first_day_of_year.isoweekday() != 1:
-        days_to_next_monday = 1 - first_day_of_year.isoweekday()
-        first_day_of_year += datetime.timedelta(days=days_to_next_monday)
-
-    # Go for all weeks in year and create week dict
-    first_day_of_week = first_day_of_year
-    for i in range(52):
-        calendar_week = i + 1
-        last_day_of_week = first_day_of_week + datetime.timedelta(days=4)
-        weeks.append({
-            "calendar_week": calendar_week,
-            "first_day": first_day_of_week,
-            "last_day": last_day_of_week
-        })
-        first_day_of_week += datetime.timedelta(weeks=1)
-
-    return weeks
-
-
-def find_out_what_is_today(year=None, month=None, day=None):
-    date = timezone.datetime.now()
-    time = datetime.datetime.now().time()
-    if year is not None and day is not None and month is not None:
-        date = timezone.datetime(year=year, month=month, day=day)
-        if date != timezone.datetime.now():
-            time = datetime.time(0)
-    return date, time
-
-
-def get_calendar_week(calendar_week, year=timezone.datetime.now().year):
-    weeks = get_calendar_weeks(year=year)
-    for week in weeks:
-        if week["calendar_week"] == calendar_week:
-            return week
-    return None
-
-
-def get_next_weekday(date=None):
-    """Get the next weekday by a datetime object"""
-    if date is None:
-        date = timezone.now().date()
-
-    if date.isoweekday() in {6, 7}:
-        if date.isoweekday() == 6:
-            plus = 2
-        else:
-            plus = 1
-        date += datetime.timedelta(days=plus)
-    return date
-
-
-def get_next_weekday_with_time(date=None, time=None) -> datetime.datetime:
-    """Get the next weekday by a datetime object"""
-    if date is None:
-        date = timezone.now().date()
-    if time is None:
-        time = timezone.now().time()
-
-    if time > datetime.time(15, 35):
-        date += datetime.timedelta(days=1)
-    if date.isoweekday() in {6, 7}:
-        if date.isoweekday() == 6:
-            plus = 2
-        else:
-            plus = 1
-        date += datetime.timedelta(days=plus)
-    return date
-
-
-def calendar_week(date: datetime) -> int:
-    return date.isocalendar()[1]
-
-
-def weekday(date: datetime) -> int:
-    return date.isoweekday() - 1
-
-
-def format_lesson_time(time: datetime) -> str:
-    return formats.date_format(time, "H:i")
diff --git a/aleksis/apps/untis/drive.py b/aleksis/apps/untis/drive.py
deleted file mode 100644
index a57627807bfa1b2d9a4c4920606bdc0176abc8ad..0000000000000000000000000000000000000000
--- a/aleksis/apps/untis/drive.py
+++ /dev/null
@@ -1,29 +0,0 @@
-from dashboard.caches import DRIVE_CACHE, Cache
-from .api import *
-
-
-def build_drive(force_update=False):
-    cached = DRIVE_CACHE.get()
-    if cached is not False and not force_update:
-        print("Drive come from cache")
-        return cached
-    odrive = {
-        "teachers": get_all_teachers(),
-        "rooms": get_all_rooms(),
-        "classes": get_all_classes(),
-        "subjects": get_all_subjects(),
-        "corridors": get_all_corridors(),
-    }
-
-    drive = {}
-    for key, value in odrive.items():
-        drive[key] = {}
-        for el in value:
-            id = el.id
-            drive[key][id] = el
-
-    DRIVE_CACHE.update(drive)
-    return drive
-
-
-drive = build_drive()
diff --git a/aleksis/apps/untis/events.py b/aleksis/apps/untis/events.py
deleted file mode 100644
index 66f76c6c1b0605363e3d4f0e0ee7adc7b6e5d3e8..0000000000000000000000000000000000000000
--- a/aleksis/apps/untis/events.py
+++ /dev/null
@@ -1,87 +0,0 @@
-from django.conf import settings
-
-from schoolapps.settings import TIMETABLE_HEIGHT
-from .drive import drive
-from .api_helper import untis_date_to_date, date_to_untis_date
-from .api import row_by_row_helper, run_all, get_absence_by_id
-from . import models
-
-
-#########
-# EVENT #
-#########
-
-class Event(object):
-    def __init__(self):
-        self.filled = None
-        self.id = None
-        self.text = None
-        self.teachers = []
-        self.classes = []
-        self.rooms = []
-        self.absences = []
-        self.from_date = None
-        self.to_date = None
-        self.from_lesson = None
-        self.to_lesson = None
-        self.is_whole_day = None
-
-    def create(self, db_obj):
-        """0~0~19~0~1859~0,0~0~65~0~1860~0,0~0~21~0~1861~0,0~0~3~0~1862~0"""
-        self.filled = True
-        self.id = db_obj.event_id
-
-        event_parsed = db_obj.eventelement1.split(",")
-        elements = []
-        for element in event_parsed:
-            elements.append(element.split("~"))
-
-        for element in elements:
-            if element[0] != "0" and element[0] != "":
-                class_id = int(element[0])
-                obj = drive["classes"][class_id]
-                self.classes.append(obj)
-
-            if element[2] != "0" and element[2] != "":
-                teacher_id = int(element[2])
-                obj = drive["teachers"][teacher_id]
-                self.teachers.append(obj)
-
-            if element[3] != "0" and element[3] != "":
-                room_id = int(element[3])
-                obj = drive["rooms"][room_id]
-                self.rooms.append(obj)
-
-            if element[4] != "0" and element[4] != "":
-                # print(element[4])
-                try:
-                    absence_id = int(element[4])
-                    absence = get_absence_by_id(absence_id)
-                    self.absences.append(absence)
-                except models.Absence.DoesNotExist:
-                    pass
-        self.text = db_obj.text
-        self.from_date = untis_date_to_date(db_obj.datefrom)
-        self.to_date = untis_date_to_date(db_obj.dateto)
-        self.from_lesson = db_obj.lessonfrom
-        self.to_lesson = db_obj.lessonto
-        self.is_whole_day = self.from_lesson == 1 and self.to_lesson >= settings.TIMETABLE_HEIGHT
-
-
-def get_all_events_by_date(date):
-    d_i = int(date_to_untis_date(date))
-    db_rows = run_all(models.Event.objects.filter(dateto__gte=d_i, datefrom__lte=d_i, deleted=0), filter_term=False)
-    rows = row_by_row_helper(db_rows, Event)
-
-    # Remap the lesson numbers matching for the given date
-    for i, event in enumerate(rows):
-        if event.from_date != event.to_date:
-            if event.from_date == date:
-                event.to_lesson = TIMETABLE_HEIGHT
-            elif event.to_date == date:
-                event.from_lesson = 1
-            else:
-                event.from_lesson = 1
-                event.to_lesson = TIMETABLE_HEIGHT
-
-    return rows
diff --git a/aleksis/apps/untis/forms.py b/aleksis/apps/untis/forms.py
index 1cf55a8b65ea3590933e9321bbac7e8d5e466601..fee160cf7165d1d8102c77cf11af3090757d37e5 100644
--- a/aleksis/apps/untis/forms.py
+++ b/aleksis/apps/untis/forms.py
@@ -1,6 +1,15 @@
 from django import forms
 from django.utils.translation import ugettext_lazy as _
 
+from constance import config
+from material import Fieldset
+
+from aleksis.core.forms import EditGroupForm
+
 
 class UntisUploadForm(forms.Form):
     untis_xml = forms.FileField(label=_("Untis XML export"))
+
+
+if config.UNTIS_IMPORT_MYSQL_USE_COURSE_GROUPS:
+    EditGroupForm.add_node_to_layout(Fieldset(_("UNTIS import"), "untis_subject"))
diff --git a/aleksis/apps/untis/management/commands/untis_import_mysql.py b/aleksis/apps/untis/management/commands/untis_import_mysql.py
new file mode 100644
index 0000000000000000000000000000000000000000..1e286068a045786527fe408c5226718629a7aa09
--- /dev/null
+++ b/aleksis/apps/untis/management/commands/untis_import_mysql.py
@@ -0,0 +1,8 @@
+from django.core.management.base import BaseCommand
+
+from ...tasks import untis_import_mysql
+
+
+class Command(BaseCommand):
+    def handle(self, *args, **options):
+        untis_import_mysql()
diff --git a/aleksis/apps/untis/management/commands/untis_import.py b/aleksis/apps/untis/management/commands/untis_import_xml.py
similarity index 89%
rename from aleksis/apps/untis/management/commands/untis_import.py
rename to aleksis/apps/untis/management/commands/untis_import_xml.py
index 8a263c84a041fc8cfd6433da61a722d39556f43f..efbaa675f26561d2961e856c0251086cb2956263 100644
--- a/aleksis/apps/untis/management/commands/untis_import.py
+++ b/aleksis/apps/untis/management/commands/untis_import_xml.py
@@ -1,7 +1,7 @@
 from django.core.management.base import BaseCommand
 from django.utils.translation import ugettext as _
 
-from ...util import untis_import_xml
+from ...util.xml.xml import untis_import_xml
 
 
 class Command(BaseCommand):
diff --git a/aleksis/apps/untis/menus.py b/aleksis/apps/untis/menus.py
index 3bda041ce510e34e5c31825919b9b4baed3d4439..7e4cbd69476ea51e978df1f488957871b383dd95 100644
--- a/aleksis/apps/untis/menus.py
+++ b/aleksis/apps/untis/menus.py
@@ -3,8 +3,8 @@ from django.utils.translation import ugettext_lazy as _
 MENUS = {
     "DATA_MANAGEMENT_MENU": [
         {
-            "name": _("Units import"),
-            "url": "untis_import",
+            "name": _("Untis XML import"),
+            "url": "untis_xml_import",
             "validators": [
                 "menu_generator.validators.is_authenticated",
                 "menu_generator.validators.is_superuser",
diff --git a/aleksis/apps/untis/model_extensions.py b/aleksis/apps/untis/model_extensions.py
new file mode 100644
index 0000000000000000000000000000000000000000..b9a3eef0f95f75276ae745cc3f59c96ead640126
--- /dev/null
+++ b/aleksis/apps/untis/model_extensions.py
@@ -0,0 +1,76 @@
+from django.utils.translation import gettext as _
+
+from constance import config
+from jsonstore import CharField, IntegerField
+
+from aleksis.apps.chronos import models as chronos_models
+from aleksis.core import models as core_models
+
+# Core models
+core_models.Person.field(
+    import_ref_untis=IntegerField(verbose_name=_("UNTIS import reference"), null=True, blank=True)
+)
+core_models.Group.field(
+    import_ref_untis=IntegerField(verbose_name=_("UNTIS import reference"), null=True, blank=True)
+)
+if config.UNTIS_IMPORT_MYSQL_USE_COURSE_GROUPS:
+    core_models.Group.field(
+        untis_subject=CharField(
+            verbose_name=_("UNTIS subject"),
+            help_text=_(
+                "The UNTIS import will use this for matching course groups (along with parent groups)."
+            ),
+            blank=True,
+            null=True,
+            max_length=255,
+        )
+    )
+
+# Chronos models
+chronos_models.Subject.field(
+    import_ref_untis=IntegerField(verbose_name=_("UNTIS import reference"), null=True, blank=True)
+)
+chronos_models.Room.field(
+    import_ref_untis=IntegerField(verbose_name=_("UNTIS import reference"), null=True, blank=True)
+)
+chronos_models.SupervisionArea.field(
+    import_ref_untis=IntegerField(verbose_name=_("UNTIS import reference"), null=True, blank=True)
+)
+chronos_models.Lesson.field(
+    lesson_id_untis=IntegerField(verbose_name=_("Lesson id in UNTIS"), null=True, blank=True)
+)
+chronos_models.Lesson.field(
+    element_id_untis=IntegerField(
+        verbose_name=_("Number of lesson element in UNTIS"), null=True, blank=True
+    )
+)
+chronos_models.Lesson.field(
+    term_untis=IntegerField(verbose_name=_("Term id in UNTIS"), null=True, blank=True)
+)
+chronos_models.LessonPeriod.field(
+    element_id_untis=IntegerField(
+        verbose_name=_("Number of lesson element in UNTIS"), null=True, blank=True
+    )
+)
+chronos_models.LessonSubstitution.field(
+    import_ref_untis=IntegerField(verbose_name=_("UNTIS import reference"), null=True, blank=True)
+)
+chronos_models.SupervisionSubstitution.field(
+    import_ref_untis=IntegerField(verbose_name=_("UNTIS import reference"), null=True, blank=True)
+)
+chronos_models.AbsenceReason.field(
+    import_ref_untis=IntegerField(verbose_name=_("UNTIS import reference"), null=True, blank=True)
+)
+chronos_models.Absence.field(
+    import_ref_untis=IntegerField(verbose_name=_("UNTIS import reference"), null=True, blank=True)
+)
+chronos_models.Event.field(
+    import_ref_untis=IntegerField(verbose_name=_("UNTIS import reference"), null=True, blank=True)
+)
+chronos_models.Holiday.field(
+    import_ref_untis=IntegerField(verbose_name=_("UNTIS import reference"), null=True, blank=True)
+)
+chronos_models.ExtraLesson.field(
+    import_ref_untis=IntegerField(verbose_name=_("UNTIS import reference"), null=True, blank=True)
+)
+
diff --git a/aleksis/apps/untis/models.py b/aleksis/apps/untis/models.py
index 56cb112da75cfdfc2b996e7fced297f80d9cd805..9080208ff684218dda8bac3a523677a4d9f4eecf 100644
--- a/aleksis/apps/untis/models.py
+++ b/aleksis/apps/untis/models.py
@@ -1,3 +1,6 @@
+# pylint: skip-file
+# flake8: noqa
+
 # This is an auto-generated Django model module.
 # You'll have to do the following manually to clean this up:
 #   * Rearrange models' order
@@ -7,2236 +10,4194 @@
 # Feel free to rename the models, but don't rename db_table values or field names.
 from django.db import models
 
-
-class Absence(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    absence_id = models.IntegerField(db_column='ABSENCE_ID')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    text = models.CharField(db_column='Text', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    timestamp = models.IntegerField(db_column='TimeStamp', blank=True, null=True)  # Field name made lowercase.
-    flags = models.CharField(db_column='Flags', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    foreignkey = models.CharField(db_column='ForeignKey', max_length=50, blank=True,
-                                  null=True)  # Field name made lowercase.
-    typea = models.SmallIntegerField(db_column='TypeA', blank=True, null=True)  # Field name made lowercase.
-    ida = models.IntegerField(db_column='IDA', blank=True, null=True)  # Field name made lowercase.
-    datefrom = models.IntegerField(db_column='DateFrom', blank=True, null=True)  # Field name made lowercase.
-    dateto = models.IntegerField(db_column='DateTo', blank=True, null=True)  # Field name made lowercase.
-    absence_reason_id = models.IntegerField(db_column='ABSENCE_REASON_ID', blank=True,
-                                            null=True)  # Field name made lowercase.
-    lessonfrom = models.SmallIntegerField(db_column='LessonFrom', blank=True, null=True)  # Field name made lowercase.
-    lessonto = models.SmallIntegerField(db_column='LessonTo', blank=True, null=True)  # Field name made lowercase.
-    transfer_id = models.IntegerField(db_column='TRANSFER_ID', blank=True, null=True)  # Field name made lowercase.
-    event_id = models.IntegerField(db_column='EVENT_ID', blank=True, null=True)  # Field name made lowercase.
-    valuededuction = models.IntegerField(db_column='ValueDeduction', blank=True,
-                                         null=True)  # Field name made lowercase.
-    prebookingnr = models.IntegerField(db_column='PrebookingNr', blank=True, null=True)  # Field name made lowercase.
-    timefrom = models.IntegerField(db_column='TimeFrom', blank=True, null=True)  # Field name made lowercase.
-    timeto = models.IntegerField(db_column='TimeTo', blank=True, null=True)  # Field name made lowercase.
+from aleksis.core.mixins import PureDjangoModel
+
+
+class Absence(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    absence_id = models.IntegerField(db_column="ABSENCE_ID")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    text = models.CharField(
+        db_column="Text", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    timestamp = models.IntegerField(
+        db_column="TimeStamp", blank=True, null=True
+    )  # Field name made lowercase.
+    flags = models.CharField(
+        db_column="Flags", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    foreignkey = models.CharField(
+        db_column="ForeignKey", max_length=50, blank=True, null=True
+    )  # Field name made lowercase.
+    typea = models.SmallIntegerField(
+        db_column="TypeA", blank=True, null=True
+    )  # Field name made lowercase.
+    ida = models.IntegerField(db_column="IDA", blank=True, null=True)  # Field name made lowercase.
+    datefrom = models.IntegerField(
+        db_column="DateFrom", blank=True, null=True
+    )  # Field name made lowercase.
+    dateto = models.IntegerField(
+        db_column="DateTo", blank=True, null=True
+    )  # Field name made lowercase.
+    absence_reason_id = models.IntegerField(
+        db_column="ABSENCE_REASON_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    lessonfrom = models.SmallIntegerField(
+        db_column="LessonFrom", blank=True, null=True
+    )  # Field name made lowercase.
+    lessonto = models.SmallIntegerField(
+        db_column="LessonTo", blank=True, null=True
+    )  # Field name made lowercase.
+    transfer_id = models.IntegerField(
+        db_column="TRANSFER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    event_id = models.IntegerField(
+        db_column="EVENT_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    valuededuction = models.IntegerField(
+        db_column="ValueDeduction", blank=True, null=True
+    )  # Field name made lowercase.
+    prebookingnr = models.IntegerField(
+        db_column="PrebookingNr", blank=True, null=True
+    )  # Field name made lowercase.
+    timefrom = models.IntegerField(
+        db_column="TimeFrom", blank=True, null=True
+    )  # Field name made lowercase.
+    timeto = models.IntegerField(
+        db_column="TimeTo", blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'Absence'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'absence_id'),)
-
-
-class Absencereason(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    absence_reason_id = models.IntegerField(db_column='ABSENCE_REASON_ID')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    sortid = models.IntegerField(db_column='SortId', blank=True, null=True)  # Field name made lowercase.
-    name = models.CharField(db_column='Name', max_length=60, blank=True, null=True)  # Field name made lowercase.
-    statisticcodes = models.CharField(db_column='StatisticCodes', max_length=10, blank=True,
-                                      null=True)  # Field name made lowercase.
-    longname = models.CharField(db_column='Longname', max_length=100, blank=True,
-                                null=True)  # Field name made lowercase.
-    timestamp = models.IntegerField(db_column='TimeStamp', blank=True, null=True)  # Field name made lowercase.
-    flags = models.CharField(db_column='Flags', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    description_id = models.IntegerField(db_column='DESCRIPTION_ID', blank=True,
-                                         null=True)  # Field name made lowercase.
+        db_table = "Absence"
+        unique_together = (("school_id", "schoolyear_id", "version_id", "absence_id"),)
+
+
+class Absencereason(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    absence_reason_id = models.IntegerField(
+        db_column="ABSENCE_REASON_ID"
+    )  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    sortid = models.IntegerField(
+        db_column="SortId", blank=True, null=True
+    )  # Field name made lowercase.
+    name = models.CharField(
+        db_column="Name", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    statisticcodes = models.CharField(
+        db_column="StatisticCodes", max_length=10, blank=True, null=True
+    )  # Field name made lowercase.
+    longname = models.CharField(
+        db_column="Longname", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    timestamp = models.IntegerField(
+        db_column="TimeStamp", blank=True, null=True
+    )  # Field name made lowercase.
+    flags = models.CharField(
+        db_column="Flags", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    description_id = models.IntegerField(
+        db_column="DESCRIPTION_ID", blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'AbsenceReason'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'absence_reason_id'),)
-
-
-class Adminlesson(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    ls_id = models.IntegerField(db_column='LS_ID')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    sortid = models.IntegerField(db_column='SortId', blank=True, null=True)  # Field name made lowercase.
-    startdate = models.IntegerField(db_column='StartDate', blank=True, null=True)  # Field name made lowercase.
-    enddate = models.IntegerField(db_column='EndDate', blank=True, null=True)  # Field name made lowercase.
-    subjectid = models.IntegerField(db_column='SubjectId', blank=True, null=True)  # Field name made lowercase.
-    studentgroupid = models.IntegerField(db_column='StudentGroupId', blank=True,
-                                         null=True)  # Field name made lowercase.
-    classids = models.CharField(db_column='ClassIds', max_length=600, blank=True,
-                                null=True)  # Field name made lowercase.
-    teacherassignments = models.TextField(db_column='TeacherAssignments', blank=True,
-                                          null=True)  # Field name made lowercase.
+        db_table = "AbsenceReason"
+        unique_together = (("school_id", "schoolyear_id", "version_id", "absence_reason_id"),)
+
+
+class Adminlesson(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    ls_id = models.IntegerField(db_column="LS_ID")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    sortid = models.IntegerField(
+        db_column="SortId", blank=True, null=True
+    )  # Field name made lowercase.
+    startdate = models.IntegerField(
+        db_column="StartDate", blank=True, null=True
+    )  # Field name made lowercase.
+    enddate = models.IntegerField(
+        db_column="EndDate", blank=True, null=True
+    )  # Field name made lowercase.
+    subjectid = models.IntegerField(
+        db_column="SubjectId", blank=True, null=True
+    )  # Field name made lowercase.
+    studentgroupid = models.IntegerField(
+        db_column="StudentGroupId", blank=True, null=True
+    )  # Field name made lowercase.
+    classids = models.CharField(
+        db_column="ClassIds", max_length=600, blank=True, null=True
+    )  # Field name made lowercase.
+    teacherassignments = models.TextField(
+        db_column="TeacherAssignments", blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'AdminLesson'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'ls_id'),)
-
-
-class Alias(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    type = models.SmallIntegerField(db_column='Type')  # Field name made lowercase.
-    term_id = models.SmallIntegerField(db_column='TERM_ID')  # Field name made lowercase.
-    alias_id = models.IntegerField(db_column='ALIAS_ID')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    sortid = models.IntegerField(db_column='SortId', blank=True, null=True)  # Field name made lowercase.
-    name = models.CharField(db_column='Name', max_length=60, blank=True, null=True)  # Field name made lowercase.
-    flags = models.CharField(db_column='Flags', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    elementids = models.CharField(db_column='ElementIds', max_length=255, blank=True,
-                                  null=True)  # Field name made lowercase.
+        db_table = "AdminLesson"
+        unique_together = (("school_id", "schoolyear_id", "version_id", "ls_id"),)
+
+
+class Alias(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    type = models.SmallIntegerField(db_column="Type")  # Field name made lowercase.
+    term_id = models.SmallIntegerField(db_column="TERM_ID")  # Field name made lowercase.
+    alias_id = models.IntegerField(db_column="ALIAS_ID")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    sortid = models.IntegerField(
+        db_column="SortId", blank=True, null=True
+    )  # Field name made lowercase.
+    name = models.CharField(
+        db_column="Name", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    flags = models.CharField(
+        db_column="Flags", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    elementids = models.CharField(
+        db_column="ElementIds", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'Alias'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'type', 'alias_id', 'term_id'),)
-
-
-class CvReason(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    cv_reason_id = models.IntegerField(db_column='CV_REASON_ID')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    sortid = models.IntegerField(db_column='SortId', blank=True, null=True)  # Field name made lowercase.
-    name = models.CharField(db_column='Name', max_length=60, blank=True, null=True)  # Field name made lowercase.
-    statisticcodes = models.CharField(db_column='StatisticCodes', max_length=10, blank=True,
-                                      null=True)  # Field name made lowercase.
-    longname = models.CharField(db_column='Longname', max_length=100, blank=True,
-                                null=True)  # Field name made lowercase.
-    timestamp = models.IntegerField(db_column='TimeStamp', blank=True, null=True)  # Field name made lowercase.
-    flags = models.CharField(db_column='Flags', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    description_id = models.IntegerField(db_column='DESCRIPTION_ID', blank=True,
-                                         null=True)  # Field name made lowercase.
+        db_table = "Alias"
+        unique_together = (
+            ("school_id", "schoolyear_id", "version_id", "type", "alias_id", "term_id"),
+        )
+
+
+class CvReason(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    cv_reason_id = models.IntegerField(db_column="CV_REASON_ID")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    sortid = models.IntegerField(
+        db_column="SortId", blank=True, null=True
+    )  # Field name made lowercase.
+    name = models.CharField(
+        db_column="Name", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    statisticcodes = models.CharField(
+        db_column="StatisticCodes", max_length=10, blank=True, null=True
+    )  # Field name made lowercase.
+    longname = models.CharField(
+        db_column="Longname", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    timestamp = models.IntegerField(
+        db_column="TimeStamp", blank=True, null=True
+    )  # Field name made lowercase.
+    flags = models.CharField(
+        db_column="Flags", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    description_id = models.IntegerField(
+        db_column="DESCRIPTION_ID", blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'CV_Reason'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'cv_reason_id'),)
-
-
-class Calendar(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    date = models.IntegerField(db_column='Date')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    text = models.CharField(db_column='Text', max_length=150, blank=True, null=True)  # Field name made lowercase.
-    flags = models.CharField(db_column='Flags', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    absence_reason_id = models.IntegerField(db_column='ABSENCE_REASON_ID', blank=True,
-                                            null=True)  # Field name made lowercase.
-    note = models.CharField(db_column='Note', max_length=150, blank=True, null=True)  # Field name made lowercase.
-    freelessons = models.CharField(db_column='FreeLessons', max_length=255, blank=True,
-                                   null=True)  # Field name made lowercase.
-    daytext = models.CharField(db_column='DayText', max_length=2000, blank=True,
-                               null=True)  # Field name made lowercase.
-    elementids = models.CharField(db_column='ElementIds', max_length=2000, blank=True,
-                                  null=True)  # Field name made lowercase.
-    textguid = models.CharField(db_column='TextGuid', max_length=2000, blank=True,
-                                null=True)  # Field name made lowercase.
-    additionaldays = models.CharField(db_column='AdditionalDays', max_length=255, blank=True,
-                                      null=True)  # Field name made lowercase.
+        db_table = "CV_Reason"
+        unique_together = (("school_id", "schoolyear_id", "version_id", "cv_reason_id"),)
+
+
+class Calendar(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    date = models.IntegerField(db_column="Date")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    text = models.CharField(
+        db_column="Text", max_length=150, blank=True, null=True
+    )  # Field name made lowercase.
+    flags = models.CharField(
+        db_column="Flags", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    absence_reason_id = models.IntegerField(
+        db_column="ABSENCE_REASON_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    note = models.CharField(
+        db_column="Note", max_length=150, blank=True, null=True
+    )  # Field name made lowercase.
+    freelessons = models.CharField(
+        db_column="FreeLessons", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    daytext = models.CharField(
+        db_column="DayText", max_length=2000, blank=True, null=True
+    )  # Field name made lowercase.
+    elementids = models.CharField(
+        db_column="ElementIds", max_length=2000, blank=True, null=True
+    )  # Field name made lowercase.
+    textguid = models.CharField(
+        db_column="TextGuid", max_length=2000, blank=True, null=True
+    )  # Field name made lowercase.
+    additionaldays = models.CharField(
+        db_column="AdditionalDays", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'Calendar'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'date'),)
-
-
-class Class(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    class_id = models.IntegerField(db_column='CLASS_ID')  # Field name made lowercase.
-    term_id = models.SmallIntegerField(db_column='TERM_ID')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    sortid = models.IntegerField(db_column='SortId', blank=True, null=True)  # Field name made lowercase.
-    name = models.CharField(db_column='Name', max_length=60, blank=True, null=True)  # Field name made lowercase.
-    text = models.CharField(db_column='Text', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    statisticcodes = models.CharField(db_column='StatisticCodes', max_length=10, blank=True,
-                                      null=True)  # Field name made lowercase.
-    statisticcodes2 = models.CharField(db_column='StatisticCodes2', max_length=10, blank=True,
-                                       null=True)  # Field name made lowercase.
-    longname = models.CharField(db_column='Longname', max_length=100, blank=True,
-                                null=True)  # Field name made lowercase.
-    timerequest = models.CharField(db_column='TimeRequest', max_length=400, blank=True,
-                                   null=True)  # Field name made lowercase.
-    timerequestminut = models.CharField(db_column='TimeRequestMinut', max_length=400, blank=True,
-                                        null=True)  # Field name made lowercase.
-    dayrequest = models.CharField(db_column='DayRequest', max_length=400, blank=True,
-                                  null=True)  # Field name made lowercase.
-    timerequestunspecified = models.CharField(db_column='TimeRequestUnspecified', max_length=400, blank=True,
-                                              null=True)  # Field name made lowercase.
-    selmatrix = models.CharField(db_column='SelMatrix', max_length=100, blank=True,
-                                 null=True)  # Field name made lowercase.
-    timestamp = models.IntegerField(db_column='TimeStamp', blank=True, null=True)  # Field name made lowercase.
-    flags = models.CharField(db_column='Flags', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    blankflags = models.CharField(db_column='BlankFlags', max_length=80, blank=True,
-                                  null=True)  # Field name made lowercase.
-    room_id = models.IntegerField(db_column='ROOM_ID', blank=True, null=True)  # Field name made lowercase.
-    description_id = models.IntegerField(db_column='DESCRIPTION_ID', blank=True,
-                                         null=True)  # Field name made lowercase.
-    forecolor = models.IntegerField(db_column='ForeColor', blank=True, null=True)  # Field name made lowercase.
-    backcolor = models.IntegerField(db_column='BackColor', blank=True, null=True)  # Field name made lowercase.
-    factor = models.CharField(db_column='Factor', max_length=9, blank=True, null=True)  # Field name made lowercase.
-    foreigndata = models.CharField(db_column='ForeignData', max_length=255, blank=True,
-                                   null=True)  # Field name made lowercase.
-    foreignkey = models.CharField(db_column='ForeignKey', max_length=50, blank=True,
-                                  null=True)  # Field name made lowercase.
-    oldname = models.CharField(db_column='OldName', max_length=60, blank=True, null=True)  # Field name made lowercase.
-    minutbreakmin = models.SmallIntegerField(db_column='MinutBreakMin', blank=True,
-                                             null=True)  # Field name made lowercase.
-    lunchbreakmin = models.SmallIntegerField(db_column='LunchBreakMin', blank=True,
-                                             null=True)  # Field name made lowercase.
-    lunchbreakmax = models.SmallIntegerField(db_column='LunchBreakMax', blank=True,
-                                             null=True)  # Field name made lowercase.
-    lssnperdaymin = models.SmallIntegerField(db_column='LssnPerDayMin', blank=True,
-                                             null=True)  # Field name made lowercase.
-    lssnperdaymax = models.SmallIntegerField(db_column='LssnPerDayMax', blank=True,
-                                             null=True)  # Field name made lowercase.
-    minutminutesperdaymin = models.SmallIntegerField(db_column='MinutMinutesPerDayMin', blank=True,
-                                                     null=True)  # Field name made lowercase.
-    minutminutesperdaymax = models.SmallIntegerField(db_column='MinutMinutesPerDayMax', blank=True,
-                                                     null=True)  # Field name made lowercase.
-    minutlunchbreakperdaymin = models.SmallIntegerField(db_column='MinutLunchBreakPerDayMin', blank=True,
-                                                        null=True)  # Field name made lowercase.
-    minutlunchbreakperdaymax = models.SmallIntegerField(db_column='MinutLunchBreakPerDayMax', blank=True,
-                                                        null=True)  # Field name made lowercase.
-    blocksnodays = models.SmallIntegerField(db_column='BlocksNoDays', blank=True,
-                                            null=True)  # Field name made lowercase.
-    blockslssnfrom = models.SmallIntegerField(db_column='BlocksLssnFrom', blank=True,
-                                              null=True)  # Field name made lowercase.
-    blockslssnto = models.SmallIntegerField(db_column='BlocksLssnTo', blank=True,
-                                            null=True)  # Field name made lowercase.
-    weekquotamin = models.SmallIntegerField(db_column='WeekQuotaMin', blank=True,
-                                            null=True)  # Field name made lowercase.
-    weekquotamax = models.SmallIntegerField(db_column='WeekQuotaMax', blank=True,
-                                            null=True)  # Field name made lowercase.
-    weekquotaideal = models.SmallIntegerField(db_column='WeekQuotaIdeal', blank=True,
-                                              null=True)  # Field name made lowercase.
-    nameyearbefore = models.CharField(db_column='NameYearBefore', max_length=20, blank=True,
-                                      null=True)  # Field name made lowercase.
-    periods_table_id = models.IntegerField(db_column='PERIODS_TABLE_ID', blank=True,
-                                           null=True)  # Field name made lowercase.
-    mainclass = models.CharField(db_column='MainClass', max_length=255, blank=True,
-                                 null=True)  # Field name made lowercase.
-    teacherids = models.CharField(db_column='TeacherIds', max_length=50, blank=True,
-                                  null=True)  # Field name made lowercase.
-    teacher_id = models.IntegerField(db_column='TEACHER_ID', blank=True, null=True)  # Field name made lowercase.
-    department_id = models.IntegerField(db_column='DEPARTMENT_ID', blank=True, null=True)  # Field name made lowercase.
-    ownschool = models.CharField(db_column='OwnSchool', max_length=20, blank=True,
-                                 null=True)  # Field name made lowercase.
-    datefrom = models.IntegerField(db_column='DateFrom', blank=True, null=True)  # Field name made lowercase.
-    dateto = models.IntegerField(db_column='DateTo', blank=True, null=True)  # Field name made lowercase.
-    msubjsuccmax = models.SmallIntegerField(db_column='MSubjSuccMax', blank=True,
-                                            null=True)  # Field name made lowercase.
-    msubjdaymax = models.SmallIntegerField(db_column='MSubjDayMax', blank=True, null=True)  # Field name made lowercase.
-    classgroup = models.CharField(db_column='ClassGroup', max_length=1, blank=True,
-                                  null=True)  # Field name made lowercase.
-    classlevel = models.CharField(db_column='ClassLevel', max_length=50, blank=True,
-                                  null=True)  # Field name made lowercase.
-    nostudentmale = models.SmallIntegerField(db_column='NoStudentMale', blank=True,
-                                             null=True)  # Field name made lowercase.
-    nostudentfemale = models.SmallIntegerField(db_column='NoStudentFemale', blank=True,
-                                               null=True)  # Field name made lowercase.
-    minutmsubjdaymax = models.SmallIntegerField(db_column='MinutMSubjDayMax', blank=True,
-                                                null=True)  # Field name made lowercase.
-    minutbreakmax = models.SmallIntegerField(db_column='MinutBreakMax', blank=True,
-                                             null=True)  # Field name made lowercase.
-    notlastperiod = models.CharField(db_column='NotLastPeriod', max_length=255, blank=True,
-                                     null=True)  # Field name made lowercase.
-    doubleorsingle = models.CharField(db_column='DoubleOrSingle', max_length=255, blank=True,
-                                      null=True)  # Field name made lowercase.
-    substplgrid = models.CharField(db_column='SubstPlGrid', max_length=1000, blank=True,
-                                   null=True)  # Field name made lowercase.
-    nrtimegrid = models.SmallIntegerField(db_column='NrTimeGrid', blank=True, null=True)  # Field name made lowercase.
-    difflessonmax = models.SmallIntegerField(db_column='DiffLessonMax', blank=True,
-                                             null=True)  # Field name made lowercase.
-    text1 = models.CharField(db_column='Text1', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    text2 = models.CharField(db_column='Text2', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    plannedyear = models.IntegerField(db_column='PlannedYear', blank=True, null=True)  # Field name made lowercase.
-    externname = models.CharField(db_column='ExternName', max_length=60, blank=True,
-                                  null=True)  # Field name made lowercase.
-    weeklytargetclasses = models.IntegerField(db_column='WeeklyTargetClasses', blank=True,
-                                              null=True)  # Field name made lowercase.
+        db_table = "Calendar"
+        unique_together = (("school_id", "schoolyear_id", "version_id", "date"),)
+
+
+class Class(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    class_id = models.IntegerField(db_column="CLASS_ID")  # Field name made lowercase.
+    term_id = models.SmallIntegerField(db_column="TERM_ID")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    sortid = models.IntegerField(
+        db_column="SortId", blank=True, null=True
+    )  # Field name made lowercase.
+    name = models.CharField(
+        db_column="Name", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    text = models.CharField(
+        db_column="Text", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    statisticcodes = models.CharField(
+        db_column="StatisticCodes", max_length=10, blank=True, null=True
+    )  # Field name made lowercase.
+    statisticcodes2 = models.CharField(
+        db_column="StatisticCodes2", max_length=10, blank=True, null=True
+    )  # Field name made lowercase.
+    longname = models.CharField(
+        db_column="Longname", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    timerequest = models.CharField(
+        db_column="TimeRequest", max_length=400, blank=True, null=True
+    )  # Field name made lowercase.
+    timerequestminut = models.CharField(
+        db_column="TimeRequestMinut", max_length=400, blank=True, null=True
+    )  # Field name made lowercase.
+    dayrequest = models.CharField(
+        db_column="DayRequest", max_length=400, blank=True, null=True
+    )  # Field name made lowercase.
+    timerequestunspecified = models.CharField(
+        db_column="TimeRequestUnspecified", max_length=400, blank=True, null=True
+    )  # Field name made lowercase.
+    selmatrix = models.CharField(
+        db_column="SelMatrix", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    timestamp = models.IntegerField(
+        db_column="TimeStamp", blank=True, null=True
+    )  # Field name made lowercase.
+    flags = models.CharField(
+        db_column="Flags", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    blankflags = models.CharField(
+        db_column="BlankFlags", max_length=80, blank=True, null=True
+    )  # Field name made lowercase.
+    room_id = models.IntegerField(
+        db_column="ROOM_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    description_id = models.IntegerField(
+        db_column="DESCRIPTION_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    forecolor = models.IntegerField(
+        db_column="ForeColor", blank=True, null=True
+    )  # Field name made lowercase.
+    backcolor = models.IntegerField(
+        db_column="BackColor", blank=True, null=True
+    )  # Field name made lowercase.
+    factor = models.CharField(
+        db_column="Factor", max_length=9, blank=True, null=True
+    )  # Field name made lowercase.
+    foreigndata = models.CharField(
+        db_column="ForeignData", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    foreignkey = models.CharField(
+        db_column="ForeignKey", max_length=50, blank=True, null=True
+    )  # Field name made lowercase.
+    oldname = models.CharField(
+        db_column="OldName", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    minutbreakmin = models.SmallIntegerField(
+        db_column="MinutBreakMin", blank=True, null=True
+    )  # Field name made lowercase.
+    lunchbreakmin = models.SmallIntegerField(
+        db_column="LunchBreakMin", blank=True, null=True
+    )  # Field name made lowercase.
+    lunchbreakmax = models.SmallIntegerField(
+        db_column="LunchBreakMax", blank=True, null=True
+    )  # Field name made lowercase.
+    lssnperdaymin = models.SmallIntegerField(
+        db_column="LssnPerDayMin", blank=True, null=True
+    )  # Field name made lowercase.
+    lssnperdaymax = models.SmallIntegerField(
+        db_column="LssnPerDayMax", blank=True, null=True
+    )  # Field name made lowercase.
+    minutminutesperdaymin = models.SmallIntegerField(
+        db_column="MinutMinutesPerDayMin", blank=True, null=True
+    )  # Field name made lowercase.
+    minutminutesperdaymax = models.SmallIntegerField(
+        db_column="MinutMinutesPerDayMax", blank=True, null=True
+    )  # Field name made lowercase.
+    minutlunchbreakperdaymin = models.SmallIntegerField(
+        db_column="MinutLunchBreakPerDayMin", blank=True, null=True
+    )  # Field name made lowercase.
+    minutlunchbreakperdaymax = models.SmallIntegerField(
+        db_column="MinutLunchBreakPerDayMax", blank=True, null=True
+    )  # Field name made lowercase.
+    blocksnodays = models.SmallIntegerField(
+        db_column="BlocksNoDays", blank=True, null=True
+    )  # Field name made lowercase.
+    blockslssnfrom = models.SmallIntegerField(
+        db_column="BlocksLssnFrom", blank=True, null=True
+    )  # Field name made lowercase.
+    blockslssnto = models.SmallIntegerField(
+        db_column="BlocksLssnTo", blank=True, null=True
+    )  # Field name made lowercase.
+    weekquotamin = models.SmallIntegerField(
+        db_column="WeekQuotaMin", blank=True, null=True
+    )  # Field name made lowercase.
+    weekquotamax = models.SmallIntegerField(
+        db_column="WeekQuotaMax", blank=True, null=True
+    )  # Field name made lowercase.
+    weekquotaideal = models.SmallIntegerField(
+        db_column="WeekQuotaIdeal", blank=True, null=True
+    )  # Field name made lowercase.
+    nameyearbefore = models.CharField(
+        db_column="NameYearBefore", max_length=20, blank=True, null=True
+    )  # Field name made lowercase.
+    periods_table_id = models.IntegerField(
+        db_column="PERIODS_TABLE_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    mainclass = models.CharField(
+        db_column="MainClass", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    teacherids = models.CharField(
+        db_column="TeacherIds", max_length=50, blank=True, null=True
+    )  # Field name made lowercase.
+    teacher_id = models.IntegerField(
+        db_column="TEACHER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    department_id = models.IntegerField(
+        db_column="DEPARTMENT_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    ownschool = models.CharField(
+        db_column="OwnSchool", max_length=20, blank=True, null=True
+    )  # Field name made lowercase.
+    datefrom = models.IntegerField(
+        db_column="DateFrom", blank=True, null=True
+    )  # Field name made lowercase.
+    dateto = models.IntegerField(
+        db_column="DateTo", blank=True, null=True
+    )  # Field name made lowercase.
+    msubjsuccmax = models.SmallIntegerField(
+        db_column="MSubjSuccMax", blank=True, null=True
+    )  # Field name made lowercase.
+    msubjdaymax = models.SmallIntegerField(
+        db_column="MSubjDayMax", blank=True, null=True
+    )  # Field name made lowercase.
+    classgroup = models.CharField(
+        db_column="ClassGroup", max_length=1, blank=True, null=True
+    )  # Field name made lowercase.
+    classlevel = models.CharField(
+        db_column="ClassLevel", max_length=50, blank=True, null=True
+    )  # Field name made lowercase.
+    nostudentmale = models.SmallIntegerField(
+        db_column="NoStudentMale", blank=True, null=True
+    )  # Field name made lowercase.
+    nostudentfemale = models.SmallIntegerField(
+        db_column="NoStudentFemale", blank=True, null=True
+    )  # Field name made lowercase.
+    minutmsubjdaymax = models.SmallIntegerField(
+        db_column="MinutMSubjDayMax", blank=True, null=True
+    )  # Field name made lowercase.
+    minutbreakmax = models.SmallIntegerField(
+        db_column="MinutBreakMax", blank=True, null=True
+    )  # Field name made lowercase.
+    notlastperiod = models.CharField(
+        db_column="NotLastPeriod", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    doubleorsingle = models.CharField(
+        db_column="DoubleOrSingle", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    substplgrid = models.CharField(
+        db_column="SubstPlGrid", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    nrtimegrid = models.SmallIntegerField(
+        db_column="NrTimeGrid", blank=True, null=True
+    )  # Field name made lowercase.
+    difflessonmax = models.SmallIntegerField(
+        db_column="DiffLessonMax", blank=True, null=True
+    )  # Field name made lowercase.
+    text1 = models.CharField(
+        db_column="Text1", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    text2 = models.CharField(
+        db_column="Text2", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    plannedyear = models.IntegerField(
+        db_column="PlannedYear", blank=True, null=True
+    )  # Field name made lowercase.
+    externname = models.CharField(
+        db_column="ExternName", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    weeklytargetclasses = models.IntegerField(
+        db_column="WeeklyTargetClasses", blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'Class'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'class_id', 'term_id'),)
-
-
-class Commondata(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    id = models.SmallIntegerField(db_column='ID')  # Field name made lowercase.
-    owner = models.SmallIntegerField(db_column='Owner')  # Field name made lowercase.
-    number = models.SmallIntegerField(db_column='Number')  # Field name made lowercase.
-    number1 = models.SmallIntegerField(db_column='Number1')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    fieldbool1 = models.IntegerField(db_column='FieldBool1', blank=True, null=True)  # Field name made lowercase.
-    fieldbool2 = models.IntegerField(db_column='FieldBool2', blank=True, null=True)  # Field name made lowercase.
-    fieldbool3 = models.IntegerField(db_column='FieldBool3', blank=True, null=True)  # Field name made lowercase.
-    fieldbool4 = models.IntegerField(db_column='FieldBool4', blank=True, null=True)  # Field name made lowercase.
-    fieldbool5 = models.IntegerField(db_column='FieldBool5', blank=True, null=True)  # Field name made lowercase.
-    fieldbool6 = models.IntegerField(db_column='FieldBool6', blank=True, null=True)  # Field name made lowercase.
-    fieldbool7 = models.IntegerField(db_column='FieldBool7', blank=True, null=True)  # Field name made lowercase.
-    fieldbool8 = models.IntegerField(db_column='FieldBool8', blank=True, null=True)  # Field name made lowercase.
-    fieldbyte1 = models.SmallIntegerField(db_column='FieldByte1', blank=True, null=True)  # Field name made lowercase.
-    fieldbyte2 = models.SmallIntegerField(db_column='FieldByte2', blank=True, null=True)  # Field name made lowercase.
-    fieldbyte3 = models.SmallIntegerField(db_column='FieldByte3', blank=True, null=True)  # Field name made lowercase.
-    fieldbyte4 = models.SmallIntegerField(db_column='FieldByte4', blank=True, null=True)  # Field name made lowercase.
-    fieldbyte5 = models.SmallIntegerField(db_column='FieldByte5', blank=True, null=True)  # Field name made lowercase.
-    fieldbyte6 = models.SmallIntegerField(db_column='FieldByte6', blank=True, null=True)  # Field name made lowercase.
-    fieldbyte7 = models.SmallIntegerField(db_column='FieldByte7', blank=True, null=True)  # Field name made lowercase.
-    fieldbyte8 = models.SmallIntegerField(db_column='FieldByte8', blank=True, null=True)  # Field name made lowercase.
-    fieldint1 = models.SmallIntegerField(db_column='FieldInt1', blank=True, null=True)  # Field name made lowercase.
-    fieldint2 = models.SmallIntegerField(db_column='FieldInt2', blank=True, null=True)  # Field name made lowercase.
-    fieldint3 = models.SmallIntegerField(db_column='FieldInt3', blank=True, null=True)  # Field name made lowercase.
-    fieldint4 = models.SmallIntegerField(db_column='FieldInt4', blank=True, null=True)  # Field name made lowercase.
-    fieldint5 = models.SmallIntegerField(db_column='FieldInt5', blank=True, null=True)  # Field name made lowercase.
-    fieldint6 = models.SmallIntegerField(db_column='FieldInt6', blank=True, null=True)  # Field name made lowercase.
-    fieldint7 = models.SmallIntegerField(db_column='FieldInt7', blank=True, null=True)  # Field name made lowercase.
-    fieldint8 = models.SmallIntegerField(db_column='FieldInt8', blank=True, null=True)  # Field name made lowercase.
-    fieldlong1 = models.IntegerField(db_column='FieldLong1', blank=True, null=True)  # Field name made lowercase.
-    fieldlong2 = models.IntegerField(db_column='FieldLong2', blank=True, null=True)  # Field name made lowercase.
-    fieldlong3 = models.IntegerField(db_column='FieldLong3', blank=True, null=True)  # Field name made lowercase.
-    fieldlong4 = models.IntegerField(db_column='FieldLong4', blank=True, null=True)  # Field name made lowercase.
-    fieldtext10a = models.CharField(db_column='FieldText10A', max_length=255, blank=True,
-                                    null=True)  # Field name made lowercase.
-    fieldtext10b = models.CharField(db_column='FieldText10B', max_length=255, blank=True,
-                                    null=True)  # Field name made lowercase.
-    fieldtext10c = models.CharField(db_column='FieldText10C', max_length=255, blank=True,
-                                    null=True)  # Field name made lowercase.
-    fieldtext10d = models.CharField(db_column='FieldText10D', max_length=255, blank=True,
-                                    null=True)  # Field name made lowercase.
-    fieldtext20a = models.CharField(db_column='FieldText20A', max_length=255, blank=True,
-                                    null=True)  # Field name made lowercase.
-    fieldtext20b = models.CharField(db_column='FieldText20B', max_length=255, blank=True,
-                                    null=True)  # Field name made lowercase.
-    fieldtext20c = models.CharField(db_column='FieldText20C', max_length=255, blank=True,
-                                    null=True)  # Field name made lowercase.
-    fieldtext20d = models.CharField(db_column='FieldText20D', max_length=255, blank=True,
-                                    null=True)  # Field name made lowercase.
-    fieldtext50a = models.CharField(db_column='FieldText50A', max_length=255, blank=True,
-                                    null=True)  # Field name made lowercase.
-    fieldtext50b = models.CharField(db_column='FieldText50B', max_length=255, blank=True,
-                                    null=True)  # Field name made lowercase.
-    fieldtext50c = models.CharField(db_column='FieldText50C', max_length=255, blank=True,
-                                    null=True)  # Field name made lowercase.
-    fieldtext50d = models.CharField(db_column='FieldText50D', max_length=255, blank=True,
-                                    null=True)  # Field name made lowercase.
-    fieldtext100a = models.CharField(db_column='FieldText100A', max_length=255, blank=True,
-                                     null=True)  # Field name made lowercase.
-    fieldtext100b = models.CharField(db_column='FieldText100B', max_length=255, blank=True,
-                                     null=True)  # Field name made lowercase.
-    fieldtext100c = models.CharField(db_column='FieldText100C', max_length=255, blank=True,
-                                     null=True)  # Field name made lowercase.
-    fieldtext100d = models.CharField(db_column='FieldText100D', max_length=255, blank=True,
-                                     null=True)  # Field name made lowercase.
-    fieldtextlonga = models.CharField(db_column='FieldTextLongA', max_length=1000, blank=True,
-                                      null=True)  # Field name made lowercase.
+        db_table = "Class"
+        unique_together = (("school_id", "schoolyear_id", "version_id", "class_id", "term_id"),)
+
+
+class Commondata(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    id = models.SmallIntegerField(db_column="ID")  # Field name made lowercase.
+    owner = models.SmallIntegerField(db_column="Owner")  # Field name made lowercase.
+    number = models.SmallIntegerField(db_column="Number")  # Field name made lowercase.
+    number1 = models.SmallIntegerField(db_column="Number1")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldbool1 = models.IntegerField(
+        db_column="FieldBool1", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldbool2 = models.IntegerField(
+        db_column="FieldBool2", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldbool3 = models.IntegerField(
+        db_column="FieldBool3", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldbool4 = models.IntegerField(
+        db_column="FieldBool4", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldbool5 = models.IntegerField(
+        db_column="FieldBool5", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldbool6 = models.IntegerField(
+        db_column="FieldBool6", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldbool7 = models.IntegerField(
+        db_column="FieldBool7", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldbool8 = models.IntegerField(
+        db_column="FieldBool8", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldbyte1 = models.SmallIntegerField(
+        db_column="FieldByte1", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldbyte2 = models.SmallIntegerField(
+        db_column="FieldByte2", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldbyte3 = models.SmallIntegerField(
+        db_column="FieldByte3", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldbyte4 = models.SmallIntegerField(
+        db_column="FieldByte4", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldbyte5 = models.SmallIntegerField(
+        db_column="FieldByte5", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldbyte6 = models.SmallIntegerField(
+        db_column="FieldByte6", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldbyte7 = models.SmallIntegerField(
+        db_column="FieldByte7", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldbyte8 = models.SmallIntegerField(
+        db_column="FieldByte8", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldint1 = models.SmallIntegerField(
+        db_column="FieldInt1", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldint2 = models.SmallIntegerField(
+        db_column="FieldInt2", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldint3 = models.SmallIntegerField(
+        db_column="FieldInt3", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldint4 = models.SmallIntegerField(
+        db_column="FieldInt4", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldint5 = models.SmallIntegerField(
+        db_column="FieldInt5", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldint6 = models.SmallIntegerField(
+        db_column="FieldInt6", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldint7 = models.SmallIntegerField(
+        db_column="FieldInt7", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldint8 = models.SmallIntegerField(
+        db_column="FieldInt8", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldlong1 = models.IntegerField(
+        db_column="FieldLong1", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldlong2 = models.IntegerField(
+        db_column="FieldLong2", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldlong3 = models.IntegerField(
+        db_column="FieldLong3", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldlong4 = models.IntegerField(
+        db_column="FieldLong4", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldtext10a = models.CharField(
+        db_column="FieldText10A", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    fieldtext10b = models.CharField(
+        db_column="FieldText10B", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    fieldtext10c = models.CharField(
+        db_column="FieldText10C", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    fieldtext10d = models.CharField(
+        db_column="FieldText10D", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    fieldtext20a = models.CharField(
+        db_column="FieldText20A", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    fieldtext20b = models.CharField(
+        db_column="FieldText20B", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    fieldtext20c = models.CharField(
+        db_column="FieldText20C", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    fieldtext20d = models.CharField(
+        db_column="FieldText20D", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    fieldtext50a = models.CharField(
+        db_column="FieldText50A", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    fieldtext50b = models.CharField(
+        db_column="FieldText50B", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    fieldtext50c = models.CharField(
+        db_column="FieldText50C", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    fieldtext50d = models.CharField(
+        db_column="FieldText50D", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    fieldtext100a = models.CharField(
+        db_column="FieldText100A", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    fieldtext100b = models.CharField(
+        db_column="FieldText100B", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    fieldtext100c = models.CharField(
+        db_column="FieldText100C", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    fieldtext100d = models.CharField(
+        db_column="FieldText100D", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    fieldtextlonga = models.CharField(
+        db_column="FieldTextLongA", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'CommonData'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'id', 'owner', 'number', 'number1'),)
-
-
-class Corridor(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    corridor_id = models.IntegerField(db_column='CORRIDOR_ID')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    sortid = models.IntegerField(db_column='SortId', blank=True, null=True)  # Field name made lowercase.
-    name = models.CharField(db_column='Name', max_length=60, blank=True, null=True)  # Field name made lowercase.
-    longname = models.CharField(db_column='Longname', max_length=100, blank=True,
-                                null=True)  # Field name made lowercase.
-    timestamp = models.IntegerField(db_column='TimeStamp', blank=True, null=True)  # Field name made lowercase.
-    flags = models.CharField(db_column='Flags', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    forecolor = models.IntegerField(db_column='ForeColor', blank=True, null=True)  # Field name made lowercase.
-    backcolor = models.IntegerField(db_column='BackColor', blank=True, null=True)  # Field name made lowercase.
-    dislocation = models.CharField(db_column='Dislocation', max_length=1, blank=True,
-                                   null=True)  # Field name made lowercase.
-    breaksupervision1 = models.CharField(db_column='BreakSupervision1', max_length=1000, blank=True,
-                                         null=True)  # Field name made lowercase.
-    breaksupervision2 = models.CharField(db_column='BreakSupervision2', max_length=1000, blank=True,
-                                         null=True)  # Field name made lowercase.
-    breaksupervision3 = models.CharField(db_column='BreakSupervision3', max_length=1000, blank=True,
-                                         null=True)  # Field name made lowercase.
-    breaksupervision4 = models.CharField(db_column='BreakSupervision4', max_length=1000, blank=True,
-                                         null=True)  # Field name made lowercase.
-    breaksupervision5 = models.CharField(db_column='BreakSupervision5', max_length=1000, blank=True,
-                                         null=True)  # Field name made lowercase.
-    breaksupervision6 = models.CharField(db_column='BreakSupervision6', max_length=1000, blank=True,
-                                         null=True)  # Field name made lowercase.
-    breaksupervision7 = models.CharField(db_column='BreakSupervision7', max_length=1000, blank=True,
-                                         null=True)  # Field name made lowercase.
-    breaksupervision8 = models.CharField(db_column='BreakSupervision8', max_length=1000, blank=True,
-                                         null=True)  # Field name made lowercase.
-    breaksupervision9 = models.CharField(db_column='BreakSupervision9', max_length=1000, blank=True,
-                                         null=True)  # Field name made lowercase.
-    breaksupervision10 = models.CharField(db_column='BreakSupervision10', max_length=1000, blank=True,
-                                          null=True)  # Field name made lowercase.
-    breaksupervision11 = models.CharField(db_column='BreakSupervision11', max_length=1000, blank=True,
-                                          null=True)  # Field name made lowercase.
-    breaksupervision12 = models.CharField(db_column='BreakSupervision12', max_length=1000, blank=True,
-                                          null=True)  # Field name made lowercase.
-    breaksupervision13 = models.CharField(db_column='BreakSupervision13', max_length=1000, blank=True,
-                                          null=True)  # Field name made lowercase.
-    breaksupervision14 = models.CharField(db_column='BreakSupervision14', max_length=1000, blank=True,
-                                          null=True)  # Field name made lowercase.
-    breaksupervision15 = models.CharField(db_column='BreakSupervision15', max_length=1000, blank=True,
-                                          null=True)  # Field name made lowercase.
-    breaksupervision16 = models.CharField(db_column='BreakSupervision16', max_length=1000, blank=True,
-                                          null=True)  # Field name made lowercase.
+        db_table = "CommonData"
+        unique_together = (
+            ("school_id", "schoolyear_id", "version_id", "id", "owner", "number", "number1"),
+        )
+
+
+class Corridor(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    corridor_id = models.IntegerField(db_column="CORRIDOR_ID")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    sortid = models.IntegerField(
+        db_column="SortId", blank=True, null=True
+    )  # Field name made lowercase.
+    name = models.CharField(
+        db_column="Name", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    longname = models.CharField(
+        db_column="Longname", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    timestamp = models.IntegerField(
+        db_column="TimeStamp", blank=True, null=True
+    )  # Field name made lowercase.
+    flags = models.CharField(
+        db_column="Flags", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    forecolor = models.IntegerField(
+        db_column="ForeColor", blank=True, null=True
+    )  # Field name made lowercase.
+    backcolor = models.IntegerField(
+        db_column="BackColor", blank=True, null=True
+    )  # Field name made lowercase.
+    dislocation = models.CharField(
+        db_column="Dislocation", max_length=1, blank=True, null=True
+    )  # Field name made lowercase.
+    breaksupervision1 = models.CharField(
+        db_column="BreakSupervision1", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    breaksupervision2 = models.CharField(
+        db_column="BreakSupervision2", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    breaksupervision3 = models.CharField(
+        db_column="BreakSupervision3", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    breaksupervision4 = models.CharField(
+        db_column="BreakSupervision4", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    breaksupervision5 = models.CharField(
+        db_column="BreakSupervision5", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    breaksupervision6 = models.CharField(
+        db_column="BreakSupervision6", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    breaksupervision7 = models.CharField(
+        db_column="BreakSupervision7", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    breaksupervision8 = models.CharField(
+        db_column="BreakSupervision8", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    breaksupervision9 = models.CharField(
+        db_column="BreakSupervision9", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    breaksupervision10 = models.CharField(
+        db_column="BreakSupervision10", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    breaksupervision11 = models.CharField(
+        db_column="BreakSupervision11", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    breaksupervision12 = models.CharField(
+        db_column="BreakSupervision12", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    breaksupervision13 = models.CharField(
+        db_column="BreakSupervision13", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    breaksupervision14 = models.CharField(
+        db_column="BreakSupervision14", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    breaksupervision15 = models.CharField(
+        db_column="BreakSupervision15", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    breaksupervision16 = models.CharField(
+        db_column="BreakSupervision16", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'Corridor'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'corridor_id'),)
-
-
-class Countvalue(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    count_value_id = models.IntegerField(db_column='COUNT_VALUE_ID')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    sortid = models.IntegerField(db_column='SortId', blank=True, null=True)  # Field name made lowercase.
-    text = models.CharField(db_column='Text', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    statisticcodes = models.CharField(db_column='StatisticCodes', max_length=10, blank=True,
-                                      null=True)  # Field name made lowercase.
-    timestamp = models.IntegerField(db_column='TimeStamp', blank=True, null=True)  # Field name made lowercase.
-    flags = models.CharField(db_column='Flags', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    description_id = models.IntegerField(db_column='DESCRIPTION_ID', blank=True,
-                                         null=True)  # Field name made lowercase.
-    lesson_id = models.IntegerField(db_column='LESSON_ID', blank=True, null=True)  # Field name made lowercase.
-    value = models.IntegerField(db_column='Value', blank=True, null=True)  # Field name made lowercase.
-    cv_reason_id = models.IntegerField(db_column='CV_REASON_ID', blank=True, null=True)  # Field name made lowercase.
-    teacher_id = models.IntegerField(db_column='TEACHER_ID', blank=True, null=True)  # Field name made lowercase.
-    datefrom = models.IntegerField(db_column='DateFrom', blank=True, null=True)  # Field name made lowercase.
-    dateto = models.IntegerField(db_column='DateTo', blank=True, null=True)  # Field name made lowercase.
-    valueyear = models.IntegerField(db_column='ValueYear', blank=True, null=True)  # Field name made lowercase.
-    percentvalue = models.SmallIntegerField(db_column='PercentValue', blank=True,
-                                            null=True)  # Field name made lowercase.
-    percentbase = models.CharField(db_column='PercentBase', max_length=1, blank=True,
-                                   null=True)  # Field name made lowercase.
-    valueweekminut = models.IntegerField(db_column='ValueWeekMinut', blank=True,
-                                         null=True)  # Field name made lowercase.
-    valueyearminut = models.IntegerField(db_column='ValueYearMinut', blank=True,
-                                         null=True)  # Field name made lowercase.
+        db_table = "Corridor"
+        unique_together = (("school_id", "schoolyear_id", "version_id", "corridor_id"),)
+
+
+class Countvalue(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    count_value_id = models.IntegerField(db_column="COUNT_VALUE_ID")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    sortid = models.IntegerField(
+        db_column="SortId", blank=True, null=True
+    )  # Field name made lowercase.
+    text = models.CharField(
+        db_column="Text", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    statisticcodes = models.CharField(
+        db_column="StatisticCodes", max_length=10, blank=True, null=True
+    )  # Field name made lowercase.
+    timestamp = models.IntegerField(
+        db_column="TimeStamp", blank=True, null=True
+    )  # Field name made lowercase.
+    flags = models.CharField(
+        db_column="Flags", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    description_id = models.IntegerField(
+        db_column="DESCRIPTION_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    lesson_id = models.IntegerField(
+        db_column="LESSON_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    value = models.IntegerField(
+        db_column="Value", blank=True, null=True
+    )  # Field name made lowercase.
+    cv_reason_id = models.IntegerField(
+        db_column="CV_REASON_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    teacher_id = models.IntegerField(
+        db_column="TEACHER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    datefrom = models.IntegerField(
+        db_column="DateFrom", blank=True, null=True
+    )  # Field name made lowercase.
+    dateto = models.IntegerField(
+        db_column="DateTo", blank=True, null=True
+    )  # Field name made lowercase.
+    valueyear = models.IntegerField(
+        db_column="ValueYear", blank=True, null=True
+    )  # Field name made lowercase.
+    percentvalue = models.SmallIntegerField(
+        db_column="PercentValue", blank=True, null=True
+    )  # Field name made lowercase.
+    percentbase = models.CharField(
+        db_column="PercentBase", max_length=1, blank=True, null=True
+    )  # Field name made lowercase.
+    valueweekminut = models.IntegerField(
+        db_column="ValueWeekMinut", blank=True, null=True
+    )  # Field name made lowercase.
+    valueyearminut = models.IntegerField(
+        db_column="ValueYearMinut", blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'CountValue'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'count_value_id'),)
-
-
-class Couplcond(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    coupl_cond_id = models.IntegerField(db_column='COUPL_COND_ID')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    sortid = models.IntegerField(db_column='SortId', blank=True, null=True)  # Field name made lowercase.
-    flags = models.CharField(db_column='Flags', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    conflict_coupl_cond_id = models.IntegerField(db_column='Conflict_COUPL_COND_ID', blank=True,
-                                                 null=True)  # Field name made lowercase.
-    maxcourses = models.SmallIntegerField(db_column='MaxCourses', blank=True, null=True)  # Field name made lowercase.
-    lessonids = models.CharField(db_column='LessonIds', max_length=255, blank=True,
-                                 null=True)  # Field name made lowercase.
-    subjectids = models.CharField(db_column='SubjectIds', max_length=255, blank=True,
-                                  null=True)  # Field name made lowercase.
+        db_table = "CountValue"
+        unique_together = (("school_id", "schoolyear_id", "version_id", "count_value_id"),)
+
+
+class Couplcond(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    coupl_cond_id = models.IntegerField(db_column="COUPL_COND_ID")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    sortid = models.IntegerField(
+        db_column="SortId", blank=True, null=True
+    )  # Field name made lowercase.
+    flags = models.CharField(
+        db_column="Flags", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    conflict_coupl_cond_id = models.IntegerField(
+        db_column="Conflict_COUPL_COND_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    maxcourses = models.SmallIntegerField(
+        db_column="MaxCourses", blank=True, null=True
+    )  # Field name made lowercase.
+    lessonids = models.CharField(
+        db_column="LessonIds", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    subjectids = models.CharField(
+        db_column="SubjectIds", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'CouplCond'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'coupl_cond_id'),)
-
-
-class Department(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    department_id = models.IntegerField(db_column='DEPARTMENT_ID')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    sortid = models.IntegerField(db_column='SortId', blank=True, null=True)  # Field name made lowercase.
-    name = models.CharField(db_column='Name', max_length=60, blank=True, null=True)  # Field name made lowercase.
-    longname = models.CharField(db_column='Longname', max_length=100, blank=True,
-                                null=True)  # Field name made lowercase.
-    timestamp = models.IntegerField(db_column='TimeStamp', blank=True, null=True)  # Field name made lowercase.
+        db_table = "CouplCond"
+        unique_together = (("school_id", "schoolyear_id", "version_id", "coupl_cond_id"),)
+
+
+class Department(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    department_id = models.IntegerField(db_column="DEPARTMENT_ID")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    sortid = models.IntegerField(
+        db_column="SortId", blank=True, null=True
+    )  # Field name made lowercase.
+    name = models.CharField(
+        db_column="Name", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    longname = models.CharField(
+        db_column="Longname", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    timestamp = models.IntegerField(
+        db_column="TimeStamp", blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'Department'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'department_id'),)
-
-
-class Description(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    description_id = models.IntegerField(db_column='DESCRIPTION_ID')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    sortid = models.IntegerField(db_column='SortId', blank=True, null=True)  # Field name made lowercase.
-    name = models.CharField(db_column='Name', max_length=60, blank=True, null=True)  # Field name made lowercase.
-    statisticcodes = models.CharField(db_column='StatisticCodes', max_length=10, blank=True,
-                                      null=True)  # Field name made lowercase.
-    longname = models.CharField(db_column='Longname', max_length=100, blank=True,
-                                null=True)  # Field name made lowercase.
-    timestamp = models.IntegerField(db_column='TimeStamp', blank=True, null=True)  # Field name made lowercase.
+        db_table = "Department"
+        unique_together = (("school_id", "schoolyear_id", "version_id", "department_id"),)
+
+
+class Description(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    description_id = models.IntegerField(db_column="DESCRIPTION_ID")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    sortid = models.IntegerField(
+        db_column="SortId", blank=True, null=True
+    )  # Field name made lowercase.
+    name = models.CharField(
+        db_column="Name", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    statisticcodes = models.CharField(
+        db_column="StatisticCodes", max_length=10, blank=True, null=True
+    )  # Field name made lowercase.
+    longname = models.CharField(
+        db_column="Longname", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    timestamp = models.IntegerField(
+        db_column="TimeStamp", blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'Description'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'description_id'),)
-
-
-class Event(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    event_id = models.IntegerField(db_column='EVENT_ID')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    sortid = models.IntegerField(db_column='SortId', blank=True, null=True)  # Field name made lowercase.
-    text = models.CharField(db_column='Text', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    timestamp = models.IntegerField(db_column='TimeStamp', blank=True, null=True)  # Field name made lowercase.
-    flags = models.CharField(db_column='Flags', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    foreignkey = models.CharField(db_column='ForeignKey', max_length=50, blank=True,
-                                  null=True)  # Field name made lowercase.
-    datefrom = models.IntegerField(db_column='DateFrom', blank=True, null=True)  # Field name made lowercase.
-    dateto = models.IntegerField(db_column='DateTo', blank=True, null=True)  # Field name made lowercase.
-    absence_reason_id = models.IntegerField(db_column='ABSENCE_REASON_ID', blank=True,
-                                            null=True)  # Field name made lowercase.
-    lessonfrom = models.SmallIntegerField(db_column='LessonFrom', blank=True, null=True)  # Field name made lowercase.
-    lessonto = models.SmallIntegerField(db_column='LessonTo', blank=True, null=True)  # Field name made lowercase.
-    eventelement1 = models.CharField(db_column='EventElement1', max_length=1000, blank=True,
-                                     null=True)  # Field name made lowercase.
-    eventelement2 = models.CharField(db_column='EventElement2', max_length=1000, blank=True,
-                                     null=True)  # Field name made lowercase.
-    eventelement3 = models.CharField(db_column='EventElement3', max_length=1000, blank=True,
-                                     null=True)  # Field name made lowercase.
-    eventelement4 = models.CharField(db_column='EventElement4', max_length=1000, blank=True,
-                                     null=True)  # Field name made lowercase.
-    eventelement5 = models.CharField(db_column='EventElement5', max_length=1000, blank=True,
-                                     null=True)  # Field name made lowercase.
-    eventelement6 = models.CharField(db_column='EventElement6', max_length=1000, blank=True,
-                                     null=True)  # Field name made lowercase.
-    eventelement7 = models.CharField(db_column='EventElement7', max_length=1000, blank=True,
-                                     null=True)  # Field name made lowercase.
-    eventelement8 = models.CharField(db_column='EventElement8', max_length=1000, blank=True,
-                                     null=True)  # Field name made lowercase.
-    eventelement9 = models.CharField(db_column='EventElement9', max_length=1000, blank=True,
-                                     null=True)  # Field name made lowercase.
-    eventelement10 = models.CharField(db_column='EventElement10', max_length=1000, blank=True,
-                                      null=True)  # Field name made lowercase.
-    subject_id = models.IntegerField(db_column='SUBJECT_ID', blank=True, null=True)  # Field name made lowercase.
-    timefrom = models.IntegerField(db_column='TimeFrom', blank=True, null=True)  # Field name made lowercase.
-    timeto = models.IntegerField(db_column='TimeTo', blank=True, null=True)  # Field name made lowercase.
-    studentgroup = models.CharField(db_column='StudentGroup', max_length=100, blank=True,
-                                    null=True)  # Field name made lowercase.
-    studentgroup_id = models.IntegerField(db_column='STUDENTGROUP_ID', blank=True,
-                                          null=True)  # Field name made lowercase.
+        db_table = "Description"
+        unique_together = (("school_id", "schoolyear_id", "version_id", "description_id"),)
+
+
+class Event(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    event_id = models.IntegerField(db_column="EVENT_ID")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    sortid = models.IntegerField(
+        db_column="SortId", blank=True, null=True
+    )  # Field name made lowercase.
+    text = models.CharField(
+        db_column="Text", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    timestamp = models.IntegerField(
+        db_column="TimeStamp", blank=True, null=True
+    )  # Field name made lowercase.
+    flags = models.CharField(
+        db_column="Flags", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    foreignkey = models.CharField(
+        db_column="ForeignKey", max_length=50, blank=True, null=True
+    )  # Field name made lowercase.
+    datefrom = models.IntegerField(
+        db_column="DateFrom", blank=True, null=True
+    )  # Field name made lowercase.
+    dateto = models.IntegerField(
+        db_column="DateTo", blank=True, null=True
+    )  # Field name made lowercase.
+    absence_reason_id = models.IntegerField(
+        db_column="ABSENCE_REASON_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    lessonfrom = models.SmallIntegerField(
+        db_column="LessonFrom", blank=True, null=True
+    )  # Field name made lowercase.
+    lessonto = models.SmallIntegerField(
+        db_column="LessonTo", blank=True, null=True
+    )  # Field name made lowercase.
+    eventelement1 = models.CharField(
+        db_column="EventElement1", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    eventelement2 = models.CharField(
+        db_column="EventElement2", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    eventelement3 = models.CharField(
+        db_column="EventElement3", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    eventelement4 = models.CharField(
+        db_column="EventElement4", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    eventelement5 = models.CharField(
+        db_column="EventElement5", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    eventelement6 = models.CharField(
+        db_column="EventElement6", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    eventelement7 = models.CharField(
+        db_column="EventElement7", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    eventelement8 = models.CharField(
+        db_column="EventElement8", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    eventelement9 = models.CharField(
+        db_column="EventElement9", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    eventelement10 = models.CharField(
+        db_column="EventElement10", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    subject_id = models.IntegerField(
+        db_column="SUBJECT_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    timefrom = models.IntegerField(
+        db_column="TimeFrom", blank=True, null=True
+    )  # Field name made lowercase.
+    timeto = models.IntegerField(
+        db_column="TimeTo", blank=True, null=True
+    )  # Field name made lowercase.
+    studentgroup = models.CharField(
+        db_column="StudentGroup", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    studentgroup_id = models.IntegerField(
+        db_column="STUDENTGROUP_ID", blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'Event'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'event_id'),)
-
-
-class Exam(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    exam_id = models.IntegerField(db_column='EXAM_ID')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    sortid = models.IntegerField(db_column='SortId', blank=True, null=True)  # Field name made lowercase.
-    name = models.CharField(db_column='Name', max_length=60, blank=True, null=True)  # Field name made lowercase.
-    text = models.CharField(db_column='Text', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    statisticcodes = models.CharField(db_column='StatisticCodes', max_length=10, blank=True,
-                                      null=True)  # Field name made lowercase.
-    date = models.IntegerField(db_column='Date', blank=True, null=True)  # Field name made lowercase.
-    lessonfrom = models.SmallIntegerField(db_column='LessonFrom', blank=True, null=True)  # Field name made lowercase.
-    lessonto = models.SmallIntegerField(db_column='LessonTo', blank=True, null=True)  # Field name made lowercase.
-    examelement1 = models.CharField(db_column='ExamElement1', max_length=1000, blank=True,
-                                    null=True)  # Field name made lowercase.
-    examelement2 = models.CharField(db_column='ExamElement2', max_length=1000, blank=True,
-                                    null=True)  # Field name made lowercase.
-    examelement3 = models.CharField(db_column='ExamElement3', max_length=1000, blank=True,
-                                    null=True)  # Field name made lowercase.
-    examelement4 = models.CharField(db_column='ExamElement4', max_length=1000, blank=True,
-                                    null=True)  # Field name made lowercase.
-    examelement5 = models.CharField(db_column='ExamElement5', max_length=1000, blank=True,
-                                    null=True)  # Field name made lowercase.
-    examelement6 = models.CharField(db_column='ExamElement6', max_length=1000, blank=True,
-                                    null=True)  # Field name made lowercase.
-    examelement7 = models.CharField(db_column='ExamElement7', max_length=1000, blank=True,
-                                    null=True)  # Field name made lowercase.
-    examelement8 = models.CharField(db_column='ExamElement8', max_length=1000, blank=True,
-                                    null=True)  # Field name made lowercase.
-    examelement9 = models.CharField(db_column='ExamElement9', max_length=1000, blank=True,
-                                    null=True)  # Field name made lowercase.
-    examelement10 = models.CharField(db_column='ExamElement10', max_length=1000, blank=True,
-                                     null=True)  # Field name made lowercase.
-    substactive = models.IntegerField(db_column='SubstActive', blank=True, null=True)  # Field name made lowercase.
-    noprintperiods = models.CharField(db_column='NoPrintPeriods', max_length=150, blank=True,
-                                      null=True)  # Field name made lowercase.
-    contrarytoabsence = models.CharField(db_column='ContraryToAbsence', max_length=150, blank=True,
-                                         null=True)  # Field name made lowercase.
-    messagesent = models.CharField(db_column='MessageSent', max_length=150, blank=True,
-                                   null=True)  # Field name made lowercase.
-    examperiodtexts = models.CharField(db_column='ExamPeriodTexts', max_length=2000, blank=True,
-                                       null=True)  # Field name made lowercase.
-    flags = models.CharField(db_column='Flags', max_length=100, blank=True, null=True)  # Field name made lowercase.
+        db_table = "Event"
+        unique_together = (("school_id", "schoolyear_id", "version_id", "event_id"),)
+
+
+class Exam(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    exam_id = models.IntegerField(db_column="EXAM_ID")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    sortid = models.IntegerField(
+        db_column="SortId", blank=True, null=True
+    )  # Field name made lowercase.
+    name = models.CharField(
+        db_column="Name", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    text = models.CharField(
+        db_column="Text", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    statisticcodes = models.CharField(
+        db_column="StatisticCodes", max_length=10, blank=True, null=True
+    )  # Field name made lowercase.
+    date = models.IntegerField(
+        db_column="Date", blank=True, null=True
+    )  # Field name made lowercase.
+    lessonfrom = models.SmallIntegerField(
+        db_column="LessonFrom", blank=True, null=True
+    )  # Field name made lowercase.
+    lessonto = models.SmallIntegerField(
+        db_column="LessonTo", blank=True, null=True
+    )  # Field name made lowercase.
+    examelement1 = models.CharField(
+        db_column="ExamElement1", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    examelement2 = models.CharField(
+        db_column="ExamElement2", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    examelement3 = models.CharField(
+        db_column="ExamElement3", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    examelement4 = models.CharField(
+        db_column="ExamElement4", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    examelement5 = models.CharField(
+        db_column="ExamElement5", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    examelement6 = models.CharField(
+        db_column="ExamElement6", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    examelement7 = models.CharField(
+        db_column="ExamElement7", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    examelement8 = models.CharField(
+        db_column="ExamElement8", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    examelement9 = models.CharField(
+        db_column="ExamElement9", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    examelement10 = models.CharField(
+        db_column="ExamElement10", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    substactive = models.IntegerField(
+        db_column="SubstActive", blank=True, null=True
+    )  # Field name made lowercase.
+    noprintperiods = models.CharField(
+        db_column="NoPrintPeriods", max_length=150, blank=True, null=True
+    )  # Field name made lowercase.
+    contrarytoabsence = models.CharField(
+        db_column="ContraryToAbsence", max_length=150, blank=True, null=True
+    )  # Field name made lowercase.
+    messagesent = models.CharField(
+        db_column="MessageSent", max_length=150, blank=True, null=True
+    )  # Field name made lowercase.
+    examperiodtexts = models.CharField(
+        db_column="ExamPeriodTexts", max_length=2000, blank=True, null=True
+    )  # Field name made lowercase.
+    flags = models.CharField(
+        db_column="Flags", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'Exam'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'exam_id'),)
-
-
-class Externelement(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    exel_id = models.IntegerField(db_column='EXEL_ID')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    sortid = models.IntegerField(db_column='SortId', blank=True, null=True)  # Field name made lowercase.
-    name = models.CharField(db_column='Name', max_length=60, blank=True, null=True)  # Field name made lowercase.
-    text = models.CharField(db_column='Text', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    longname = models.CharField(db_column='Longname', max_length=100, blank=True,
-                                null=True)  # Field name made lowercase.
-    timestamp = models.IntegerField(db_column='TimeStamp', blank=True, null=True)  # Field name made lowercase.
-    elementtype = models.SmallIntegerField(db_column='ElementType', blank=True, null=True)  # Field name made lowercase.
-    ownerschool = models.IntegerField(db_column='OwnerSchool', blank=True, null=True)  # Field name made lowercase.
-    allowedschools = models.CharField(db_column='AllowedSchools', max_length=255, blank=True,
-                                      null=True)  # Field name made lowercase.
-    lastchangedbyschool = models.IntegerField(db_column='LastChangedBySchool', blank=True,
-                                              null=True)  # Field name made lowercase.
+        db_table = "Exam"
+        unique_together = (("school_id", "schoolyear_id", "version_id", "exam_id"),)
+
+
+class Externelement(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    exel_id = models.IntegerField(db_column="EXEL_ID")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    sortid = models.IntegerField(
+        db_column="SortId", blank=True, null=True
+    )  # Field name made lowercase.
+    name = models.CharField(
+        db_column="Name", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    text = models.CharField(
+        db_column="Text", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    longname = models.CharField(
+        db_column="Longname", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    timestamp = models.IntegerField(
+        db_column="TimeStamp", blank=True, null=True
+    )  # Field name made lowercase.
+    elementtype = models.SmallIntegerField(
+        db_column="ElementType", blank=True, null=True
+    )  # Field name made lowercase.
+    ownerschool = models.IntegerField(
+        db_column="OwnerSchool", blank=True, null=True
+    )  # Field name made lowercase.
+    allowedschools = models.CharField(
+        db_column="AllowedSchools", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    lastchangedbyschool = models.IntegerField(
+        db_column="LastChangedBySchool", blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'ExternElement'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'exel_id'),)
-
-
-class Externindex(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    number = models.SmallIntegerField(db_column='Number')  # Field name made lowercase.
-    exel_id = models.IntegerField(db_column='EXEL_ID')  # Field name made lowercase.
-    school_id1 = models.IntegerField(db_column='SCHOOL_ID1')  # Field name made lowercase.
-    year = models.SmallIntegerField(db_column='Year')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
+        db_table = "ExternElement"
+        unique_together = (("school_id", "schoolyear_id", "version_id", "exel_id"),)
+
+
+class Externindex(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    number = models.SmallIntegerField(db_column="Number")  # Field name made lowercase.
+    exel_id = models.IntegerField(db_column="EXEL_ID")  # Field name made lowercase.
+    school_id1 = models.IntegerField(db_column="SCHOOL_ID1")  # Field name made lowercase.
+    year = models.SmallIntegerField(db_column="Year")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'ExternIndex'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'exel_id', 'number', 'year', 'school_id1'),)
-
-
-class Externtime(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    number = models.IntegerField(db_column='Number')  # Field name made lowercase.
-    exel_id = models.IntegerField(db_column='EXEL_ID')  # Field name made lowercase.
-    school_id1 = models.IntegerField(db_column='SCHOOL_ID1')  # Field name made lowercase.
-    year = models.SmallIntegerField(db_column='Year')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    text = models.CharField(db_column='Text', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    flags = models.CharField(db_column='Flags', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    weekday = models.SmallIntegerField(db_column='WeekDay', blank=True, null=True)  # Field name made lowercase.
-    timefrom = models.SmallIntegerField(db_column='TimeFrom', blank=True, null=True)  # Field name made lowercase.
-    timeto = models.SmallIntegerField(db_column='TimeTo', blank=True, null=True)  # Field name made lowercase.
-    weeks = models.CharField(db_column='Weeks', max_length=255, blank=True, null=True)  # Field name made lowercase.
-    elements = models.CharField(db_column='Elements', max_length=1000, blank=True,
-                                null=True)  # Field name made lowercase.
+        db_table = "ExternIndex"
+        unique_together = (
+            ("school_id", "schoolyear_id", "version_id", "exel_id", "number", "year", "school_id1"),
+        )
+
+
+class Externtime(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    number = models.IntegerField(db_column="Number")  # Field name made lowercase.
+    exel_id = models.IntegerField(db_column="EXEL_ID")  # Field name made lowercase.
+    school_id1 = models.IntegerField(db_column="SCHOOL_ID1")  # Field name made lowercase.
+    year = models.SmallIntegerField(db_column="Year")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    text = models.CharField(
+        db_column="Text", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    flags = models.CharField(
+        db_column="Flags", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    weekday = models.SmallIntegerField(
+        db_column="WeekDay", blank=True, null=True
+    )  # Field name made lowercase.
+    timefrom = models.SmallIntegerField(
+        db_column="TimeFrom", blank=True, null=True
+    )  # Field name made lowercase.
+    timeto = models.SmallIntegerField(
+        db_column="TimeTo", blank=True, null=True
+    )  # Field name made lowercase.
+    weeks = models.CharField(
+        db_column="Weeks", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    elements = models.CharField(
+        db_column="Elements", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'ExternTime'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'number', 'exel_id', 'school_id1', 'year'),)
-
-
-class Glaettung(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    number = models.SmallIntegerField(db_column='Number')  # Field name made lowercase.
-    teacher_id = models.IntegerField(db_column='TEACHER_ID')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    weekfrom = models.SmallIntegerField(db_column='WeekFrom', blank=True, null=True)  # Field name made lowercase.
-    weekto = models.SmallIntegerField(db_column='WeekTo', blank=True, null=True)  # Field name made lowercase.
-    glaettung = models.IntegerField(db_column='Glaettung', blank=True, null=True)  # Field name made lowercase.
+        db_table = "ExternTime"
+        unique_together = (
+            ("school_id", "schoolyear_id", "version_id", "number", "exel_id", "school_id1", "year"),
+        )
+
+
+class Glaettung(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    number = models.SmallIntegerField(db_column="Number")  # Field name made lowercase.
+    teacher_id = models.IntegerField(db_column="TEACHER_ID")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    weekfrom = models.SmallIntegerField(
+        db_column="WeekFrom", blank=True, null=True
+    )  # Field name made lowercase.
+    weekto = models.SmallIntegerField(
+        db_column="WeekTo", blank=True, null=True
+    )  # Field name made lowercase.
+    glaettung = models.IntegerField(
+        db_column="Glaettung", blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'Glaettung'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'teacher_id', 'number'),)
-
-
-class Holiday(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    holiday_id = models.IntegerField(db_column='HOLIDAY_ID')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    name = models.CharField(db_column='Name', max_length=60, blank=True, null=True)  # Field name made lowercase.
-    longname = models.CharField(db_column='Longname', max_length=100, blank=True,
-                                null=True)  # Field name made lowercase.
-    flags = models.CharField(db_column='Flags', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    nextweek = models.SmallIntegerField(db_column='NextWeek', blank=True, null=True)  # Field name made lowercase.
-    nextschoolweek = models.SmallIntegerField(db_column='NextSchoolWeek', blank=True,
-                                              null=True)  # Field name made lowercase.
-    datefrom = models.IntegerField(db_column='DateFrom', blank=True, null=True)  # Field name made lowercase.
-    dateto = models.IntegerField(db_column='DateTo', blank=True, null=True)  # Field name made lowercase.
+        db_table = "Glaettung"
+        unique_together = (("school_id", "schoolyear_id", "version_id", "teacher_id", "number"),)
+
+
+class Holiday(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    holiday_id = models.IntegerField(db_column="HOLIDAY_ID")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    name = models.CharField(
+        db_column="Name", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    longname = models.CharField(
+        db_column="Longname", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    flags = models.CharField(
+        db_column="Flags", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    nextweek = models.SmallIntegerField(
+        db_column="NextWeek", blank=True, null=True
+    )  # Field name made lowercase.
+    nextschoolweek = models.SmallIntegerField(
+        db_column="NextSchoolWeek", blank=True, null=True
+    )  # Field name made lowercase.
+    datefrom = models.IntegerField(
+        db_column="DateFrom", blank=True, null=True
+    )  # Field name made lowercase.
+    dateto = models.IntegerField(
+        db_column="DateTo", blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'Holiday'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'holiday_id'),)
-
-
-class Inputformat(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    input_format_id = models.IntegerField(db_column='INPUT_FORMAT_ID')  # Field name made lowercase.
-    owner = models.SmallIntegerField(db_column='Owner')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    sortid = models.IntegerField(db_column='SortId', blank=True, null=True)  # Field name made lowercase.
-    name = models.CharField(db_column='Name', max_length=60, blank=True, null=True)  # Field name made lowercase.
-    longname = models.CharField(db_column='Longname', max_length=100, blank=True,
-                                null=True)  # Field name made lowercase.
-    window = models.CharField(db_column='Window', max_length=255, blank=True, null=True)  # Field name made lowercase.
-    flags = models.CharField(db_column='Flags', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    miscdata = models.CharField(db_column='MiscData', max_length=255, blank=True,
-                                null=True)  # Field name made lowercase.
-    picturedata1 = models.CharField(db_column='PictureData1', max_length=100, blank=True,
-                                    null=True)  # Field name made lowercase.
-    picturedata2 = models.CharField(db_column='PictureData2', max_length=100, blank=True,
-                                    null=True)  # Field name made lowercase.
-    font = models.CharField(db_column='Font', max_length=120, blank=True, null=True)  # Field name made lowercase.
-    printer = models.CharField(db_column='Printer', max_length=60, blank=True, null=True)  # Field name made lowercase.
-    printfont = models.CharField(db_column='PrintFont', max_length=120, blank=True,
-                                 null=True)  # Field name made lowercase.
-    actualelement_id2 = models.IntegerField(db_column='ActualELEMENT_ID2', blank=True,
-                                            null=True)  # Field name made lowercase.
-    headerfields = models.CharField(db_column='HeaderFields', max_length=100, blank=True,
-                                    null=True)  # Field name made lowercase.
-    type2 = models.SmallIntegerField(db_column='Type2', blank=True, null=True)  # Field name made lowercase.
-    columnsstr = models.CharField(db_column='ColumnsStr', max_length=255, blank=True,
-                                  null=True)  # Field name made lowercase.
-    columnsactivestr = models.CharField(db_column='ColumnsActiveStr', max_length=255, blank=True,
-                                        null=True)  # Field name made lowercase.
-    colwidthsstr = models.CharField(db_column='ColWidthsStr', max_length=255, blank=True,
-                                    null=True)  # Field name made lowercase.
-    layouthaeder = models.SmallIntegerField(db_column='LayoutHaeder', blank=True,
-                                            null=True)  # Field name made lowercase.
-    colsfixed = models.SmallIntegerField(db_column='ColsFixed', blank=True, null=True)  # Field name made lowercase.
-    nocol = models.SmallIntegerField(db_column='NoCol', blank=True, null=True)  # Field name made lowercase.
-    colwidth = models.SmallIntegerField(db_column='ColWidth', blank=True, null=True)  # Field name made lowercase.
-    nocolteacher = models.SmallIntegerField(db_column='NoColTeacher', blank=True,
-                                            null=True)  # Field name made lowercase.
-    typex = models.CharField(db_column='TypeX', max_length=1, blank=True, null=True)  # Field name made lowercase.
-    field1 = models.CharField(db_column='Field1', max_length=1000, blank=True, null=True)  # Field name made lowercase.
-    field2 = models.CharField(db_column='Field2', max_length=1000, blank=True, null=True)  # Field name made lowercase.
-    field3 = models.CharField(db_column='Field3', max_length=1000, blank=True, null=True)  # Field name made lowercase.
-    field4 = models.CharField(db_column='Field4', max_length=1000, blank=True, null=True)  # Field name made lowercase.
-    field5 = models.CharField(db_column='Field5', max_length=1000, blank=True, null=True)  # Field name made lowercase.
-    field6 = models.CharField(db_column='Field6', max_length=1000, blank=True, null=True)  # Field name made lowercase.
-    field7 = models.CharField(db_column='Field7', max_length=1000, blank=True, null=True)  # Field name made lowercase.
-    field8 = models.CharField(db_column='Field8', max_length=1000, blank=True, null=True)  # Field name made lowercase.
-    field9 = models.CharField(db_column='Field9', max_length=1000, blank=True, null=True)  # Field name made lowercase.
-    field10 = models.CharField(db_column='Field10', max_length=1000, blank=True,
-                               null=True)  # Field name made lowercase.
-    flags1 = models.CharField(db_column='Flags1', max_length=100, blank=True, null=True)  # Field name made lowercase.
+        db_table = "Holiday"
+        unique_together = (("school_id", "schoolyear_id", "version_id", "holiday_id"),)
+
+
+class Inputformat(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    input_format_id = models.IntegerField(db_column="INPUT_FORMAT_ID")  # Field name made lowercase.
+    owner = models.SmallIntegerField(db_column="Owner")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    sortid = models.IntegerField(
+        db_column="SortId", blank=True, null=True
+    )  # Field name made lowercase.
+    name = models.CharField(
+        db_column="Name", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    longname = models.CharField(
+        db_column="Longname", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    window = models.CharField(
+        db_column="Window", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    flags = models.CharField(
+        db_column="Flags", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    miscdata = models.CharField(
+        db_column="MiscData", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    picturedata1 = models.CharField(
+        db_column="PictureData1", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    picturedata2 = models.CharField(
+        db_column="PictureData2", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    font = models.CharField(
+        db_column="Font", max_length=120, blank=True, null=True
+    )  # Field name made lowercase.
+    printer = models.CharField(
+        db_column="Printer", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    printfont = models.CharField(
+        db_column="PrintFont", max_length=120, blank=True, null=True
+    )  # Field name made lowercase.
+    actualelement_id2 = models.IntegerField(
+        db_column="ActualELEMENT_ID2", blank=True, null=True
+    )  # Field name made lowercase.
+    headerfields = models.CharField(
+        db_column="HeaderFields", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    type2 = models.SmallIntegerField(
+        db_column="Type2", blank=True, null=True
+    )  # Field name made lowercase.
+    columnsstr = models.CharField(
+        db_column="ColumnsStr", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    columnsactivestr = models.CharField(
+        db_column="ColumnsActiveStr", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    colwidthsstr = models.CharField(
+        db_column="ColWidthsStr", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    layouthaeder = models.SmallIntegerField(
+        db_column="LayoutHaeder", blank=True, null=True
+    )  # Field name made lowercase.
+    colsfixed = models.SmallIntegerField(
+        db_column="ColsFixed", blank=True, null=True
+    )  # Field name made lowercase.
+    nocol = models.SmallIntegerField(
+        db_column="NoCol", blank=True, null=True
+    )  # Field name made lowercase.
+    colwidth = models.SmallIntegerField(
+        db_column="ColWidth", blank=True, null=True
+    )  # Field name made lowercase.
+    nocolteacher = models.SmallIntegerField(
+        db_column="NoColTeacher", blank=True, null=True
+    )  # Field name made lowercase.
+    typex = models.CharField(
+        db_column="TypeX", max_length=1, blank=True, null=True
+    )  # Field name made lowercase.
+    field1 = models.CharField(
+        db_column="Field1", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    field2 = models.CharField(
+        db_column="Field2", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    field3 = models.CharField(
+        db_column="Field3", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    field4 = models.CharField(
+        db_column="Field4", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    field5 = models.CharField(
+        db_column="Field5", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    field6 = models.CharField(
+        db_column="Field6", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    field7 = models.CharField(
+        db_column="Field7", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    field8 = models.CharField(
+        db_column="Field8", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    field9 = models.CharField(
+        db_column="Field9", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    field10 = models.CharField(
+        db_column="Field10", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    flags1 = models.CharField(
+        db_column="Flags1", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'InputFormat'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'input_format_id', 'owner'),)
-
-
-class Lesson(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    lesson_id = models.IntegerField(db_column='LESSON_ID')  # Field name made lowercase.
-    term_id = models.SmallIntegerField(db_column='TERM_ID')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    sortid = models.IntegerField(db_column='SortId', blank=True, null=True)  # Field name made lowercase.
-    text = models.CharField(db_column='Text', max_length=200, blank=True, null=True)  # Field name made lowercase.
-    statisticcodes = models.CharField(db_column='StatisticCodes', max_length=10, blank=True,
-                                      null=True)  # Field name made lowercase.
-    timerequest = models.CharField(db_column='TimeRequest', max_length=400, blank=True,
-                                   null=True)  # Field name made lowercase.
-    timestamp = models.IntegerField(db_column='TimeStamp', blank=True, null=True)  # Field name made lowercase.
-    flags = models.CharField(db_column='Flags', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    blankflags = models.CharField(db_column='BlankFlags', max_length=80, blank=True,
-                                  null=True)  # Field name made lowercase.
-    description_id = models.IntegerField(db_column='DESCRIPTION_ID', blank=True,
-                                         null=True)  # Field name made lowercase.
-    forecolor = models.IntegerField(db_column='ForeColor', blank=True, null=True)  # Field name made lowercase.
-    backcolor = models.IntegerField(db_column='BackColor', blank=True, null=True)  # Field name made lowercase.
-    factor = models.CharField(db_column='Factor', max_length=9, blank=True, null=True)  # Field name made lowercase.
-    foreigndata = models.CharField(db_column='ForeignData', max_length=255, blank=True,
-                                   null=True)  # Field name made lowercase.
-    foreignkey = models.CharField(db_column='ForeignKey', max_length=50, blank=True,
-                                  null=True)  # Field name made lowercase.
-    miscdata = models.CharField(db_column='MiscData', max_length=255, blank=True,
-                                null=True)  # Field name made lowercase.
-    sortidfinper = models.SmallIntegerField(db_column='SortIdFinPer', blank=True,
-                                            null=True)  # Field name made lowercase.
-    lessonnr = models.IntegerField(db_column='LessonNr', blank=True, null=True)  # Field name made lowercase.
-    periods = models.IntegerField(db_column='Periods', blank=True, null=True)  # Field name made lowercase.
-    doublemin = models.IntegerField(db_column='DoubleMin', blank=True, null=True)  # Field name made lowercase.
-    doublemax = models.IntegerField(db_column='DoubleMax', blank=True, null=True)  # Field name made lowercase.
-    periodsroom = models.IntegerField(db_column='PeriodsRoom', blank=True, null=True)  # Field name made lowercase.
-    periodsroommax = models.IntegerField(db_column='PeriodsRoomMax', blank=True,
-                                         null=True)  # Field name made lowercase.
-    priority = models.SmallIntegerField(db_column='Priority', blank=True, null=True)  # Field name made lowercase.
-    plannedyear = models.SmallIntegerField(db_column='PlannedYear', blank=True, null=True)  # Field name made lowercase.
-    subjectseqcla = models.CharField(db_column='SubjectSeqCla', max_length=1, blank=True,
-                                     null=True)  # Field name made lowercase.
-    subjectseqtea = models.CharField(db_column='SubjectSeqTea', max_length=1, blank=True,
-                                     null=True)  # Field name made lowercase.
-    classcollision = models.CharField(db_column='ClassCollision', max_length=1, blank=True,
-                                      null=True)  # Field name made lowercase.
-    optflag = models.CharField(db_column='OptFlag', max_length=1, blank=True, null=True)  # Field name made lowercase.
-    lesngroups = models.CharField(db_column='LesnGroups', max_length=255, blank=True,
-                                  null=True)  # Field name made lowercase.
-    lessonelement1 = models.CharField(db_column='LessonElement1', max_length=1000, blank=True,
-                                      null=True)  # Field name made lowercase.
-    lessonelement2 = models.CharField(db_column='LessonElement2', max_length=1000, blank=True,
-                                      null=True)  # Field name made lowercase.
-    lessonelement3 = models.CharField(db_column='LessonElement3', max_length=1000, blank=True,
-                                      null=True)  # Field name made lowercase.
-    lessonelement4 = models.CharField(db_column='LessonElement4', max_length=1000, blank=True,
-                                      null=True)  # Field name made lowercase.
-    lessonelement5 = models.CharField(db_column='LessonElement5', max_length=1000, blank=True,
-                                      null=True)  # Field name made lowercase.
-    lessonelement6 = models.CharField(db_column='LessonElement6', max_length=1000, blank=True,
-                                      null=True)  # Field name made lowercase.
-    lessonelement7 = models.CharField(db_column='LessonElement7', max_length=1000, blank=True,
-                                      null=True)  # Field name made lowercase.
-    lessonelement8 = models.CharField(db_column='LessonElement8', max_length=1000, blank=True,
-                                      null=True)  # Field name made lowercase.
-    lessonelement9 = models.CharField(db_column='LessonElement9', max_length=1000, blank=True,
-                                      null=True)  # Field name made lowercase.
-    lessonelement10 = models.CharField(db_column='LessonElement10', max_length=1000, blank=True,
-                                       null=True)  # Field name made lowercase.
-    lesson_tt = models.TextField(db_column='Lesson_TT', blank=True, null=True)  # Field name made lowercase.
-    lesson_ttminut = models.TextField(db_column='Lesson_TTMinut', blank=True, null=True)  # Field name made lowercase.
-    plannedweekminut = models.SmallIntegerField(db_column='PlannedWeekMinut', blank=True,
-                                                null=True)  # Field name made lowercase.
-    plannedyearminut = models.IntegerField(db_column='PlannedYearMinut', blank=True,
-                                           null=True)  # Field name made lowercase.
-    lesson_group_id = models.IntegerField(db_column='LESSON_GROUP_ID', blank=True,
-                                          null=True)  # Field name made lowercase.
-    datefrom = models.IntegerField(db_column='DateFrom', blank=True, null=True)  # Field name made lowercase.
-    dateto = models.IntegerField(db_column='DateTo', blank=True, null=True)  # Field name made lowercase.
-    reasonnotplanned = models.SmallIntegerField(db_column='ReasonNotPlanned', blank=True,
-                                                null=True)  # Field name made lowercase.
-    timenotplanned = models.SmallIntegerField(db_column='TimeNotPlanned', blank=True,
-                                              null=True)  # Field name made lowercase.
-    block1 = models.SmallIntegerField(db_column='Block1', blank=True, null=True)  # Field name made lowercase.
-    block2 = models.SmallIntegerField(db_column='Block2', blank=True, null=True)  # Field name made lowercase.
-    block3 = models.SmallIntegerField(db_column='Block3', blank=True, null=True)  # Field name made lowercase.
-    block4 = models.SmallIntegerField(db_column='Block4', blank=True, null=True)  # Field name made lowercase.
-    block5 = models.SmallIntegerField(db_column='Block5', blank=True, null=True)  # Field name made lowercase.
-    nostudentmin = models.SmallIntegerField(db_column='NoStudentMin', blank=True,
-                                            null=True)  # Field name made lowercase.
-    nostudentmax = models.SmallIntegerField(db_column='NoStudentMax', blank=True,
-                                            null=True)  # Field name made lowercase.
-    ypperperiod1 = models.CharField(db_column='YPPerPeriod1', max_length=255, blank=True,
-                                    null=True)  # Field name made lowercase.
-    ypperperiod2 = models.CharField(db_column='YPPerPeriod2', max_length=255, blank=True,
-                                    null=True)  # Field name made lowercase.
-    intensiveterm = models.CharField(db_column='IntensiveTerm', max_length=255, blank=True,
-                                     null=True)  # Field name made lowercase.
-    partnos = models.CharField(db_column='PartNos', max_length=255, blank=True, null=True)  # Field name made lowercase.
-    blockn = models.CharField(db_column='BlockN', max_length=200, blank=True, null=True)  # Field name made lowercase.
-    isyearperiods = models.SmallIntegerField(db_column='IsYearPeriods', blank=True,
-                                             null=True)  # Field name made lowercase.
+        db_table = "InputFormat"
+        unique_together = (
+            ("school_id", "schoolyear_id", "version_id", "input_format_id", "owner"),
+        )
+
+
+class Lesson(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    lesson_id = models.IntegerField(db_column="LESSON_ID")  # Field name made lowercase.
+    term_id = models.SmallIntegerField(db_column="TERM_ID")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    sortid = models.IntegerField(
+        db_column="SortId", blank=True, null=True
+    )  # Field name made lowercase.
+    text = models.CharField(
+        db_column="Text", max_length=200, blank=True, null=True
+    )  # Field name made lowercase.
+    statisticcodes = models.CharField(
+        db_column="StatisticCodes", max_length=10, blank=True, null=True
+    )  # Field name made lowercase.
+    timerequest = models.CharField(
+        db_column="TimeRequest", max_length=400, blank=True, null=True
+    )  # Field name made lowercase.
+    timestamp = models.IntegerField(
+        db_column="TimeStamp", blank=True, null=True
+    )  # Field name made lowercase.
+    flags = models.CharField(
+        db_column="Flags", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    blankflags = models.CharField(
+        db_column="BlankFlags", max_length=80, blank=True, null=True
+    )  # Field name made lowercase.
+    description_id = models.IntegerField(
+        db_column="DESCRIPTION_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    forecolor = models.IntegerField(
+        db_column="ForeColor", blank=True, null=True
+    )  # Field name made lowercase.
+    backcolor = models.IntegerField(
+        db_column="BackColor", blank=True, null=True
+    )  # Field name made lowercase.
+    factor = models.CharField(
+        db_column="Factor", max_length=9, blank=True, null=True
+    )  # Field name made lowercase.
+    foreigndata = models.CharField(
+        db_column="ForeignData", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    foreignkey = models.CharField(
+        db_column="ForeignKey", max_length=50, blank=True, null=True
+    )  # Field name made lowercase.
+    miscdata = models.CharField(
+        db_column="MiscData", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    sortidfinper = models.SmallIntegerField(
+        db_column="SortIdFinPer", blank=True, null=True
+    )  # Field name made lowercase.
+    lessonnr = models.IntegerField(
+        db_column="LessonNr", blank=True, null=True
+    )  # Field name made lowercase.
+    periods = models.IntegerField(
+        db_column="Periods", blank=True, null=True
+    )  # Field name made lowercase.
+    doublemin = models.IntegerField(
+        db_column="DoubleMin", blank=True, null=True
+    )  # Field name made lowercase.
+    doublemax = models.IntegerField(
+        db_column="DoubleMax", blank=True, null=True
+    )  # Field name made lowercase.
+    periodsroom = models.IntegerField(
+        db_column="PeriodsRoom", blank=True, null=True
+    )  # Field name made lowercase.
+    periodsroommax = models.IntegerField(
+        db_column="PeriodsRoomMax", blank=True, null=True
+    )  # Field name made lowercase.
+    priority = models.SmallIntegerField(
+        db_column="Priority", blank=True, null=True
+    )  # Field name made lowercase.
+    plannedyear = models.SmallIntegerField(
+        db_column="PlannedYear", blank=True, null=True
+    )  # Field name made lowercase.
+    subjectseqcla = models.CharField(
+        db_column="SubjectSeqCla", max_length=1, blank=True, null=True
+    )  # Field name made lowercase.
+    subjectseqtea = models.CharField(
+        db_column="SubjectSeqTea", max_length=1, blank=True, null=True
+    )  # Field name made lowercase.
+    classcollision = models.CharField(
+        db_column="ClassCollision", max_length=1, blank=True, null=True
+    )  # Field name made lowercase.
+    optflag = models.CharField(
+        db_column="OptFlag", max_length=1, blank=True, null=True
+    )  # Field name made lowercase.
+    lesngroups = models.CharField(
+        db_column="LesnGroups", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    lessonelement1 = models.CharField(
+        db_column="LessonElement1", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    lessonelement2 = models.CharField(
+        db_column="LessonElement2", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    lessonelement3 = models.CharField(
+        db_column="LessonElement3", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    lessonelement4 = models.CharField(
+        db_column="LessonElement4", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    lessonelement5 = models.CharField(
+        db_column="LessonElement5", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    lessonelement6 = models.CharField(
+        db_column="LessonElement6", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    lessonelement7 = models.CharField(
+        db_column="LessonElement7", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    lessonelement8 = models.CharField(
+        db_column="LessonElement8", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    lessonelement9 = models.CharField(
+        db_column="LessonElement9", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    lessonelement10 = models.CharField(
+        db_column="LessonElement10", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    lesson_tt = models.TextField(
+        db_column="Lesson_TT", blank=True, null=True
+    )  # Field name made lowercase.
+    lesson_ttminut = models.TextField(
+        db_column="Lesson_TTMinut", blank=True, null=True
+    )  # Field name made lowercase.
+    plannedweekminut = models.SmallIntegerField(
+        db_column="PlannedWeekMinut", blank=True, null=True
+    )  # Field name made lowercase.
+    plannedyearminut = models.IntegerField(
+        db_column="PlannedYearMinut", blank=True, null=True
+    )  # Field name made lowercase.
+    lesson_group_id = models.IntegerField(
+        db_column="LESSON_GROUP_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    datefrom = models.IntegerField(
+        db_column="DateFrom", blank=True, null=True
+    )  # Field name made lowercase.
+    dateto = models.IntegerField(
+        db_column="DateTo", blank=True, null=True
+    )  # Field name made lowercase.
+    reasonnotplanned = models.SmallIntegerField(
+        db_column="ReasonNotPlanned", blank=True, null=True
+    )  # Field name made lowercase.
+    timenotplanned = models.SmallIntegerField(
+        db_column="TimeNotPlanned", blank=True, null=True
+    )  # Field name made lowercase.
+    block1 = models.SmallIntegerField(
+        db_column="Block1", blank=True, null=True
+    )  # Field name made lowercase.
+    block2 = models.SmallIntegerField(
+        db_column="Block2", blank=True, null=True
+    )  # Field name made lowercase.
+    block3 = models.SmallIntegerField(
+        db_column="Block3", blank=True, null=True
+    )  # Field name made lowercase.
+    block4 = models.SmallIntegerField(
+        db_column="Block4", blank=True, null=True
+    )  # Field name made lowercase.
+    block5 = models.SmallIntegerField(
+        db_column="Block5", blank=True, null=True
+    )  # Field name made lowercase.
+    nostudentmin = models.SmallIntegerField(
+        db_column="NoStudentMin", blank=True, null=True
+    )  # Field name made lowercase.
+    nostudentmax = models.SmallIntegerField(
+        db_column="NoStudentMax", blank=True, null=True
+    )  # Field name made lowercase.
+    ypperperiod1 = models.CharField(
+        db_column="YPPerPeriod1", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    ypperperiod2 = models.CharField(
+        db_column="YPPerPeriod2", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    intensiveterm = models.CharField(
+        db_column="IntensiveTerm", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    partnos = models.CharField(
+        db_column="PartNos", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    blockn = models.CharField(
+        db_column="BlockN", max_length=200, blank=True, null=True
+    )  # Field name made lowercase.
+    isyearperiods = models.SmallIntegerField(
+        db_column="IsYearPeriods", blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'Lesson'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'lesson_id', 'term_id'),)
-
-
-class Lessongroup(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    lesson_group_id = models.IntegerField(db_column='LESSON_GROUP_ID')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    sortid = models.IntegerField(db_column='SortId', blank=True, null=True)  # Field name made lowercase.
-    name = models.CharField(db_column='Name', max_length=60, blank=True, null=True)  # Field name made lowercase.
-    text = models.CharField(db_column='Text', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    statisticcodes = models.CharField(db_column='StatisticCodes', max_length=10, blank=True,
-                                      null=True)  # Field name made lowercase.
-    longname = models.CharField(db_column='Longname', max_length=100, blank=True,
-                                null=True)  # Field name made lowercase.
-    timestamp = models.IntegerField(db_column='TimeStamp', blank=True, null=True)  # Field name made lowercase.
-    flags = models.CharField(db_column='Flags', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    blankflags = models.CharField(db_column='BlankFlags', max_length=80, blank=True,
-                                  null=True)  # Field name made lowercase.
-    room_id = models.IntegerField(db_column='ROOM_ID', blank=True, null=True)  # Field name made lowercase.
-    description_id = models.IntegerField(db_column='DESCRIPTION_ID', blank=True,
-                                         null=True)  # Field name made lowercase.
-    forecolor = models.IntegerField(db_column='ForeColor', blank=True, null=True)  # Field name made lowercase.
-    backcolor = models.IntegerField(db_column='BackColor', blank=True, null=True)  # Field name made lowercase.
-    factor = models.CharField(db_column='Factor', max_length=9, blank=True, null=True)  # Field name made lowercase.
-    foreigndata = models.CharField(db_column='ForeignData', max_length=255, blank=True,
-                                   null=True)  # Field name made lowercase.
-    foreignkey = models.CharField(db_column='ForeignKey', max_length=50, blank=True,
-                                  null=True)  # Field name made lowercase.
-    datefrom = models.IntegerField(db_column='DateFrom', blank=True, null=True)  # Field name made lowercase.
-    dateto = models.IntegerField(db_column='DateTo', blank=True, null=True)  # Field name made lowercase.
-    week = models.IntegerField(db_column='Week', blank=True, null=True)  # Field name made lowercase.
-    inrerruptionsfrom = models.CharField(db_column='InrerruptionsFrom', max_length=255, blank=True,
-                                         null=True)  # Field name made lowercase.
-    inrerruptionsto = models.CharField(db_column='InrerruptionsTo', max_length=255, blank=True,
-                                       null=True)  # Field name made lowercase.
-    interruptionsfrom1 = models.CharField(db_column='InterruptionsFrom1', max_length=1000, blank=True,
-                                          null=True)  # Field name made lowercase.
-    interruptionsto1 = models.CharField(db_column='InterruptionsTo1', max_length=1000, blank=True,
-                                        null=True)  # Field name made lowercase.
+        db_table = "Lesson"
+        unique_together = (("school_id", "schoolyear_id", "version_id", "lesson_id", "term_id"),)
+
+
+class Lessongroup(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    lesson_group_id = models.IntegerField(db_column="LESSON_GROUP_ID")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    sortid = models.IntegerField(
+        db_column="SortId", blank=True, null=True
+    )  # Field name made lowercase.
+    name = models.CharField(
+        db_column="Name", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    text = models.CharField(
+        db_column="Text", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    statisticcodes = models.CharField(
+        db_column="StatisticCodes", max_length=10, blank=True, null=True
+    )  # Field name made lowercase.
+    longname = models.CharField(
+        db_column="Longname", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    timestamp = models.IntegerField(
+        db_column="TimeStamp", blank=True, null=True
+    )  # Field name made lowercase.
+    flags = models.CharField(
+        db_column="Flags", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    blankflags = models.CharField(
+        db_column="BlankFlags", max_length=80, blank=True, null=True
+    )  # Field name made lowercase.
+    room_id = models.IntegerField(
+        db_column="ROOM_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    description_id = models.IntegerField(
+        db_column="DESCRIPTION_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    forecolor = models.IntegerField(
+        db_column="ForeColor", blank=True, null=True
+    )  # Field name made lowercase.
+    backcolor = models.IntegerField(
+        db_column="BackColor", blank=True, null=True
+    )  # Field name made lowercase.
+    factor = models.CharField(
+        db_column="Factor", max_length=9, blank=True, null=True
+    )  # Field name made lowercase.
+    foreigndata = models.CharField(
+        db_column="ForeignData", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    foreignkey = models.CharField(
+        db_column="ForeignKey", max_length=50, blank=True, null=True
+    )  # Field name made lowercase.
+    datefrom = models.IntegerField(
+        db_column="DateFrom", blank=True, null=True
+    )  # Field name made lowercase.
+    dateto = models.IntegerField(
+        db_column="DateTo", blank=True, null=True
+    )  # Field name made lowercase.
+    week = models.IntegerField(
+        db_column="Week", blank=True, null=True
+    )  # Field name made lowercase.
+    inrerruptionsfrom = models.CharField(
+        db_column="InrerruptionsFrom", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    inrerruptionsto = models.CharField(
+        db_column="InrerruptionsTo", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    interruptionsfrom1 = models.CharField(
+        db_column="InterruptionsFrom1", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    interruptionsto1 = models.CharField(
+        db_column="InterruptionsTo1", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'LessonGroup'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'lesson_group_id'),)
-
-
-class Lessonsequence(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    type = models.SmallIntegerField(db_column='Type')  # Field name made lowercase.
-    lesson_sequence_id = models.IntegerField(db_column='LESSON_SEQUENCE_ID')  # Field name made lowercase.
-    term_id = models.SmallIntegerField(db_column='TERM_ID')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    sortid = models.IntegerField(db_column='SortId', blank=True, null=True)  # Field name made lowercase.
-    name = models.CharField(db_column='Name', max_length=60, blank=True, null=True)  # Field name made lowercase.
-    flags = models.CharField(db_column='Flags', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    periods = models.IntegerField(db_column='Periods', blank=True, null=True)  # Field name made lowercase.
-    doubleperiods = models.IntegerField(db_column='DoublePeriods', blank=True, null=True)  # Field name made lowercase.
-    lessonids = models.CharField(db_column='LessonIds', max_length=255, blank=True,
-                                 null=True)  # Field name made lowercase.
+        db_table = "LessonGroup"
+        unique_together = (("school_id", "schoolyear_id", "version_id", "lesson_group_id"),)
+
+
+class Lessonsequence(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    type = models.SmallIntegerField(db_column="Type")  # Field name made lowercase.
+    lesson_sequence_id = models.IntegerField(
+        db_column="LESSON_SEQUENCE_ID"
+    )  # Field name made lowercase.
+    term_id = models.SmallIntegerField(db_column="TERM_ID")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    sortid = models.IntegerField(
+        db_column="SortId", blank=True, null=True
+    )  # Field name made lowercase.
+    name = models.CharField(
+        db_column="Name", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    flags = models.CharField(
+        db_column="Flags", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    periods = models.IntegerField(
+        db_column="Periods", blank=True, null=True
+    )  # Field name made lowercase.
+    doubleperiods = models.IntegerField(
+        db_column="DoublePeriods", blank=True, null=True
+    )  # Field name made lowercase.
+    lessonids = models.CharField(
+        db_column="LessonIds", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'LessonSequence'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'type', 'lesson_sequence_id', 'term_id'),)
-
-
-class Lessonstack(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID')  # Field name made lowercase.
-    stack_id = models.IntegerField(db_column='STACK_ID')  # Field name made lowercase.
-    term_id = models.SmallIntegerField(db_column='TERM_ID')  # Field name made lowercase.
-    typestack = models.SmallIntegerField(db_column='TypeStack')  # Field name made lowercase.
-    typeelement = models.SmallIntegerField(db_column='TypeElement')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    coordinates = models.CharField(db_column='Coordinates', max_length=2000, blank=True,
-                                   null=True)  # Field name made lowercase.
+        db_table = "LessonSequence"
+        unique_together = (
+            ("school_id", "schoolyear_id", "version_id", "type", "lesson_sequence_id", "term_id"),
+        )
+
+
+class Lessonstack(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    user_id = models.SmallIntegerField(db_column="USER_ID")  # Field name made lowercase.
+    stack_id = models.IntegerField(db_column="STACK_ID")  # Field name made lowercase.
+    term_id = models.SmallIntegerField(db_column="TERM_ID")  # Field name made lowercase.
+    typestack = models.SmallIntegerField(db_column="TypeStack")  # Field name made lowercase.
+    typeelement = models.SmallIntegerField(db_column="TypeElement")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    coordinates = models.CharField(
+        db_column="Coordinates", max_length=2000, blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'LessonStack'
+        db_table = "LessonStack"
         unique_together = (
-            ('school_id', 'schoolyear_id', 'version_id', 'user_id', 'stack_id', 'term_id', 'typestack', 'typeelement'),)
-
-
-class Periodstable(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    periods_table_id = models.IntegerField(db_column='PERIODS_TABLE_ID')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    sortid = models.IntegerField(db_column='SortId', blank=True, null=True)  # Field name made lowercase.
-    name = models.CharField(db_column='Name', max_length=60, blank=True, null=True)  # Field name made lowercase.
-    longname = models.CharField(db_column='Longname', max_length=100, blank=True,
-                                null=True)  # Field name made lowercase.
-    timestamp = models.IntegerField(db_column='TimeStamp', blank=True, null=True)  # Field name made lowercase.
-    forecolor = models.IntegerField(db_column='ForeColor', blank=True, null=True)  # Field name made lowercase.
-    backcolor = models.IntegerField(db_column='BackColor', blank=True, null=True)  # Field name made lowercase.
-    foreigndata = models.CharField(db_column='ForeignData', max_length=255, blank=True,
-                                   null=True)  # Field name made lowercase.
-    foreignkey = models.CharField(db_column='ForeignKey', max_length=50, blank=True,
-                                  null=True)  # Field name made lowercase.
-    pertabelement1 = models.CharField(db_column='PerTabElement1', max_length=1000, blank=True,
-                                      null=True)  # Field name made lowercase.
-    pertabelement2 = models.CharField(db_column='PerTabElement2', max_length=1000, blank=True,
-                                      null=True)  # Field name made lowercase.
-    pertabelement3 = models.CharField(db_column='PerTabElement3', max_length=1000, blank=True,
-                                      null=True)  # Field name made lowercase.
-    pertabelement4 = models.CharField(db_column='PerTabElement4', max_length=1000, blank=True,
-                                      null=True)  # Field name made lowercase.
-    pertabelement5 = models.CharField(db_column='PerTabElement5', max_length=1000, blank=True,
-                                      null=True)  # Field name made lowercase.
-    pertabelement6 = models.CharField(db_column='PerTabElement6', max_length=1000, blank=True,
-                                      null=True)  # Field name made lowercase.
+            (
+                "school_id",
+                "schoolyear_id",
+                "version_id",
+                "user_id",
+                "stack_id",
+                "term_id",
+                "typestack",
+                "typeelement",
+            ),
+        )
+
+
+class Periodstable(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    periods_table_id = models.IntegerField(
+        db_column="PERIODS_TABLE_ID"
+    )  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    sortid = models.IntegerField(
+        db_column="SortId", blank=True, null=True
+    )  # Field name made lowercase.
+    name = models.CharField(
+        db_column="Name", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    longname = models.CharField(
+        db_column="Longname", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    timestamp = models.IntegerField(
+        db_column="TimeStamp", blank=True, null=True
+    )  # Field name made lowercase.
+    forecolor = models.IntegerField(
+        db_column="ForeColor", blank=True, null=True
+    )  # Field name made lowercase.
+    backcolor = models.IntegerField(
+        db_column="BackColor", blank=True, null=True
+    )  # Field name made lowercase.
+    foreigndata = models.CharField(
+        db_column="ForeignData", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    foreignkey = models.CharField(
+        db_column="ForeignKey", max_length=50, blank=True, null=True
+    )  # Field name made lowercase.
+    pertabelement1 = models.CharField(
+        db_column="PerTabElement1", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    pertabelement2 = models.CharField(
+        db_column="PerTabElement2", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    pertabelement3 = models.CharField(
+        db_column="PerTabElement3", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    pertabelement4 = models.CharField(
+        db_column="PerTabElement4", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    pertabelement5 = models.CharField(
+        db_column="PerTabElement5", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    pertabelement6 = models.CharField(
+        db_column="PerTabElement6", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'PeriodsTable'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'periods_table_id'),)
-
-
-class Prebooking(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    prebooking_id = models.IntegerField(db_column='PREBOOKING_ID')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    sortid = models.IntegerField(db_column='SortId', blank=True, null=True)  # Field name made lowercase.
-    text = models.CharField(db_column='Text', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    statisticcodes = models.CharField(db_column='StatisticCodes', max_length=10, blank=True,
-                                      null=True)  # Field name made lowercase.
-    timestamp = models.IntegerField(db_column='TimeStamp', blank=True, null=True)  # Field name made lowercase.
-    flags = models.CharField(db_column='Flags', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    room_id = models.IntegerField(db_column='ROOM_ID', blank=True, null=True)  # Field name made lowercase.
-    periods = models.SmallIntegerField(db_column='Periods', blank=True, null=True)  # Field name made lowercase.
-    teacher_id = models.IntegerField(db_column='TEACHER_ID', blank=True, null=True)  # Field name made lowercase.
-    subject_id = models.IntegerField(db_column='SUBJECT_ID', blank=True, null=True)  # Field name made lowercase.
-    lesson_id = models.IntegerField(db_column='LESSON_ID', blank=True, null=True)  # Field name made lowercase.
-    substitution_id = models.IntegerField(db_column='SUBSTITUTION_ID', blank=True,
-                                          null=True)  # Field name made lowercase.
-    classids = models.CharField(db_column='ClassIds', max_length=1000, blank=True,
-                                null=True)  # Field name made lowercase.
-    studentids = models.CharField(db_column='StudentIds', max_length=1000, blank=True,
-                                  null=True)  # Field name made lowercase.
+        db_table = "PeriodsTable"
+        unique_together = (("school_id", "schoolyear_id", "version_id", "periods_table_id"),)
+
+
+class Prebooking(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    prebooking_id = models.IntegerField(db_column="PREBOOKING_ID")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    sortid = models.IntegerField(
+        db_column="SortId", blank=True, null=True
+    )  # Field name made lowercase.
+    text = models.CharField(
+        db_column="Text", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    statisticcodes = models.CharField(
+        db_column="StatisticCodes", max_length=10, blank=True, null=True
+    )  # Field name made lowercase.
+    timestamp = models.IntegerField(
+        db_column="TimeStamp", blank=True, null=True
+    )  # Field name made lowercase.
+    flags = models.CharField(
+        db_column="Flags", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    room_id = models.IntegerField(
+        db_column="ROOM_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    periods = models.SmallIntegerField(
+        db_column="Periods", blank=True, null=True
+    )  # Field name made lowercase.
+    teacher_id = models.IntegerField(
+        db_column="TEACHER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    subject_id = models.IntegerField(
+        db_column="SUBJECT_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    lesson_id = models.IntegerField(
+        db_column="LESSON_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    substitution_id = models.IntegerField(
+        db_column="SUBSTITUTION_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    classids = models.CharField(
+        db_column="ClassIds", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    studentids = models.CharField(
+        db_column="StudentIds", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'Prebooking'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'prebooking_id'),)
-
-
-class Room(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    room_id = models.IntegerField(db_column='ROOM_ID')  # Field name made lowercase.
-    term_id = models.SmallIntegerField(db_column='TERM_ID')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    sortid = models.IntegerField(db_column='SortId', blank=True, null=True)  # Field name made lowercase.
-    name = models.CharField(db_column='Name', max_length=60, blank=True, null=True)  # Field name made lowercase.
-    text = models.CharField(db_column='Text', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    statisticcodes = models.CharField(db_column='StatisticCodes', max_length=10, blank=True,
-                                      null=True)  # Field name made lowercase.
-    longname = models.CharField(db_column='Longname', max_length=100, blank=True,
-                                null=True)  # Field name made lowercase.
-    timerequest = models.CharField(db_column='TimeRequest', max_length=400, blank=True,
-                                   null=True)  # Field name made lowercase.
-    timerequestminut = models.CharField(db_column='TimeRequestMinut', max_length=400, blank=True,
-                                        null=True)  # Field name made lowercase.
-    timestamp = models.IntegerField(db_column='TimeStamp', blank=True, null=True)  # Field name made lowercase.
-    flags = models.CharField(db_column='Flags', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    blankflags = models.CharField(db_column='BlankFlags', max_length=80, blank=True,
-                                  null=True)  # Field name made lowercase.
-    description_id = models.IntegerField(db_column='DESCRIPTION_ID', blank=True,
-                                         null=True)  # Field name made lowercase.
-    forecolor = models.IntegerField(db_column='ForeColor', blank=True, null=True)  # Field name made lowercase.
-    backcolor = models.IntegerField(db_column='BackColor', blank=True, null=True)  # Field name made lowercase.
-    factor = models.CharField(db_column='Factor', max_length=9, blank=True, null=True)  # Field name made lowercase.
-    foreigndata = models.CharField(db_column='ForeignData', max_length=255, blank=True,
-                                   null=True)  # Field name made lowercase.
-    foreignkey = models.CharField(db_column='ForeignKey', max_length=50, blank=True,
-                                  null=True)  # Field name made lowercase.
-    oldname = models.CharField(db_column='OldName', max_length=60, blank=True, null=True)  # Field name made lowercase.
-    alternate_room_id = models.IntegerField(db_column='ALTERNATE_ROOM_ID', blank=True,
-                                            null=True)  # Field name made lowercase.
-    department_id = models.IntegerField(db_column='DEPARTMENT_ID', blank=True, null=True)  # Field name made lowercase.
-    corridor1 = models.CharField(db_column='Corridor1', max_length=60, blank=True,
-                                 null=True)  # Field name made lowercase.
-    corridor2 = models.CharField(db_column='Corridor2', max_length=60, blank=True,
-                                 null=True)  # Field name made lowercase.
-    corridors = models.CharField(db_column='Corridors', max_length=255, blank=True,
-                                 null=True)  # Field name made lowercase.
-    dislocation = models.CharField(db_column='Dislocation', max_length=1, blank=True,
-                                   null=True)  # Field name made lowercase.
-    capacity = models.SmallIntegerField(db_column='Capacity', blank=True, null=True)  # Field name made lowercase.
-    weighting = models.SmallIntegerField(db_column='Weighting', blank=True, null=True)  # Field name made lowercase.
-    minutbreakmin = models.SmallIntegerField(db_column='MinutBreakMin', blank=True,
-                                             null=True)  # Field name made lowercase.
-    externname = models.CharField(db_column='ExternName', max_length=60, blank=True,
-                                  null=True)  # Field name made lowercase.
-    departments = models.CharField(db_column='Departments', max_length=20, blank=True,
-                                   null=True)  # Field name made lowercase.
+        db_table = "Prebooking"
+        unique_together = (("school_id", "schoolyear_id", "version_id", "prebooking_id"),)
+
+
+class Room(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    room_id = models.IntegerField(db_column="ROOM_ID")  # Field name made lowercase.
+    term_id = models.SmallIntegerField(db_column="TERM_ID")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    sortid = models.IntegerField(
+        db_column="SortId", blank=True, null=True
+    )  # Field name made lowercase.
+    name = models.CharField(
+        db_column="Name", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    text = models.CharField(
+        db_column="Text", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    statisticcodes = models.CharField(
+        db_column="StatisticCodes", max_length=10, blank=True, null=True
+    )  # Field name made lowercase.
+    longname = models.CharField(
+        db_column="Longname", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    timerequest = models.CharField(
+        db_column="TimeRequest", max_length=400, blank=True, null=True
+    )  # Field name made lowercase.
+    timerequestminut = models.CharField(
+        db_column="TimeRequestMinut", max_length=400, blank=True, null=True
+    )  # Field name made lowercase.
+    timestamp = models.IntegerField(
+        db_column="TimeStamp", blank=True, null=True
+    )  # Field name made lowercase.
+    flags = models.CharField(
+        db_column="Flags", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    blankflags = models.CharField(
+        db_column="BlankFlags", max_length=80, blank=True, null=True
+    )  # Field name made lowercase.
+    description_id = models.IntegerField(
+        db_column="DESCRIPTION_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    forecolor = models.IntegerField(
+        db_column="ForeColor", blank=True, null=True
+    )  # Field name made lowercase.
+    backcolor = models.IntegerField(
+        db_column="BackColor", blank=True, null=True
+    )  # Field name made lowercase.
+    factor = models.CharField(
+        db_column="Factor", max_length=9, blank=True, null=True
+    )  # Field name made lowercase.
+    foreigndata = models.CharField(
+        db_column="ForeignData", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    foreignkey = models.CharField(
+        db_column="ForeignKey", max_length=50, blank=True, null=True
+    )  # Field name made lowercase.
+    oldname = models.CharField(
+        db_column="OldName", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    alternate_room_id = models.IntegerField(
+        db_column="ALTERNATE_ROOM_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    department_id = models.IntegerField(
+        db_column="DEPARTMENT_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    corridor1 = models.CharField(
+        db_column="Corridor1", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    corridor2 = models.CharField(
+        db_column="Corridor2", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    corridors = models.CharField(
+        db_column="Corridors", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    dislocation = models.CharField(
+        db_column="Dislocation", max_length=1, blank=True, null=True
+    )  # Field name made lowercase.
+    capacity = models.SmallIntegerField(
+        db_column="Capacity", blank=True, null=True
+    )  # Field name made lowercase.
+    weighting = models.SmallIntegerField(
+        db_column="Weighting", blank=True, null=True
+    )  # Field name made lowercase.
+    minutbreakmin = models.SmallIntegerField(
+        db_column="MinutBreakMin", blank=True, null=True
+    )  # Field name made lowercase.
+    externname = models.CharField(
+        db_column="ExternName", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    departments = models.CharField(
+        db_column="Departments", max_length=20, blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'Room'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'room_id', 'term_id'),)
-
-
-class Roomgroup(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    roomgroup_id = models.IntegerField(db_column='ROOMGROUP_ID')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    sortid = models.IntegerField(db_column='SortId', blank=True, null=True)  # Field name made lowercase.
-    name = models.CharField(db_column='Name', max_length=60, blank=True, null=True)  # Field name made lowercase.
-    longname = models.CharField(db_column='Longname', max_length=100, blank=True,
-                                null=True)  # Field name made lowercase.
-    timestamp = models.IntegerField(db_column='TimeStamp', blank=True, null=True)  # Field name made lowercase.
-    forecolor = models.IntegerField(db_column='ForeColor', blank=True, null=True)  # Field name made lowercase.
-    backcolor = models.IntegerField(db_column='BackColor', blank=True, null=True)  # Field name made lowercase.
-    roomids = models.CharField(db_column='RoomIds', max_length=255, blank=True, null=True)  # Field name made lowercase.
+        db_table = "Room"
+        unique_together = (("school_id", "schoolyear_id", "version_id", "room_id", "term_id"),)
+
+
+class Roomgroup(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    roomgroup_id = models.IntegerField(db_column="ROOMGROUP_ID")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    sortid = models.IntegerField(
+        db_column="SortId", blank=True, null=True
+    )  # Field name made lowercase.
+    name = models.CharField(
+        db_column="Name", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    longname = models.CharField(
+        db_column="Longname", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    timestamp = models.IntegerField(
+        db_column="TimeStamp", blank=True, null=True
+    )  # Field name made lowercase.
+    forecolor = models.IntegerField(
+        db_column="ForeColor", blank=True, null=True
+    )  # Field name made lowercase.
+    backcolor = models.IntegerField(
+        db_column="BackColor", blank=True, null=True
+    )  # Field name made lowercase.
+    roomids = models.CharField(
+        db_column="RoomIds", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'RoomGroup'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'roomgroup_id'),)
-
-
-class School(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolno = models.CharField(db_column='SchoolNo', max_length=20, blank=True,
-                                null=True)  # Field name made lowercase.
-    lizense1 = models.CharField(db_column='Lizense1', max_length=50, blank=True,
-                                null=True)  # Field name made lowercase.
-    lizense2 = models.CharField(db_column='Lizense2', max_length=50, blank=True,
-                                null=True)  # Field name made lowercase.
-    lizensenr1 = models.CharField(db_column='LizenseNr1', max_length=8, blank=True,
-                                  null=True)  # Field name made lowercase.
-    lizensenr2 = models.CharField(db_column='LizenseNr2', max_length=7, blank=True,
-                                  null=True)  # Field name made lowercase.
-    lizensenr3 = models.CharField(db_column='LizenseNr3', max_length=7, blank=True,
-                                  null=True)  # Field name made lowercase.
-    expirationdate = models.IntegerField(db_column='ExpirationDate', blank=True,
-                                         null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    date = models.IntegerField(db_column='Date', blank=True, null=True)  # Field name made lowercase.
-    time = models.SmallIntegerField(db_column='Time', blank=True, null=True)  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID', blank=True, null=True)  # Field name made lowercase.
-    lightmodus = models.IntegerField(db_column='LightModus', blank=True, null=True)  # Field name made lowercase.
-    text = models.CharField(db_column='Text', max_length=50, blank=True, null=True)  # Field name made lowercase.
-    numberstudents = models.IntegerField(db_column='NumberStudents', blank=True,
-                                         null=True)  # Field name made lowercase.
+        db_table = "RoomGroup"
+        unique_together = (("school_id", "schoolyear_id", "version_id", "roomgroup_id"),)
+
+
+class School(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolno = models.CharField(
+        db_column="SchoolNo", max_length=20, blank=True, null=True
+    )  # Field name made lowercase.
+    lizense1 = models.CharField(
+        db_column="Lizense1", max_length=50, blank=True, null=True
+    )  # Field name made lowercase.
+    lizense2 = models.CharField(
+        db_column="Lizense2", max_length=50, blank=True, null=True
+    )  # Field name made lowercase.
+    lizensenr1 = models.CharField(
+        db_column="LizenseNr1", max_length=8, blank=True, null=True
+    )  # Field name made lowercase.
+    lizensenr2 = models.CharField(
+        db_column="LizenseNr2", max_length=7, blank=True, null=True
+    )  # Field name made lowercase.
+    lizensenr3 = models.CharField(
+        db_column="LizenseNr3", max_length=7, blank=True, null=True
+    )  # Field name made lowercase.
+    expirationdate = models.IntegerField(
+        db_column="ExpirationDate", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    date = models.IntegerField(
+        db_column="Date", blank=True, null=True
+    )  # Field name made lowercase.
+    time = models.SmallIntegerField(
+        db_column="Time", blank=True, null=True
+    )  # Field name made lowercase.
+    version_id = models.SmallIntegerField(
+        db_column="VERSION_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    lightmodus = models.IntegerField(
+        db_column="LightModus", blank=True, null=True
+    )  # Field name made lowercase.
+    text = models.CharField(
+        db_column="Text", max_length=50, blank=True, null=True
+    )  # Field name made lowercase.
+    numberstudents = models.IntegerField(
+        db_column="NumberStudents", blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'School'
-
-
-class Schoolyear(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    counterlast = models.IntegerField(db_column='CounterLast', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    date = models.IntegerField(db_column='Date', blank=True, null=True)  # Field name made lowercase.
-    time = models.IntegerField(db_column='Time', blank=True, null=True)  # Field name made lowercase.
-    schoolyearzoned = models.CharField(db_column='SchoolYearZoned', max_length=20, blank=True,
-                                       null=True)  # Field name made lowercase.
-    text = models.CharField(db_column='Text', max_length=50, blank=True, null=True)  # Field name made lowercase.
+        db_table = "School"
+
+
+class Schoolyear(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    counterlast = models.IntegerField(
+        db_column="CounterLast", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    date = models.IntegerField(
+        db_column="Date", blank=True, null=True
+    )  # Field name made lowercase.
+    time = models.IntegerField(
+        db_column="Time", blank=True, null=True
+    )  # Field name made lowercase.
+    schoolyearzoned = models.CharField(
+        db_column="SchoolYearZoned", max_length=20, blank=True, null=True
+    )  # Field name made lowercase.
+    text = models.CharField(
+        db_column="Text", max_length=50, blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'SchoolYear'
-        unique_together = (('school_id', 'schoolyear_id'),)
-
-
-class Screenset(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    screenset_id = models.IntegerField(db_column='SCREENSET_ID')  # Field name made lowercase.
-    owner = models.SmallIntegerField(db_column='Owner')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    sortid = models.IntegerField(db_column='SortId', blank=True, null=True)  # Field name made lowercase.
-    name = models.CharField(db_column='Name', max_length=60, blank=True, null=True)  # Field name made lowercase.
-    longname = models.CharField(db_column='Longname', max_length=100, blank=True,
-                                null=True)  # Field name made lowercase.
-    flags = models.CharField(db_column='Flags', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    modus = models.CharField(db_column='Modus', max_length=1, blank=True, null=True)  # Field name made lowercase.
-    numbers = models.SmallIntegerField(db_column='NumberS', blank=True, null=True)  # Field name made lowercase.
-    windows1 = models.CharField(db_column='Windows1', max_length=255, blank=True,
-                                null=True)  # Field name made lowercase.
-    windows2 = models.CharField(db_column='Windows2', max_length=255, blank=True,
-                                null=True)  # Field name made lowercase.
-    windows3 = models.CharField(db_column='Windows3', max_length=255, blank=True,
-                                null=True)  # Field name made lowercase.
-    windows4 = models.CharField(db_column='Windows4', max_length=255, blank=True,
-                                null=True)  # Field name made lowercase.
-    windows5 = models.CharField(db_column='Windows5', max_length=255, blank=True,
-                                null=True)  # Field name made lowercase.
-    windows6 = models.CharField(db_column='Windows6', max_length=255, blank=True,
-                                null=True)  # Field name made lowercase.
+        db_table = "SchoolYear"
+        unique_together = (("school_id", "schoolyear_id"),)
+
+
+class Screenset(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    screenset_id = models.IntegerField(db_column="SCREENSET_ID")  # Field name made lowercase.
+    owner = models.SmallIntegerField(db_column="Owner")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    sortid = models.IntegerField(
+        db_column="SortId", blank=True, null=True
+    )  # Field name made lowercase.
+    name = models.CharField(
+        db_column="Name", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    longname = models.CharField(
+        db_column="Longname", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    flags = models.CharField(
+        db_column="Flags", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    modus = models.CharField(
+        db_column="Modus", max_length=1, blank=True, null=True
+    )  # Field name made lowercase.
+    numbers = models.SmallIntegerField(
+        db_column="NumberS", blank=True, null=True
+    )  # Field name made lowercase.
+    windows1 = models.CharField(
+        db_column="Windows1", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    windows2 = models.CharField(
+        db_column="Windows2", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    windows3 = models.CharField(
+        db_column="Windows3", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    windows4 = models.CharField(
+        db_column="Windows4", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    windows5 = models.CharField(
+        db_column="Windows5", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    windows6 = models.CharField(
+        db_column="Windows6", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'ScreenSet'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'screenset_id', 'owner'),)
-
-
-class Student(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    student_id = models.IntegerField(db_column='STUDENT_ID')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    sortid = models.IntegerField(db_column='SortId', blank=True, null=True)  # Field name made lowercase.
-    name = models.CharField(db_column='Name', max_length=60, blank=True, null=True)  # Field name made lowercase.
-    text = models.CharField(db_column='Text', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    statisticcodes = models.CharField(db_column='StatisticCodes', max_length=10, blank=True,
-                                      null=True)  # Field name made lowercase.
-    longname = models.CharField(db_column='Longname', max_length=100, blank=True,
-                                null=True)  # Field name made lowercase.
-    timestamp = models.IntegerField(db_column='TimeStamp', blank=True, null=True)  # Field name made lowercase.
-    flags = models.CharField(db_column='Flags', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    blankflags = models.CharField(db_column='BlankFlags', max_length=80, blank=True,
-                                  null=True)  # Field name made lowercase.
-    description_id = models.IntegerField(db_column='DESCRIPTION_ID', blank=True,
-                                         null=True)  # Field name made lowercase.
-    forecolor = models.IntegerField(db_column='ForeColor', blank=True, null=True)  # Field name made lowercase.
-    backcolor = models.IntegerField(db_column='BackColor', blank=True, null=True)  # Field name made lowercase.
-    factor = models.CharField(db_column='Factor', max_length=9, blank=True, null=True)  # Field name made lowercase.
-    foreigndata = models.CharField(db_column='ForeignData', max_length=255, blank=True,
-                                   null=True)  # Field name made lowercase.
-    foreignkey = models.CharField(db_column='ForeignKey', max_length=50, blank=True,
-                                  null=True)  # Field name made lowercase.
-    oldname = models.CharField(db_column='OldName', max_length=60, blank=True, null=True)  # Field name made lowercase.
-    firstname = models.CharField(db_column='FirstName', max_length=150, blank=True,
-                                 null=True)  # Field name made lowercase.
-    studnumber = models.CharField(db_column='StudNumber', max_length=20, blank=True,
-                                  null=True)  # Field name made lowercase.
-    email = models.CharField(db_column='Email', max_length=80, blank=True, null=True)  # Field name made lowercase.
-    birthdate = models.IntegerField(db_column='BirthDate', blank=True, null=True)  # Field name made lowercase.
-    optsign = models.CharField(db_column='OptSign', max_length=1, blank=True, null=True)  # Field name made lowercase.
-    class_id = models.IntegerField(db_column='CLASS_ID', blank=True, null=True)  # Field name made lowercase.
-    class_id2 = models.SmallIntegerField(db_column='CLASS_ID2', blank=True, null=True)  # Field name made lowercase.
-    class_id3 = models.SmallIntegerField(db_column='CLASS_ID3', blank=True, null=True)  # Field name made lowercase.
-    class_id4 = models.SmallIntegerField(db_column='CLASS_ID4', blank=True, null=True)  # Field name made lowercase.
-    class_id5 = models.SmallIntegerField(db_column='CLASS_ID5', blank=True, null=True)  # Field name made lowercase.
-    class_id6 = models.SmallIntegerField(db_column='CLASS_ID6', blank=True, null=True)  # Field name made lowercase.
+        db_table = "ScreenSet"
+        unique_together = (("school_id", "schoolyear_id", "version_id", "screenset_id", "owner"),)
+
+
+class Student(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    student_id = models.IntegerField(db_column="STUDENT_ID")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    sortid = models.IntegerField(
+        db_column="SortId", blank=True, null=True
+    )  # Field name made lowercase.
+    name = models.CharField(
+        db_column="Name", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    text = models.CharField(
+        db_column="Text", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    statisticcodes = models.CharField(
+        db_column="StatisticCodes", max_length=10, blank=True, null=True
+    )  # Field name made lowercase.
+    longname = models.CharField(
+        db_column="Longname", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    timestamp = models.IntegerField(
+        db_column="TimeStamp", blank=True, null=True
+    )  # Field name made lowercase.
+    flags = models.CharField(
+        db_column="Flags", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    blankflags = models.CharField(
+        db_column="BlankFlags", max_length=80, blank=True, null=True
+    )  # Field name made lowercase.
+    description_id = models.IntegerField(
+        db_column="DESCRIPTION_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    forecolor = models.IntegerField(
+        db_column="ForeColor", blank=True, null=True
+    )  # Field name made lowercase.
+    backcolor = models.IntegerField(
+        db_column="BackColor", blank=True, null=True
+    )  # Field name made lowercase.
+    factor = models.CharField(
+        db_column="Factor", max_length=9, blank=True, null=True
+    )  # Field name made lowercase.
+    foreigndata = models.CharField(
+        db_column="ForeignData", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    foreignkey = models.CharField(
+        db_column="ForeignKey", max_length=50, blank=True, null=True
+    )  # Field name made lowercase.
+    oldname = models.CharField(
+        db_column="OldName", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    firstname = models.CharField(
+        db_column="FirstName", max_length=150, blank=True, null=True
+    )  # Field name made lowercase.
+    studnumber = models.CharField(
+        db_column="StudNumber", max_length=20, blank=True, null=True
+    )  # Field name made lowercase.
+    email = models.CharField(
+        db_column="Email", max_length=80, blank=True, null=True
+    )  # Field name made lowercase.
+    birthdate = models.IntegerField(
+        db_column="BirthDate", blank=True, null=True
+    )  # Field name made lowercase.
+    optsign = models.CharField(
+        db_column="OptSign", max_length=1, blank=True, null=True
+    )  # Field name made lowercase.
+    class_id = models.IntegerField(
+        db_column="CLASS_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    class_id2 = models.SmallIntegerField(
+        db_column="CLASS_ID2", blank=True, null=True
+    )  # Field name made lowercase.
+    class_id3 = models.SmallIntegerField(
+        db_column="CLASS_ID3", blank=True, null=True
+    )  # Field name made lowercase.
+    class_id4 = models.SmallIntegerField(
+        db_column="CLASS_ID4", blank=True, null=True
+    )  # Field name made lowercase.
+    class_id5 = models.SmallIntegerField(
+        db_column="CLASS_ID5", blank=True, null=True
+    )  # Field name made lowercase.
+    class_id6 = models.SmallIntegerField(
+        db_column="CLASS_ID6", blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'Student'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'student_id'),)
-
-
-class Studentchoice(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    student_id = models.IntegerField(db_column='STUDENT_ID')  # Field name made lowercase.
-    term_id = models.SmallIntegerField(db_column='TERM_ID')  # Field name made lowercase.
-    number = models.SmallIntegerField(db_column='Number')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    sortid = models.IntegerField(db_column='SortId', blank=True, null=True)  # Field name made lowercase.
-    statisticcodes = models.CharField(db_column='StatisticCodes', max_length=10, blank=True,
-                                      null=True)  # Field name made lowercase.
-    flags = models.CharField(db_column='Flags', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    numberalternativegiven = models.SmallIntegerField(db_column='NumberAlternativeGiven', blank=True,
-                                                      null=True)  # Field name made lowercase.
-    alternativecourses = models.CharField(db_column='AlternativeCourses', max_length=255, blank=True,
-                                          null=True)  # Field name made lowercase.
-    standbycourses = models.CharField(db_column='StandByCourses', max_length=255, blank=True,
-                                      null=True)  # Field name made lowercase.
+        db_table = "Student"
+        unique_together = (("school_id", "schoolyear_id", "version_id", "student_id"),)
+
+
+class Studentchoice(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    student_id = models.IntegerField(db_column="STUDENT_ID")  # Field name made lowercase.
+    term_id = models.SmallIntegerField(db_column="TERM_ID")  # Field name made lowercase.
+    number = models.SmallIntegerField(db_column="Number")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    sortid = models.IntegerField(
+        db_column="SortId", blank=True, null=True
+    )  # Field name made lowercase.
+    statisticcodes = models.CharField(
+        db_column="StatisticCodes", max_length=10, blank=True, null=True
+    )  # Field name made lowercase.
+    flags = models.CharField(
+        db_column="Flags", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    numberalternativegiven = models.SmallIntegerField(
+        db_column="NumberAlternativeGiven", blank=True, null=True
+    )  # Field name made lowercase.
+    alternativecourses = models.CharField(
+        db_column="AlternativeCourses", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    standbycourses = models.CharField(
+        db_column="StandByCourses", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'StudentChoice'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'student_id', 'term_id', 'number'),)
-
-
-class Studentgroup(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    studentgroup_id = models.IntegerField(db_column='STUDENTGROUP_ID')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    name = models.CharField(db_column='Name', max_length=60, blank=True, null=True)  # Field name made lowercase.
-    statisticcodes = models.CharField(db_column='StatisticCodes', max_length=10, blank=True,
-                                      null=True)  # Field name made lowercase.
-    longname = models.CharField(db_column='Longname', max_length=100, blank=True,
-                                null=True)  # Field name made lowercase.
-    oldname = models.CharField(db_column='OldName', max_length=60, blank=True, null=True)  # Field name made lowercase.
-    subject_id = models.IntegerField(db_column='SUBJECT_ID', blank=True, null=True)  # Field name made lowercase.
-    classids = models.CharField(db_column='ClassIds', max_length=255, blank=True,
-                                null=True)  # Field name made lowercase.
+        db_table = "StudentChoice"
+        unique_together = (
+            ("school_id", "schoolyear_id", "version_id", "student_id", "term_id", "number"),
+        )
+
+
+class Studentgroup(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    studentgroup_id = models.IntegerField(db_column="STUDENTGROUP_ID")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    name = models.CharField(
+        db_column="Name", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    statisticcodes = models.CharField(
+        db_column="StatisticCodes", max_length=10, blank=True, null=True
+    )  # Field name made lowercase.
+    longname = models.CharField(
+        db_column="Longname", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    oldname = models.CharField(
+        db_column="OldName", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    subject_id = models.IntegerField(
+        db_column="SUBJECT_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    classids = models.CharField(
+        db_column="ClassIds", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'StudentGroup'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'studentgroup_id'),)
-
-
-class Subjectgroup(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    subjectgroup_id = models.IntegerField(db_column='SUBJECTGROUP_ID')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    sortid = models.IntegerField(db_column='SortId', blank=True, null=True)  # Field name made lowercase.
-    name = models.CharField(db_column='Name', max_length=60, blank=True, null=True)  # Field name made lowercase.
-    statisticcodes = models.CharField(db_column='StatisticCodes', max_length=10, blank=True,
-                                      null=True)  # Field name made lowercase.
-    longname = models.CharField(db_column='Longname', max_length=100, blank=True,
-                                null=True)  # Field name made lowercase.
-    timestamp = models.IntegerField(db_column='TimeStamp', blank=True, null=True)  # Field name made lowercase.
-    forecolor = models.IntegerField(db_column='ForeColor', blank=True, null=True)  # Field name made lowercase.
-    backcolor = models.IntegerField(db_column='BackColor', blank=True, null=True)  # Field name made lowercase.
-    subjectids = models.CharField(db_column='SubjectIds', max_length=255, blank=True,
-                                  null=True)  # Field name made lowercase.
+        db_table = "StudentGroup"
+        unique_together = (("school_id", "schoolyear_id", "version_id", "studentgroup_id"),)
+
+
+class Subjectgroup(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    subjectgroup_id = models.IntegerField(db_column="SUBJECTGROUP_ID")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    sortid = models.IntegerField(
+        db_column="SortId", blank=True, null=True
+    )  # Field name made lowercase.
+    name = models.CharField(
+        db_column="Name", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    statisticcodes = models.CharField(
+        db_column="StatisticCodes", max_length=10, blank=True, null=True
+    )  # Field name made lowercase.
+    longname = models.CharField(
+        db_column="Longname", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    timestamp = models.IntegerField(
+        db_column="TimeStamp", blank=True, null=True
+    )  # Field name made lowercase.
+    forecolor = models.IntegerField(
+        db_column="ForeColor", blank=True, null=True
+    )  # Field name made lowercase.
+    backcolor = models.IntegerField(
+        db_column="BackColor", blank=True, null=True
+    )  # Field name made lowercase.
+    subjectids = models.CharField(
+        db_column="SubjectIds", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'SubjectGroup'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'subjectgroup_id'),)
-
-
-class Subjects(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    subject_id = models.IntegerField(db_column='SUBJECT_ID')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    sortid = models.IntegerField(db_column='SortId', blank=True, null=True)  # Field name made lowercase.
-    name = models.CharField(db_column='Name', max_length=60, blank=True, null=True)  # Field name made lowercase.
-    text = models.CharField(db_column='Text', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    statisticcodes = models.CharField(db_column='StatisticCodes', max_length=10, blank=True,
-                                      null=True)  # Field name made lowercase.
-    longname = models.CharField(db_column='Longname', max_length=100, blank=True,
-                                null=True)  # Field name made lowercase.
-    timerequest = models.CharField(db_column='TimeRequest', max_length=400, blank=True,
-                                   null=True)  # Field name made lowercase.
-    timerequestminut = models.CharField(db_column='TimeRequestMinut', max_length=400, blank=True,
-                                        null=True)  # Field name made lowercase.
-    selmatrix = models.CharField(db_column='SelMatrix', max_length=100, blank=True,
-                                 null=True)  # Field name made lowercase.
-    timestamp = models.IntegerField(db_column='TimeStamp', blank=True, null=True)  # Field name made lowercase.
-    flags = models.CharField(db_column='Flags', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    blankflags = models.CharField(db_column='BlankFlags', max_length=80, blank=True,
-                                  null=True)  # Field name made lowercase.
-    room_id = models.IntegerField(db_column='ROOM_ID', blank=True, null=True)  # Field name made lowercase.
-    description_id = models.IntegerField(db_column='DESCRIPTION_ID', blank=True,
-                                         null=True)  # Field name made lowercase.
-    forecolor = models.IntegerField(db_column='ForeColor', blank=True, null=True)  # Field name made lowercase.
-    backcolor = models.IntegerField(db_column='BackColor', blank=True, null=True)  # Field name made lowercase.
-    factor = models.CharField(db_column='Factor', max_length=9, blank=True, null=True)  # Field name made lowercase.
-    foreigndata = models.CharField(db_column='ForeignData', max_length=255, blank=True,
-                                   null=True)  # Field name made lowercase.
-    foreignkey = models.CharField(db_column='ForeignKey', max_length=50, blank=True,
-                                  null=True)  # Field name made lowercase.
-    miscdata = models.CharField(db_column='MiscData', max_length=255, blank=True,
-                                null=True)  # Field name made lowercase.
-    oldname = models.CharField(db_column='OldName', max_length=60, blank=True, null=True)  # Field name made lowercase.
-    sujectgroup = models.CharField(db_column='SujectGroup', max_length=20, blank=True,
-                                   null=True)  # Field name made lowercase.
-    subjectseqcla = models.CharField(db_column='SubjectSeqCla', max_length=1, blank=True,
-                                     null=True)  # Field name made lowercase.
-    subjectseqtea = models.CharField(db_column='SubjectSeqTea', max_length=1, blank=True,
-                                     null=True)  # Field name made lowercase.
-    lssnpmmin = models.SmallIntegerField(db_column='LssnPMmin', blank=True, null=True)  # Field name made lowercase.
-    lssnpmmax = models.SmallIntegerField(db_column='LssnPMmax', blank=True, null=True)  # Field name made lowercase.
-    lssnweekmin = models.SmallIntegerField(db_column='LssnWeekMin', blank=True, null=True)  # Field name made lowercase.
-    lssnweekmax = models.SmallIntegerField(db_column='LssnWeekMax', blank=True, null=True)  # Field name made lowercase.
-    minutpmmin = models.SmallIntegerField(db_column='MinutPMmin', blank=True, null=True)  # Field name made lowercase.
-    minutpmmax = models.SmallIntegerField(db_column='MinutPMmax', blank=True, null=True)  # Field name made lowercase.
-    minutbreak1 = models.SmallIntegerField(db_column='MinutBreak1', blank=True, null=True)  # Field name made lowercase.
-    minutbreak2 = models.SmallIntegerField(db_column='MinutBreak2', blank=True, null=True)  # Field name made lowercase.
-    minutlssn = models.SmallIntegerField(db_column='MinutLssn', blank=True, null=True)  # Field name made lowercase.
-    minutlssnweekmin = models.SmallIntegerField(db_column='MinutLssnWeekMin', blank=True,
-                                                null=True)  # Field name made lowercase.
-    minutlssnweekmax = models.SmallIntegerField(db_column='MinutLssnWeekMax', blank=True,
-                                                null=True)  # Field name made lowercase.
-    departments = models.CharField(db_column='Departments', max_length=120, blank=True,
-                                   null=True)  # Field name made lowercase.
+        db_table = "SubjectGroup"
+        unique_together = (("school_id", "schoolyear_id", "version_id", "subjectgroup_id"),)
+
+
+class Subjects(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    subject_id = models.IntegerField(db_column="SUBJECT_ID")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    sortid = models.IntegerField(
+        db_column="SortId", blank=True, null=True
+    )  # Field name made lowercase.
+    name = models.CharField(
+        db_column="Name", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    text = models.CharField(
+        db_column="Text", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    statisticcodes = models.CharField(
+        db_column="StatisticCodes", max_length=10, blank=True, null=True
+    )  # Field name made lowercase.
+    longname = models.CharField(
+        db_column="Longname", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    timerequest = models.CharField(
+        db_column="TimeRequest", max_length=400, blank=True, null=True
+    )  # Field name made lowercase.
+    timerequestminut = models.CharField(
+        db_column="TimeRequestMinut", max_length=400, blank=True, null=True
+    )  # Field name made lowercase.
+    selmatrix = models.CharField(
+        db_column="SelMatrix", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    timestamp = models.IntegerField(
+        db_column="TimeStamp", blank=True, null=True
+    )  # Field name made lowercase.
+    flags = models.CharField(
+        db_column="Flags", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    blankflags = models.CharField(
+        db_column="BlankFlags", max_length=80, blank=True, null=True
+    )  # Field name made lowercase.
+    room_id = models.IntegerField(
+        db_column="ROOM_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    description_id = models.IntegerField(
+        db_column="DESCRIPTION_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    forecolor = models.IntegerField(
+        db_column="ForeColor", blank=True, null=True
+    )  # Field name made lowercase.
+    backcolor = models.IntegerField(
+        db_column="BackColor", blank=True, null=True
+    )  # Field name made lowercase.
+    factor = models.CharField(
+        db_column="Factor", max_length=9, blank=True, null=True
+    )  # Field name made lowercase.
+    foreigndata = models.CharField(
+        db_column="ForeignData", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    foreignkey = models.CharField(
+        db_column="ForeignKey", max_length=50, blank=True, null=True
+    )  # Field name made lowercase.
+    miscdata = models.CharField(
+        db_column="MiscData", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    oldname = models.CharField(
+        db_column="OldName", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    sujectgroup = models.CharField(
+        db_column="SujectGroup", max_length=20, blank=True, null=True
+    )  # Field name made lowercase.
+    subjectseqcla = models.CharField(
+        db_column="SubjectSeqCla", max_length=1, blank=True, null=True
+    )  # Field name made lowercase.
+    subjectseqtea = models.CharField(
+        db_column="SubjectSeqTea", max_length=1, blank=True, null=True
+    )  # Field name made lowercase.
+    lssnpmmin = models.SmallIntegerField(
+        db_column="LssnPMmin", blank=True, null=True
+    )  # Field name made lowercase.
+    lssnpmmax = models.SmallIntegerField(
+        db_column="LssnPMmax", blank=True, null=True
+    )  # Field name made lowercase.
+    lssnweekmin = models.SmallIntegerField(
+        db_column="LssnWeekMin", blank=True, null=True
+    )  # Field name made lowercase.
+    lssnweekmax = models.SmallIntegerField(
+        db_column="LssnWeekMax", blank=True, null=True
+    )  # Field name made lowercase.
+    minutpmmin = models.SmallIntegerField(
+        db_column="MinutPMmin", blank=True, null=True
+    )  # Field name made lowercase.
+    minutpmmax = models.SmallIntegerField(
+        db_column="MinutPMmax", blank=True, null=True
+    )  # Field name made lowercase.
+    minutbreak1 = models.SmallIntegerField(
+        db_column="MinutBreak1", blank=True, null=True
+    )  # Field name made lowercase.
+    minutbreak2 = models.SmallIntegerField(
+        db_column="MinutBreak2", blank=True, null=True
+    )  # Field name made lowercase.
+    minutlssn = models.SmallIntegerField(
+        db_column="MinutLssn", blank=True, null=True
+    )  # Field name made lowercase.
+    minutlssnweekmin = models.SmallIntegerField(
+        db_column="MinutLssnWeekMin", blank=True, null=True
+    )  # Field name made lowercase.
+    minutlssnweekmax = models.SmallIntegerField(
+        db_column="MinutLssnWeekMax", blank=True, null=True
+    )  # Field name made lowercase.
+    departments = models.CharField(
+        db_column="Departments", max_length=120, blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'Subjects'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'subject_id'),)
-
-
-class Substitution(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    substitution_id = models.IntegerField(db_column='SUBSTITUTION_ID')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    text = models.CharField(db_column='Text', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    statisticcodes = models.CharField(db_column='StatisticCodes', max_length=10, blank=True,
-                                      null=True)  # Field name made lowercase.
-    timestamp = models.IntegerField(db_column='TimeStamp', blank=True, null=True)  # Field name made lowercase.
-    flags = models.CharField(db_column='Flags', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    description_id = models.IntegerField(db_column='DESCRIPTION_ID', blank=True,
-                                         null=True)  # Field name made lowercase.
-    date = models.IntegerField(db_column='Date', blank=True, null=True)  # Field name made lowercase.
-    lesson = models.SmallIntegerField(db_column='Lesson', blank=True, null=True)  # Field name made lowercase.
-    teacher_idsubst = models.IntegerField(db_column='TEACHER_IDSubst', blank=True,
-                                          null=True)  # Field name made lowercase.
-    teacher_idlessn = models.IntegerField(db_column='TEACHER_IDLessn', blank=True,
-                                          null=True)  # Field name made lowercase.
-    subject_idsubst = models.IntegerField(db_column='SUBJECT_IDSubst', blank=True,
-                                          null=True)  # Field name made lowercase.
-    room_idsubst = models.IntegerField(db_column='ROOM_IDSubst', blank=True, null=True)  # Field name made lowercase.
-    lesson_idsubst = models.IntegerField(db_column='LESSON_IDSubst', blank=True,
-                                         null=True)  # Field name made lowercase.
-    corridor_id = models.IntegerField(db_column='CORRIDOR_ID', blank=True, null=True)  # Field name made lowercase.
-    transfer_id = models.IntegerField(db_column='TRANSFER_ID', blank=True, null=True)  # Field name made lowercase.
-    exam_id = models.IntegerField(db_column='EXAM_ID', blank=True, null=True)  # Field name made lowercase.
-    caused_by_exam_id = models.IntegerField(db_column='CAUSED_BY_EXAM_ID', blank=True,
-                                            null=True)  # Field name made lowercase.
-    coupling = models.SmallIntegerField(db_column='Coupling', blank=True, null=True)  # Field name made lowercase.
-    text2 = models.CharField(db_column='Text2', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    classids = models.CharField(db_column='ClassIds', max_length=255, blank=True,
-                                null=True)  # Field name made lowercase.
-    absenceids = models.CharField(db_column='AbsenceIds', max_length=255, blank=True,
-                                  null=True)  # Field name made lowercase.
-    prebookingnr = models.IntegerField(db_column='PrebookingNr', blank=True, null=True)  # Field name made lowercase.
-    prebookingnrtransfer = models.IntegerField(db_column='PrebookingNrTransfer', blank=True,
-                                               null=True)  # Field name made lowercase.
-    studentids = models.CharField(db_column='StudentIds', max_length=1000, blank=True,
-                                  null=True)  # Field name made lowercase.
-    substvalue = models.CharField(db_column='SubstValue', max_length=9, blank=True,
-                                  null=True)  # Field name made lowercase.
-    studentgroup = models.CharField(db_column='StudentGroup', max_length=100, blank=True,
-                                    null=True)  # Field name made lowercase.
-    roomids = models.CharField(db_column='RoomIds', max_length=255, blank=True, null=True)  # Field name made lowercase.
-    bookingtype = models.IntegerField(db_column='BookingType', blank=True, null=True)  # Field name made lowercase.
-    studentgroup_id = models.IntegerField(db_column='STUDENTGROUP_ID', blank=True,
-                                          null=True)  # Field name made lowercase.
-    breaksubstdata = models.CharField(db_column='BreakSubstData', max_length=50, blank=True,
-                                      null=True)  # Field name made lowercase.
+        db_table = "Subjects"
+        unique_together = (("school_id", "schoolyear_id", "version_id", "subject_id"),)
+
+
+class Substitution(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    substitution_id = models.IntegerField(db_column="SUBSTITUTION_ID")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    text = models.CharField(
+        db_column="Text", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    statisticcodes = models.CharField(
+        db_column="StatisticCodes", max_length=10, blank=True, null=True
+    )  # Field name made lowercase.
+    timestamp = models.IntegerField(
+        db_column="TimeStamp", blank=True, null=True
+    )  # Field name made lowercase.
+    flags = models.CharField(
+        db_column="Flags", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    description_id = models.IntegerField(
+        db_column="DESCRIPTION_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    date = models.IntegerField(
+        db_column="Date", blank=True, null=True
+    )  # Field name made lowercase.
+    lesson = models.SmallIntegerField(
+        db_column="Lesson", blank=True, null=True
+    )  # Field name made lowercase.
+    teacher_idsubst = models.IntegerField(
+        db_column="TEACHER_IDSubst", blank=True, null=True
+    )  # Field name made lowercase.
+    teacher_idlessn = models.IntegerField(
+        db_column="TEACHER_IDLessn", blank=True, null=True
+    )  # Field name made lowercase.
+    subject_idsubst = models.IntegerField(
+        db_column="SUBJECT_IDSubst", blank=True, null=True
+    )  # Field name made lowercase.
+    room_idsubst = models.IntegerField(
+        db_column="ROOM_IDSubst", blank=True, null=True
+    )  # Field name made lowercase.
+    lesson_idsubst = models.IntegerField(
+        db_column="LESSON_IDSubst", blank=True, null=True
+    )  # Field name made lowercase.
+    corridor_id = models.IntegerField(
+        db_column="CORRIDOR_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    transfer_id = models.IntegerField(
+        db_column="TRANSFER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    exam_id = models.IntegerField(
+        db_column="EXAM_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    caused_by_exam_id = models.IntegerField(
+        db_column="CAUSED_BY_EXAM_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    coupling = models.SmallIntegerField(
+        db_column="Coupling", blank=True, null=True
+    )  # Field name made lowercase.
+    text2 = models.CharField(
+        db_column="Text2", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    classids = models.CharField(
+        db_column="ClassIds", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    absenceids = models.CharField(
+        db_column="AbsenceIds", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    prebookingnr = models.IntegerField(
+        db_column="PrebookingNr", blank=True, null=True
+    )  # Field name made lowercase.
+    prebookingnrtransfer = models.IntegerField(
+        db_column="PrebookingNrTransfer", blank=True, null=True
+    )  # Field name made lowercase.
+    studentids = models.CharField(
+        db_column="StudentIds", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    substvalue = models.CharField(
+        db_column="SubstValue", max_length=9, blank=True, null=True
+    )  # Field name made lowercase.
+    studentgroup = models.CharField(
+        db_column="StudentGroup", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    roomids = models.CharField(
+        db_column="RoomIds", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    bookingtype = models.IntegerField(
+        db_column="BookingType", blank=True, null=True
+    )  # Field name made lowercase.
+    studentgroup_id = models.IntegerField(
+        db_column="STUDENTGROUP_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    breaksubstdata = models.CharField(
+        db_column="BreakSubstData", max_length=50, blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'Substitution'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'substitution_id'),)
-
-
-class Ttelementfilter(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    tt_element_filter_id = models.IntegerField(db_column='TT_ELEMENT_FILTER_ID')  # Field name made lowercase.
-    owner = models.SmallIntegerField(db_column='Owner')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    sortid = models.IntegerField(db_column='SortId', blank=True, null=True)  # Field name made lowercase.
-    name = models.CharField(db_column='Name', max_length=60, blank=True, null=True)  # Field name made lowercase.
-    elementids = models.CharField(db_column='ElementIds', max_length=1000, blank=True,
-                                  null=True)  # Field name made lowercase.
+        db_table = "Substitution"
+        unique_together = (("school_id", "schoolyear_id", "version_id", "substitution_id"),)
+
+
+class Ttelementfilter(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    tt_element_filter_id = models.IntegerField(
+        db_column="TT_ELEMENT_FILTER_ID"
+    )  # Field name made lowercase.
+    owner = models.SmallIntegerField(db_column="Owner")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    sortid = models.IntegerField(
+        db_column="SortId", blank=True, null=True
+    )  # Field name made lowercase.
+    name = models.CharField(
+        db_column="Name", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    elementids = models.CharField(
+        db_column="ElementIds", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'TTElementFilter'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'tt_element_filter_id', 'owner'),)
-
-
-class TtFormat(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    tt_format_id = models.IntegerField(db_column='TT_FORMAT_ID')  # Field name made lowercase.
-    owner = models.SmallIntegerField(db_column='Owner')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    sortid = models.IntegerField(db_column='SortId', blank=True, null=True)  # Field name made lowercase.
-    name = models.CharField(db_column='Name', max_length=60, blank=True, null=True)  # Field name made lowercase.
-    longname = models.CharField(db_column='Longname', max_length=100, blank=True,
-                                null=True)  # Field name made lowercase.
-    window = models.CharField(db_column='Window', max_length=255, blank=True, null=True)  # Field name made lowercase.
-    flags = models.CharField(db_column='Flags', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    picturedata1 = models.CharField(db_column='PictureData1', max_length=100, blank=True,
-                                    null=True)  # Field name made lowercase.
-    picturedata2 = models.CharField(db_column='PictureData2', max_length=100, blank=True,
-                                    null=True)  # Field name made lowercase.
-    font = models.CharField(db_column='Font', max_length=120, blank=True, null=True)  # Field name made lowercase.
-    printer = models.CharField(db_column='Printer', max_length=60, blank=True, null=True)  # Field name made lowercase.
-    header11 = models.SmallIntegerField(db_column='Header11', blank=True, null=True)  # Field name made lowercase.
-    headerweek = models.SmallIntegerField(db_column='HeaderWeek', blank=True, null=True)  # Field name made lowercase.
-    typeheader1 = models.SmallIntegerField(db_column='TypeHeader1', blank=True, null=True)  # Field name made lowercase.
-    typeheader2 = models.SmallIntegerField(db_column='TypeHeader2', blank=True, null=True)  # Field name made lowercase.
-    format = models.SmallIntegerField(db_column='Format', blank=True, null=True)  # Field name made lowercase.
-    fixedflag = models.SmallIntegerField(db_column='FixedFlag', blank=True, null=True)  # Field name made lowercase.
-    nocol = models.SmallIntegerField(db_column='NoCol', blank=True, null=True)  # Field name made lowercase.
-    col1 = models.SmallIntegerField(db_column='Col1', blank=True, null=True)  # Field name made lowercase.
-    colact = models.SmallIntegerField(db_column='ColAct', blank=True, null=True)  # Field name made lowercase.
-    nocol11 = models.SmallIntegerField(db_column='NoCol11', blank=True, null=True)  # Field name made lowercase.
-    nocol20_30 = models.SmallIntegerField(db_column='NoCol20_30', blank=True, null=True)  # Field name made lowercase.
-    nocolftn = models.SmallIntegerField(db_column='NoColFtn', blank=True, null=True)  # Field name made lowercase.
-    nocolftn11_30 = models.SmallIntegerField(db_column='NoColFtn11_30', blank=True,
-                                             null=True)  # Field name made lowercase.
-    cola = models.SmallIntegerField(db_column='ColA', blank=True, null=True)  # Field name made lowercase.
-    norow = models.SmallIntegerField(db_column='NoRow', blank=True, null=True)  # Field name made lowercase.
-    row1 = models.SmallIntegerField(db_column='Row1', blank=True, null=True)  # Field name made lowercase.
-    rowact = models.SmallIntegerField(db_column='RowAct', blank=True, null=True)  # Field name made lowercase.
-    norow11 = models.SmallIntegerField(db_column='NoRow11', blank=True, null=True)  # Field name made lowercase.
-    norow20_30 = models.SmallIntegerField(db_column='NoRow20_30', blank=True, null=True)  # Field name made lowercase.
-    norowtitle = models.SmallIntegerField(db_column='NoRowTitle', blank=True, null=True)  # Field name made lowercase.
-    rowa = models.SmallIntegerField(db_column='RowA', blank=True, null=True)  # Field name made lowercase.
-    typetitle = models.SmallIntegerField(db_column='TypeTitle', blank=True, null=True)  # Field name made lowercase.
-    intheadingrow11_30 = models.SmallIntegerField(db_column='IntHeadingRow11_30', blank=True,
-                                                  null=True)  # Field name made lowercase.
-    elperpage40 = models.SmallIntegerField(db_column='ElPerPage40', blank=True, null=True)  # Field name made lowercase.
-    intheadingcol11_30 = models.SmallIntegerField(db_column='IntHeadingCol11_30', blank=True,
-                                                  null=True)  # Field name made lowercase.
-    tt_version = models.SmallIntegerField(db_column='TT_Version', blank=True, null=True)  # Field name made lowercase.
-    nodayspersheet = models.SmallIntegerField(db_column='NoDaysPerSheet', blank=True,
-                                              null=True)  # Field name made lowercase.
-    layoutheader = models.SmallIntegerField(db_column='LayoutHeader', blank=True,
-                                            null=True)  # Field name made lowercase.
-    layoutlessn = models.SmallIntegerField(db_column='LayoutLessn', blank=True, null=True)  # Field name made lowercase.
-    layoutlessn1 = models.SmallIntegerField(db_column='LayoutLessn1', blank=True,
-                                            null=True)  # Field name made lowercase.
-    position1 = models.SmallIntegerField(db_column='Position1', blank=True, null=True)  # Field name made lowercase.
-    position2 = models.SmallIntegerField(db_column='Position2', blank=True, null=True)  # Field name made lowercase.
-    position3 = models.SmallIntegerField(db_column='Position3', blank=True, null=True)  # Field name made lowercase.
-    nottperpage = models.SmallIntegerField(db_column='NoTTPerPage', blank=True, null=True)  # Field name made lowercase.
-    nottperpage1 = models.SmallIntegerField(db_column='NoTTPerPage1', blank=True,
-                                            null=True)  # Field name made lowercase.
-    nottperpage2 = models.SmallIntegerField(db_column='NoTTPerPage2', blank=True,
-                                            null=True)  # Field name made lowercase.
-    periodfrom = models.SmallIntegerField(db_column='PeriodFrom', blank=True, null=True)  # Field name made lowercase.
-    periodto = models.SmallIntegerField(db_column='PeriodTo', blank=True, null=True)  # Field name made lowercase.
-    weekperiodfrom = models.SmallIntegerField(db_column='WeekPeriodFrom', blank=True,
-                                              null=True)  # Field name made lowercase.
-    weekperiodto = models.SmallIntegerField(db_column='WeekPeriodTo', blank=True,
-                                            null=True)  # Field name made lowercase.
-    nonamesperline = models.SmallIntegerField(db_column='NoNamesPerLine', blank=True,
-                                              null=True)  # Field name made lowercase.
-    notimesperline = models.SmallIntegerField(db_column='NoTimesPerLine', blank=True,
-                                              null=True)  # Field name made lowercase.
-    minutdayfrom = models.SmallIntegerField(db_column='MinutDayFrom', blank=True,
-                                            null=True)  # Field name made lowercase.
-    minutdayto = models.SmallIntegerField(db_column='MinutDayTo', blank=True, null=True)  # Field name made lowercase.
-    minutperiodfrom = models.SmallIntegerField(db_column='MinutPeriodFrom', blank=True,
-                                               null=True)  # Field name made lowercase.
-    minutperiodto = models.SmallIntegerField(db_column='MinutPeriodTo', blank=True,
-                                             null=True)  # Field name made lowercase.
-    minutweekperiodfrom = models.SmallIntegerField(db_column='MinutWeekPeriodFrom', blank=True,
-                                                   null=True)  # Field name made lowercase.
-    minutweekperiodto = models.SmallIntegerField(db_column='MinutWeekPeriodTo', blank=True,
-                                                 null=True)  # Field name made lowercase.
-    input_format_id = models.IntegerField(db_column='INPUT_FORMAT_ID', blank=True,
-                                          null=True)  # Field name made lowercase.
-    sizeleftx = models.SmallIntegerField(db_column='SizeLeftX', blank=True, null=True)  # Field name made lowercase.
-    sizelefty = models.SmallIntegerField(db_column='SizeLeftY', blank=True, null=True)  # Field name made lowercase.
-    sizetopx = models.SmallIntegerField(db_column='SizeTopX', blank=True, null=True)  # Field name made lowercase.
-    sizetopy = models.SmallIntegerField(db_column='SizeTopY', blank=True, null=True)  # Field name made lowercase.
-    htmltitlewidth = models.SmallIntegerField(db_column='HtmlTitleWidth', blank=True,
-                                              null=True)  # Field name made lowercase.
-    htmlcolheight = models.SmallIntegerField(db_column='HtmlColHeight', blank=True,
-                                             null=True)  # Field name made lowercase.
-    htmlcolwidth = models.SmallIntegerField(db_column='HtmlColWidth', blank=True,
-                                            null=True)  # Field name made lowercase.
-    htmltitlealign = models.SmallIntegerField(db_column='HtmlTitleAlign', blank=True,
-                                              null=True)  # Field name made lowercase.
-    htmlcolalign = models.SmallIntegerField(db_column='HtmlColAlign', blank=True,
-                                            null=True)  # Field name made lowercase.
-    htmlfieldwidth = models.SmallIntegerField(db_column='HtmlFieldWidth', blank=True,
-                                              null=True)  # Field name made lowercase.
-    relativefont1 = models.CharField(db_column='RelativeFont1', max_length=60, blank=True,
-                                     null=True)  # Field name made lowercase.
-    relativefont2 = models.CharField(db_column='RelativeFont2', max_length=60, blank=True,
-                                     null=True)  # Field name made lowercase.
-    relativefont3 = models.CharField(db_column='RelativeFont3', max_length=60, blank=True,
-                                     null=True)  # Field name made lowercase.
-    relativefont4 = models.CharField(db_column='RelativeFont4', max_length=60, blank=True,
-                                     null=True)  # Field name made lowercase.
-    relativefont5 = models.CharField(db_column='RelativeFont5', max_length=60, blank=True,
-                                     null=True)  # Field name made lowercase.
-    relativefont6 = models.CharField(db_column='RelativeFont6', max_length=60, blank=True,
-                                     null=True)  # Field name made lowercase.
-    relativefont7 = models.CharField(db_column='RelativeFont7', max_length=60, blank=True,
-                                     null=True)  # Field name made lowercase.
-    relativefont8 = models.CharField(db_column='RelativeFont8', max_length=60, blank=True,
-                                     null=True)  # Field name made lowercase.
-    relativefont9 = models.CharField(db_column='RelativeFont9', max_length=60, blank=True,
-                                     null=True)  # Field name made lowercase.
-    relativefont10 = models.CharField(db_column='RelativeFont10', max_length=60, blank=True,
-                                      null=True)  # Field name made lowercase.
-    relativefont11 = models.CharField(db_column='RelativeFont11', max_length=60, blank=True,
-                                      null=True)  # Field name made lowercase.
-    relativefont12 = models.CharField(db_column='RelativeFont12', max_length=60, blank=True,
-                                      null=True)  # Field name made lowercase.
-    relativefont13 = models.CharField(db_column='RelativeFont13', max_length=60, blank=True,
-                                      null=True)  # Field name made lowercase.
-    relativefont14 = models.CharField(db_column='RelativeFont14', max_length=60, blank=True,
-                                      null=True)  # Field name made lowercase.
-    field1 = models.CharField(db_column='Field1', max_length=1000, blank=True, null=True)  # Field name made lowercase.
-    field2 = models.CharField(db_column='Field2', max_length=1000, blank=True, null=True)  # Field name made lowercase.
-    field3 = models.CharField(db_column='Field3', max_length=1000, blank=True, null=True)  # Field name made lowercase.
-    field4 = models.CharField(db_column='Field4', max_length=1000, blank=True, null=True)  # Field name made lowercase.
-    field5 = models.CharField(db_column='Field5', max_length=1000, blank=True, null=True)  # Field name made lowercase.
-    field6 = models.CharField(db_column='Field6', max_length=1000, blank=True, null=True)  # Field name made lowercase.
-    field7 = models.CharField(db_column='Field7', max_length=1000, blank=True, null=True)  # Field name made lowercase.
-    field8 = models.CharField(db_column='Field8', max_length=1000, blank=True, null=True)  # Field name made lowercase.
-    field9 = models.CharField(db_column='Field9', max_length=1000, blank=True, null=True)  # Field name made lowercase.
-    field10 = models.CharField(db_column='Field10', max_length=1000, blank=True,
-                               null=True)  # Field name made lowercase.
-    linesforheader = models.CharField(db_column='LinesForHeader', max_length=200, blank=True,
-                                      null=True)  # Field name made lowercase.
-    schoolweeks = models.CharField(db_column='SchoolWeeks', max_length=255, blank=True,
-                                   null=True)  # Field name made lowercase.
-    flags1 = models.CharField(db_column='Flags1', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    noweeks = models.SmallIntegerField(db_column='NoWeeks', blank=True, null=True)  # Field name made lowercase.
-    nott = models.IntegerField(db_column='NoTT', blank=True, null=True)  # Field name made lowercase.
-    showlines = models.CharField(db_column='ShowLines', max_length=255, blank=True,
-                                 null=True)  # Field name made lowercase.
-    doublelines = models.CharField(db_column='DoubleLines', max_length=255, blank=True,
-                                   null=True)  # Field name made lowercase.
-    thicklines = models.CharField(db_column='ThickLines', max_length=255, blank=True,
-                                  null=True)  # Field name made lowercase.
-    additionalheader = models.CharField(db_column='AdditionalHeader', max_length=255, blank=True,
-                                        null=True)  # Field name made lowercase.
-    positionclateasub = models.SmallIntegerField(db_column='PositionClaTeaSub', blank=True,
-                                                 null=True)  # Field name made lowercase.
-    colclateasub = models.SmallIntegerField(db_column='ColClaTeaSub', blank=True,
-                                            null=True)  # Field name made lowercase.
-    colclateasub_subperline = models.SmallIntegerField(db_column='ColClaTeaSub_SubPerLine', blank=True,
-                                                       null=True)  # Field name made lowercase.
-    positionadditionaltt = models.SmallIntegerField(db_column='PositionAdditionalTT', blank=True,
-                                                    null=True)  # Field name made lowercase.
-    nameadditionaltt = models.CharField(db_column='NameAdditionalTT', max_length=60, blank=True,
-                                        null=True)  # Field name made lowercase.
-    flags2 = models.CharField(db_column='Flags2', max_length=100, blank=True, null=True)  # Field name made lowercase.
+        db_table = "TTElementFilter"
+        unique_together = (
+            ("school_id", "schoolyear_id", "version_id", "tt_element_filter_id", "owner"),
+        )
+
+
+class TtFormat(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    tt_format_id = models.IntegerField(db_column="TT_FORMAT_ID")  # Field name made lowercase.
+    owner = models.SmallIntegerField(db_column="Owner")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    sortid = models.IntegerField(
+        db_column="SortId", blank=True, null=True
+    )  # Field name made lowercase.
+    name = models.CharField(
+        db_column="Name", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    longname = models.CharField(
+        db_column="Longname", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    window = models.CharField(
+        db_column="Window", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    flags = models.CharField(
+        db_column="Flags", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    picturedata1 = models.CharField(
+        db_column="PictureData1", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    picturedata2 = models.CharField(
+        db_column="PictureData2", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    font = models.CharField(
+        db_column="Font", max_length=120, blank=True, null=True
+    )  # Field name made lowercase.
+    printer = models.CharField(
+        db_column="Printer", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    header11 = models.SmallIntegerField(
+        db_column="Header11", blank=True, null=True
+    )  # Field name made lowercase.
+    headerweek = models.SmallIntegerField(
+        db_column="HeaderWeek", blank=True, null=True
+    )  # Field name made lowercase.
+    typeheader1 = models.SmallIntegerField(
+        db_column="TypeHeader1", blank=True, null=True
+    )  # Field name made lowercase.
+    typeheader2 = models.SmallIntegerField(
+        db_column="TypeHeader2", blank=True, null=True
+    )  # Field name made lowercase.
+    format = models.SmallIntegerField(
+        db_column="Format", blank=True, null=True
+    )  # Field name made lowercase.
+    fixedflag = models.SmallIntegerField(
+        db_column="FixedFlag", blank=True, null=True
+    )  # Field name made lowercase.
+    nocol = models.SmallIntegerField(
+        db_column="NoCol", blank=True, null=True
+    )  # Field name made lowercase.
+    col1 = models.SmallIntegerField(
+        db_column="Col1", blank=True, null=True
+    )  # Field name made lowercase.
+    colact = models.SmallIntegerField(
+        db_column="ColAct", blank=True, null=True
+    )  # Field name made lowercase.
+    nocol11 = models.SmallIntegerField(
+        db_column="NoCol11", blank=True, null=True
+    )  # Field name made lowercase.
+    nocol20_30 = models.SmallIntegerField(
+        db_column="NoCol20_30", blank=True, null=True
+    )  # Field name made lowercase.
+    nocolftn = models.SmallIntegerField(
+        db_column="NoColFtn", blank=True, null=True
+    )  # Field name made lowercase.
+    nocolftn11_30 = models.SmallIntegerField(
+        db_column="NoColFtn11_30", blank=True, null=True
+    )  # Field name made lowercase.
+    cola = models.SmallIntegerField(
+        db_column="ColA", blank=True, null=True
+    )  # Field name made lowercase.
+    norow = models.SmallIntegerField(
+        db_column="NoRow", blank=True, null=True
+    )  # Field name made lowercase.
+    row1 = models.SmallIntegerField(
+        db_column="Row1", blank=True, null=True
+    )  # Field name made lowercase.
+    rowact = models.SmallIntegerField(
+        db_column="RowAct", blank=True, null=True
+    )  # Field name made lowercase.
+    norow11 = models.SmallIntegerField(
+        db_column="NoRow11", blank=True, null=True
+    )  # Field name made lowercase.
+    norow20_30 = models.SmallIntegerField(
+        db_column="NoRow20_30", blank=True, null=True
+    )  # Field name made lowercase.
+    norowtitle = models.SmallIntegerField(
+        db_column="NoRowTitle", blank=True, null=True
+    )  # Field name made lowercase.
+    rowa = models.SmallIntegerField(
+        db_column="RowA", blank=True, null=True
+    )  # Field name made lowercase.
+    typetitle = models.SmallIntegerField(
+        db_column="TypeTitle", blank=True, null=True
+    )  # Field name made lowercase.
+    intheadingrow11_30 = models.SmallIntegerField(
+        db_column="IntHeadingRow11_30", blank=True, null=True
+    )  # Field name made lowercase.
+    elperpage40 = models.SmallIntegerField(
+        db_column="ElPerPage40", blank=True, null=True
+    )  # Field name made lowercase.
+    intheadingcol11_30 = models.SmallIntegerField(
+        db_column="IntHeadingCol11_30", blank=True, null=True
+    )  # Field name made lowercase.
+    tt_version = models.SmallIntegerField(
+        db_column="TT_Version", blank=True, null=True
+    )  # Field name made lowercase.
+    nodayspersheet = models.SmallIntegerField(
+        db_column="NoDaysPerSheet", blank=True, null=True
+    )  # Field name made lowercase.
+    layoutheader = models.SmallIntegerField(
+        db_column="LayoutHeader", blank=True, null=True
+    )  # Field name made lowercase.
+    layoutlessn = models.SmallIntegerField(
+        db_column="LayoutLessn", blank=True, null=True
+    )  # Field name made lowercase.
+    layoutlessn1 = models.SmallIntegerField(
+        db_column="LayoutLessn1", blank=True, null=True
+    )  # Field name made lowercase.
+    position1 = models.SmallIntegerField(
+        db_column="Position1", blank=True, null=True
+    )  # Field name made lowercase.
+    position2 = models.SmallIntegerField(
+        db_column="Position2", blank=True, null=True
+    )  # Field name made lowercase.
+    position3 = models.SmallIntegerField(
+        db_column="Position3", blank=True, null=True
+    )  # Field name made lowercase.
+    nottperpage = models.SmallIntegerField(
+        db_column="NoTTPerPage", blank=True, null=True
+    )  # Field name made lowercase.
+    nottperpage1 = models.SmallIntegerField(
+        db_column="NoTTPerPage1", blank=True, null=True
+    )  # Field name made lowercase.
+    nottperpage2 = models.SmallIntegerField(
+        db_column="NoTTPerPage2", blank=True, null=True
+    )  # Field name made lowercase.
+    periodfrom = models.SmallIntegerField(
+        db_column="PeriodFrom", blank=True, null=True
+    )  # Field name made lowercase.
+    periodto = models.SmallIntegerField(
+        db_column="PeriodTo", blank=True, null=True
+    )  # Field name made lowercase.
+    weekperiodfrom = models.SmallIntegerField(
+        db_column="WeekPeriodFrom", blank=True, null=True
+    )  # Field name made lowercase.
+    weekperiodto = models.SmallIntegerField(
+        db_column="WeekPeriodTo", blank=True, null=True
+    )  # Field name made lowercase.
+    nonamesperline = models.SmallIntegerField(
+        db_column="NoNamesPerLine", blank=True, null=True
+    )  # Field name made lowercase.
+    notimesperline = models.SmallIntegerField(
+        db_column="NoTimesPerLine", blank=True, null=True
+    )  # Field name made lowercase.
+    minutdayfrom = models.SmallIntegerField(
+        db_column="MinutDayFrom", blank=True, null=True
+    )  # Field name made lowercase.
+    minutdayto = models.SmallIntegerField(
+        db_column="MinutDayTo", blank=True, null=True
+    )  # Field name made lowercase.
+    minutperiodfrom = models.SmallIntegerField(
+        db_column="MinutPeriodFrom", blank=True, null=True
+    )  # Field name made lowercase.
+    minutperiodto = models.SmallIntegerField(
+        db_column="MinutPeriodTo", blank=True, null=True
+    )  # Field name made lowercase.
+    minutweekperiodfrom = models.SmallIntegerField(
+        db_column="MinutWeekPeriodFrom", blank=True, null=True
+    )  # Field name made lowercase.
+    minutweekperiodto = models.SmallIntegerField(
+        db_column="MinutWeekPeriodTo", blank=True, null=True
+    )  # Field name made lowercase.
+    input_format_id = models.IntegerField(
+        db_column="INPUT_FORMAT_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    sizeleftx = models.SmallIntegerField(
+        db_column="SizeLeftX", blank=True, null=True
+    )  # Field name made lowercase.
+    sizelefty = models.SmallIntegerField(
+        db_column="SizeLeftY", blank=True, null=True
+    )  # Field name made lowercase.
+    sizetopx = models.SmallIntegerField(
+        db_column="SizeTopX", blank=True, null=True
+    )  # Field name made lowercase.
+    sizetopy = models.SmallIntegerField(
+        db_column="SizeTopY", blank=True, null=True
+    )  # Field name made lowercase.
+    htmltitlewidth = models.SmallIntegerField(
+        db_column="HtmlTitleWidth", blank=True, null=True
+    )  # Field name made lowercase.
+    htmlcolheight = models.SmallIntegerField(
+        db_column="HtmlColHeight", blank=True, null=True
+    )  # Field name made lowercase.
+    htmlcolwidth = models.SmallIntegerField(
+        db_column="HtmlColWidth", blank=True, null=True
+    )  # Field name made lowercase.
+    htmltitlealign = models.SmallIntegerField(
+        db_column="HtmlTitleAlign", blank=True, null=True
+    )  # Field name made lowercase.
+    htmlcolalign = models.SmallIntegerField(
+        db_column="HtmlColAlign", blank=True, null=True
+    )  # Field name made lowercase.
+    htmlfieldwidth = models.SmallIntegerField(
+        db_column="HtmlFieldWidth", blank=True, null=True
+    )  # Field name made lowercase.
+    relativefont1 = models.CharField(
+        db_column="RelativeFont1", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    relativefont2 = models.CharField(
+        db_column="RelativeFont2", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    relativefont3 = models.CharField(
+        db_column="RelativeFont3", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    relativefont4 = models.CharField(
+        db_column="RelativeFont4", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    relativefont5 = models.CharField(
+        db_column="RelativeFont5", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    relativefont6 = models.CharField(
+        db_column="RelativeFont6", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    relativefont7 = models.CharField(
+        db_column="RelativeFont7", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    relativefont8 = models.CharField(
+        db_column="RelativeFont8", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    relativefont9 = models.CharField(
+        db_column="RelativeFont9", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    relativefont10 = models.CharField(
+        db_column="RelativeFont10", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    relativefont11 = models.CharField(
+        db_column="RelativeFont11", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    relativefont12 = models.CharField(
+        db_column="RelativeFont12", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    relativefont13 = models.CharField(
+        db_column="RelativeFont13", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    relativefont14 = models.CharField(
+        db_column="RelativeFont14", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    field1 = models.CharField(
+        db_column="Field1", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    field2 = models.CharField(
+        db_column="Field2", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    field3 = models.CharField(
+        db_column="Field3", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    field4 = models.CharField(
+        db_column="Field4", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    field5 = models.CharField(
+        db_column="Field5", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    field6 = models.CharField(
+        db_column="Field6", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    field7 = models.CharField(
+        db_column="Field7", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    field8 = models.CharField(
+        db_column="Field8", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    field9 = models.CharField(
+        db_column="Field9", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    field10 = models.CharField(
+        db_column="Field10", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    linesforheader = models.CharField(
+        db_column="LinesForHeader", max_length=200, blank=True, null=True
+    )  # Field name made lowercase.
+    schoolweeks = models.CharField(
+        db_column="SchoolWeeks", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    flags1 = models.CharField(
+        db_column="Flags1", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    noweeks = models.SmallIntegerField(
+        db_column="NoWeeks", blank=True, null=True
+    )  # Field name made lowercase.
+    nott = models.IntegerField(
+        db_column="NoTT", blank=True, null=True
+    )  # Field name made lowercase.
+    showlines = models.CharField(
+        db_column="ShowLines", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    doublelines = models.CharField(
+        db_column="DoubleLines", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    thicklines = models.CharField(
+        db_column="ThickLines", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    additionalheader = models.CharField(
+        db_column="AdditionalHeader", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    positionclateasub = models.SmallIntegerField(
+        db_column="PositionClaTeaSub", blank=True, null=True
+    )  # Field name made lowercase.
+    colclateasub = models.SmallIntegerField(
+        db_column="ColClaTeaSub", blank=True, null=True
+    )  # Field name made lowercase.
+    colclateasub_subperline = models.SmallIntegerField(
+        db_column="ColClaTeaSub_SubPerLine", blank=True, null=True
+    )  # Field name made lowercase.
+    positionadditionaltt = models.SmallIntegerField(
+        db_column="PositionAdditionalTT", blank=True, null=True
+    )  # Field name made lowercase.
+    nameadditionaltt = models.CharField(
+        db_column="NameAdditionalTT", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    flags2 = models.CharField(
+        db_column="Flags2", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'TT_Format'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'tt_format_id', 'owner'),)
-
-
-class Tableinfo(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    type = models.SmallIntegerField(db_column='Type')  # Field name made lowercase.
-    id = models.IntegerField(db_column='ID')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    date = models.IntegerField(db_column='Date', blank=True, null=True)  # Field name made lowercase.
-    time = models.SmallIntegerField(db_column='Time', blank=True, null=True)  # Field name made lowercase.
-    idmax = models.IntegerField(db_column='IdMax', blank=True, null=True)  # Field name made lowercase.
-    sortidmax = models.IntegerField(db_column='SortIdMax', blank=True, null=True)  # Field name made lowercase.
-    lessonnrmax = models.IntegerField(db_column='LessonNrMax', blank=True, null=True)  # Field name made lowercase.
+        db_table = "TT_Format"
+        unique_together = (("school_id", "schoolyear_id", "version_id", "tt_format_id", "owner"),)
+
+
+class Tableinfo(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    type = models.SmallIntegerField(db_column="Type")  # Field name made lowercase.
+    id = models.IntegerField(db_column="ID")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    date = models.IntegerField(
+        db_column="Date", blank=True, null=True
+    )  # Field name made lowercase.
+    time = models.SmallIntegerField(
+        db_column="Time", blank=True, null=True
+    )  # Field name made lowercase.
+    idmax = models.IntegerField(
+        db_column="IdMax", blank=True, null=True
+    )  # Field name made lowercase.
+    sortidmax = models.IntegerField(
+        db_column="SortIdMax", blank=True, null=True
+    )  # Field name made lowercase.
+    lessonnrmax = models.IntegerField(
+        db_column="LessonNrMax", blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'TableInfo'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'type', 'id'),)
-
-
-class Teacher(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    teacher_id = models.IntegerField(db_column='TEACHER_ID')  # Field name made lowercase.
-    term_id = models.SmallIntegerField(db_column='TERM_ID')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    sortid = models.IntegerField(db_column='SortId', blank=True, null=True)  # Field name made lowercase.
-    name = models.CharField(db_column='Name', max_length=60, blank=True, null=True)  # Field name made lowercase.
-    text = models.CharField(db_column='Text', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    statisticcodes = models.CharField(db_column='StatisticCodes', max_length=10, blank=True,
-                                      null=True)  # Field name made lowercase.
-    longname = models.CharField(db_column='Longname', max_length=100, blank=True,
-                                null=True)  # Field name made lowercase.
-    timerequest = models.CharField(db_column='TimeRequest', max_length=400, blank=True,
-                                   null=True)  # Field name made lowercase.
-    timerequestminut = models.CharField(db_column='TimeRequestMinut', max_length=400, blank=True,
-                                        null=True)  # Field name made lowercase.
-    dayrequest = models.CharField(db_column='DayRequest', max_length=400, blank=True,
-                                  null=True)  # Field name made lowercase.
-    timerequestunspecified = models.CharField(db_column='TimeRequestUnspecified', max_length=400, blank=True,
-                                              null=True)  # Field name made lowercase.
-    address = models.CharField(db_column='Address', max_length=400, blank=True, null=True)  # Field name made lowercase.
-    selmatrix = models.CharField(db_column='SelMatrix', max_length=100, blank=True,
-                                 null=True)  # Field name made lowercase.
-    timestamp = models.IntegerField(db_column='TimeStamp', blank=True, null=True)  # Field name made lowercase.
-    flags = models.CharField(db_column='Flags', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    blankflags = models.CharField(db_column='BlankFlags', max_length=80, blank=True,
-                                  null=True)  # Field name made lowercase.
-    room_id = models.IntegerField(db_column='ROOM_ID', blank=True, null=True)  # Field name made lowercase.
-    description_id = models.IntegerField(db_column='DESCRIPTION_ID', blank=True,
-                                         null=True)  # Field name made lowercase.
-    forecolor = models.IntegerField(db_column='ForeColor', blank=True, null=True)  # Field name made lowercase.
-    backcolor = models.IntegerField(db_column='BackColor', blank=True, null=True)  # Field name made lowercase.
-    factor = models.CharField(db_column='Factor', max_length=9, blank=True, null=True)  # Field name made lowercase.
-    foreigndata = models.CharField(db_column='ForeignData', max_length=255, blank=True,
-                                   null=True)  # Field name made lowercase.
-    foreignkey = models.CharField(db_column='ForeignKey', max_length=50, blank=True,
-                                  null=True)  # Field name made lowercase.
-    miscdata = models.CharField(db_column='MiscData', max_length=255, blank=True,
-                                null=True)  # Field name made lowercase.
-    oldname = models.CharField(db_column='OldName', max_length=60, blank=True, null=True)  # Field name made lowercase.
-    minutbreakmin = models.SmallIntegerField(db_column='MinutBreakMin', blank=True,
-                                             null=True)  # Field name made lowercase.
-    lunchbreakmin = models.SmallIntegerField(db_column='LunchBreakMin', blank=True,
-                                             null=True)  # Field name made lowercase.
-    lunchbreakmax = models.SmallIntegerField(db_column='LunchBreakMax', blank=True,
-                                             null=True)  # Field name made lowercase.
-    lssnperdaymin = models.SmallIntegerField(db_column='LssnPerDayMin', blank=True,
-                                             null=True)  # Field name made lowercase.
-    lssnperdaymax = models.SmallIntegerField(db_column='LssnPerDayMax', blank=True,
-                                             null=True)  # Field name made lowercase.
-    minutminutesperdaymin = models.SmallIntegerField(db_column='MinutMinutesPerDayMin', blank=True,
-                                                     null=True)  # Field name made lowercase.
-    minutminutesperdaymax = models.SmallIntegerField(db_column='MinutMinutesPerDayMax', blank=True,
-                                                     null=True)  # Field name made lowercase.
-    minutlunchbreakperdaymin = models.SmallIntegerField(db_column='MinutLunchBreakPerDayMin', blank=True,
-                                                        null=True)  # Field name made lowercase.
-    minutlunchbreakperdaymax = models.SmallIntegerField(db_column='MinutLunchBreakPerDayMax', blank=True,
-                                                        null=True)  # Field name made lowercase.
-    blocksnodays = models.SmallIntegerField(db_column='BlocksNoDays', blank=True,
-                                            null=True)  # Field name made lowercase.
-    blockslssnfrom = models.SmallIntegerField(db_column='BlocksLssnFrom', blank=True,
-                                              null=True)  # Field name made lowercase.
-    blockslssnto = models.SmallIntegerField(db_column='BlocksLssnTo', blank=True,
-                                            null=True)  # Field name made lowercase.
-    weekquotamin = models.SmallIntegerField(db_column='WeekQuotaMin', blank=True,
-                                            null=True)  # Field name made lowercase.
-    weekquotamax = models.SmallIntegerField(db_column='WeekQuotaMax', blank=True,
-                                            null=True)  # Field name made lowercase.
-    weekquotaideal = models.SmallIntegerField(db_column='WeekQuotaIdeal', blank=True,
-                                              null=True)  # Field name made lowercase.
-    pnumber = models.CharField(db_column='PNumber', max_length=20, blank=True, null=True)  # Field name made lowercase.
-    status = models.CharField(db_column='Status', max_length=10, blank=True, null=True)  # Field name made lowercase.
-    firstname = models.CharField(db_column='FirstName', max_length=150, blank=True,
-                                 null=True)  # Field name made lowercase.
-    title = models.CharField(db_column='Title', max_length=20, blank=True, null=True)  # Field name made lowercase.
-    ownschool = models.CharField(db_column='OwnSchool', max_length=20, blank=True,
-                                 null=True)  # Field name made lowercase.
-    ignorereason = models.CharField(db_column='IgnoreReason', max_length=20, blank=True,
-                                    null=True)  # Field name made lowercase.
-    department_id1 = models.SmallIntegerField(db_column='DEPARTMENT_ID1', blank=True,
-                                              null=True)  # Field name made lowercase.
-    department_id2 = models.SmallIntegerField(db_column='DEPARTMENT_ID2', blank=True,
-                                              null=True)  # Field name made lowercase.
-    department_id3 = models.SmallIntegerField(db_column='DEPARTMENT_ID3', blank=True,
-                                              null=True)  # Field name made lowercase.
-    department_id4 = models.SmallIntegerField(db_column='DEPARTMENT_ID4', blank=True,
-                                              null=True)  # Field name made lowercase.
-    department_id5 = models.SmallIntegerField(db_column='DEPARTMENT_ID5', blank=True,
-                                              null=True)  # Field name made lowercase.
-    email = models.CharField(db_column='Email', max_length=80, blank=True, null=True)  # Field name made lowercase.
-    tel = models.CharField(db_column='Tel', max_length=20, blank=True, null=True)  # Field name made lowercase.
-    handy = models.CharField(db_column='Handy', max_length=20, blank=True, null=True)  # Field name made lowercase.
-    externid = models.CharField(db_column='ExternId', max_length=20, blank=True,
-                                null=True)  # Field name made lowercase.
-    nolessnsucc = models.SmallIntegerField(db_column='NoLessnSucc', blank=True, null=True)  # Field name made lowercase.
-    cavitymin = models.SmallIntegerField(db_column='CavityMin', blank=True, null=True)  # Field name made lowercase.
-    cavitymax = models.SmallIntegerField(db_column='CavityMax', blank=True, null=True)  # Field name made lowercase.
-    availmax = models.SmallIntegerField(db_column='AvailMax', blank=True, null=True)  # Field name made lowercase.
-    daybreak = models.SmallIntegerField(db_column='DayBreak', blank=True, null=True)  # Field name made lowercase.
-    substblock = models.SmallIntegerField(db_column='SubstBlock', blank=True, null=True)  # Field name made lowercase.
-    minutbreaksweekmin = models.SmallIntegerField(db_column='MinutBreaksWeekMin', blank=True,
-                                                  null=True)  # Field name made lowercase.
-    minutbreaksweekmax = models.SmallIntegerField(db_column='MinutBreaksWeekMax', blank=True,
-                                                  null=True)  # Field name made lowercase.
-    minutsucessmax = models.SmallIntegerField(db_column='MinutSucessMax', blank=True,
-                                              null=True)  # Field name made lowercase.
-    pointbreaksupmax = models.SmallIntegerField(db_column='PointBreaksupMax', blank=True,
-                                                null=True)  # Field name made lowercase.
-    birthdate = models.IntegerField(db_column='BirthDate', blank=True, null=True)  # Field name made lowercase.
-    arrivaldate = models.IntegerField(db_column='ArrivalDate', blank=True, null=True)  # Field name made lowercase.
-    departuredate = models.IntegerField(db_column='DepartureDate', blank=True, null=True)  # Field name made lowercase.
-    plannedweek = models.IntegerField(db_column='PlannedWeek', blank=True, null=True)  # Field name made lowercase.
-    plannedweekmax = models.IntegerField(db_column='PlannedWeekMax', blank=True,
-                                         null=True)  # Field name made lowercase.
-    plannedyear = models.IntegerField(db_column='PlannedYear', blank=True, null=True)  # Field name made lowercase.
-    plannedyearmax = models.IntegerField(db_column='PlannedYearMax', blank=True,
-                                         null=True)  # Field name made lowercase.
-    salarypehour = models.IntegerField(db_column='SalaryPeHour', blank=True, null=True)  # Field name made lowercase.
-    optvarteacher = models.CharField(db_column='OptVarTeacher', max_length=1, blank=True,
-                                     null=True)  # Field name made lowercase.
-    externname = models.CharField(db_column='ExternName', max_length=60, blank=True,
-                                  null=True)  # Field name made lowercase.
-    breaksvrequest = models.CharField(db_column='BreakSVRequest', max_length=1000, blank=True,
-                                      null=True)  # Field name made lowercase.
-    teachquali1 = models.CharField(db_column='TeachQuali1', max_length=1000, blank=True,
-                                   null=True)  # Field name made lowercase.
-    teachquali2 = models.CharField(db_column='TeachQuali2', max_length=1000, blank=True,
-                                   null=True)  # Field name made lowercase.
-    teachquali3 = models.CharField(db_column='TeachQuali3', max_length=1000, blank=True,
-                                   null=True)  # Field name made lowercase.
-    teachquali4 = models.CharField(db_column='TeachQuali4', max_length=1000, blank=True,
-                                   null=True)  # Field name made lowercase.
-    text2 = models.CharField(db_column='Text2', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    glaettdate = models.IntegerField(db_column='GlaettDate', blank=True, null=True)  # Field name made lowercase.
-    breaksvdayflags = models.CharField(db_column='BreakSvDayFlags', max_length=100, blank=True,
-                                       null=True)  # Field name made lowercase.
-    lengthstaymax = models.SmallIntegerField(db_column='LengthStayMax', blank=True,
-                                             null=True)  # Field name made lowercase.
-    statusnew = models.CharField(db_column='StatusNew', max_length=10, blank=True,
-                                 null=True)  # Field name made lowercase.
-    statusnewdate = models.IntegerField(db_column='StatusNewDate', blank=True, null=True)  # Field name made lowercase.
-    text3 = models.CharField(db_column='Text3', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    text4 = models.CharField(db_column='Text4', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    plannedweekminut = models.IntegerField(db_column='PlannedWeekMinut', blank=True,
-                                           null=True)  # Field name made lowercase.
-    plannedyearminut = models.IntegerField(db_column='PlannedYearMinut', blank=True,
-                                           null=True)  # Field name made lowercase.
-    plannedweeknew = models.IntegerField(db_column='PlannedWeekNew', blank=True,
-                                         null=True)  # Field name made lowercase.
-    plannedperdept = models.CharField(db_column='PlannedPerDept', max_length=1000, blank=True,
-                                      null=True)  # Field name made lowercase.
+        db_table = "TableInfo"
+        unique_together = (("school_id", "schoolyear_id", "version_id", "type", "id"),)
+
+
+class Teacher(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    teacher_id = models.IntegerField(db_column="TEACHER_ID")  # Field name made lowercase.
+    term_id = models.SmallIntegerField(db_column="TERM_ID")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    sortid = models.IntegerField(
+        db_column="SortId", blank=True, null=True
+    )  # Field name made lowercase.
+    name = models.CharField(
+        db_column="Name", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    text = models.CharField(
+        db_column="Text", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    statisticcodes = models.CharField(
+        db_column="StatisticCodes", max_length=10, blank=True, null=True
+    )  # Field name made lowercase.
+    longname = models.CharField(
+        db_column="Longname", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    timerequest = models.CharField(
+        db_column="TimeRequest", max_length=400, blank=True, null=True
+    )  # Field name made lowercase.
+    timerequestminut = models.CharField(
+        db_column="TimeRequestMinut", max_length=400, blank=True, null=True
+    )  # Field name made lowercase.
+    dayrequest = models.CharField(
+        db_column="DayRequest", max_length=400, blank=True, null=True
+    )  # Field name made lowercase.
+    timerequestunspecified = models.CharField(
+        db_column="TimeRequestUnspecified", max_length=400, blank=True, null=True
+    )  # Field name made lowercase.
+    address = models.CharField(
+        db_column="Address", max_length=400, blank=True, null=True
+    )  # Field name made lowercase.
+    selmatrix = models.CharField(
+        db_column="SelMatrix", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    timestamp = models.IntegerField(
+        db_column="TimeStamp", blank=True, null=True
+    )  # Field name made lowercase.
+    flags = models.CharField(
+        db_column="Flags", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    blankflags = models.CharField(
+        db_column="BlankFlags", max_length=80, blank=True, null=True
+    )  # Field name made lowercase.
+    room_id = models.IntegerField(
+        db_column="ROOM_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    description_id = models.IntegerField(
+        db_column="DESCRIPTION_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    forecolor = models.IntegerField(
+        db_column="ForeColor", blank=True, null=True
+    )  # Field name made lowercase.
+    backcolor = models.IntegerField(
+        db_column="BackColor", blank=True, null=True
+    )  # Field name made lowercase.
+    factor = models.CharField(
+        db_column="Factor", max_length=9, blank=True, null=True
+    )  # Field name made lowercase.
+    foreigndata = models.CharField(
+        db_column="ForeignData", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    foreignkey = models.CharField(
+        db_column="ForeignKey", max_length=50, blank=True, null=True
+    )  # Field name made lowercase.
+    miscdata = models.CharField(
+        db_column="MiscData", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    oldname = models.CharField(
+        db_column="OldName", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    minutbreakmin = models.SmallIntegerField(
+        db_column="MinutBreakMin", blank=True, null=True
+    )  # Field name made lowercase.
+    lunchbreakmin = models.SmallIntegerField(
+        db_column="LunchBreakMin", blank=True, null=True
+    )  # Field name made lowercase.
+    lunchbreakmax = models.SmallIntegerField(
+        db_column="LunchBreakMax", blank=True, null=True
+    )  # Field name made lowercase.
+    lssnperdaymin = models.SmallIntegerField(
+        db_column="LssnPerDayMin", blank=True, null=True
+    )  # Field name made lowercase.
+    lssnperdaymax = models.SmallIntegerField(
+        db_column="LssnPerDayMax", blank=True, null=True
+    )  # Field name made lowercase.
+    minutminutesperdaymin = models.SmallIntegerField(
+        db_column="MinutMinutesPerDayMin", blank=True, null=True
+    )  # Field name made lowercase.
+    minutminutesperdaymax = models.SmallIntegerField(
+        db_column="MinutMinutesPerDayMax", blank=True, null=True
+    )  # Field name made lowercase.
+    minutlunchbreakperdaymin = models.SmallIntegerField(
+        db_column="MinutLunchBreakPerDayMin", blank=True, null=True
+    )  # Field name made lowercase.
+    minutlunchbreakperdaymax = models.SmallIntegerField(
+        db_column="MinutLunchBreakPerDayMax", blank=True, null=True
+    )  # Field name made lowercase.
+    blocksnodays = models.SmallIntegerField(
+        db_column="BlocksNoDays", blank=True, null=True
+    )  # Field name made lowercase.
+    blockslssnfrom = models.SmallIntegerField(
+        db_column="BlocksLssnFrom", blank=True, null=True
+    )  # Field name made lowercase.
+    blockslssnto = models.SmallIntegerField(
+        db_column="BlocksLssnTo", blank=True, null=True
+    )  # Field name made lowercase.
+    weekquotamin = models.SmallIntegerField(
+        db_column="WeekQuotaMin", blank=True, null=True
+    )  # Field name made lowercase.
+    weekquotamax = models.SmallIntegerField(
+        db_column="WeekQuotaMax", blank=True, null=True
+    )  # Field name made lowercase.
+    weekquotaideal = models.SmallIntegerField(
+        db_column="WeekQuotaIdeal", blank=True, null=True
+    )  # Field name made lowercase.
+    pnumber = models.CharField(
+        db_column="PNumber", max_length=20, blank=True, null=True
+    )  # Field name made lowercase.
+    status = models.CharField(
+        db_column="Status", max_length=10, blank=True, null=True
+    )  # Field name made lowercase.
+    firstname = models.CharField(
+        db_column="FirstName", max_length=150, blank=True, null=True
+    )  # Field name made lowercase.
+    title = models.CharField(
+        db_column="Title", max_length=20, blank=True, null=True
+    )  # Field name made lowercase.
+    ownschool = models.CharField(
+        db_column="OwnSchool", max_length=20, blank=True, null=True
+    )  # Field name made lowercase.
+    ignorereason = models.CharField(
+        db_column="IgnoreReason", max_length=20, blank=True, null=True
+    )  # Field name made lowercase.
+    department_id1 = models.SmallIntegerField(
+        db_column="DEPARTMENT_ID1", blank=True, null=True
+    )  # Field name made lowercase.
+    department_id2 = models.SmallIntegerField(
+        db_column="DEPARTMENT_ID2", blank=True, null=True
+    )  # Field name made lowercase.
+    department_id3 = models.SmallIntegerField(
+        db_column="DEPARTMENT_ID3", blank=True, null=True
+    )  # Field name made lowercase.
+    department_id4 = models.SmallIntegerField(
+        db_column="DEPARTMENT_ID4", blank=True, null=True
+    )  # Field name made lowercase.
+    department_id5 = models.SmallIntegerField(
+        db_column="DEPARTMENT_ID5", blank=True, null=True
+    )  # Field name made lowercase.
+    email = models.CharField(
+        db_column="Email", max_length=80, blank=True, null=True
+    )  # Field name made lowercase.
+    tel = models.CharField(
+        db_column="Tel", max_length=20, blank=True, null=True
+    )  # Field name made lowercase.
+    handy = models.CharField(
+        db_column="Handy", max_length=20, blank=True, null=True
+    )  # Field name made lowercase.
+    externid = models.CharField(
+        db_column="ExternId", max_length=20, blank=True, null=True
+    )  # Field name made lowercase.
+    nolessnsucc = models.SmallIntegerField(
+        db_column="NoLessnSucc", blank=True, null=True
+    )  # Field name made lowercase.
+    cavitymin = models.SmallIntegerField(
+        db_column="CavityMin", blank=True, null=True
+    )  # Field name made lowercase.
+    cavitymax = models.SmallIntegerField(
+        db_column="CavityMax", blank=True, null=True
+    )  # Field name made lowercase.
+    availmax = models.SmallIntegerField(
+        db_column="AvailMax", blank=True, null=True
+    )  # Field name made lowercase.
+    daybreak = models.SmallIntegerField(
+        db_column="DayBreak", blank=True, null=True
+    )  # Field name made lowercase.
+    substblock = models.SmallIntegerField(
+        db_column="SubstBlock", blank=True, null=True
+    )  # Field name made lowercase.
+    minutbreaksweekmin = models.SmallIntegerField(
+        db_column="MinutBreaksWeekMin", blank=True, null=True
+    )  # Field name made lowercase.
+    minutbreaksweekmax = models.SmallIntegerField(
+        db_column="MinutBreaksWeekMax", blank=True, null=True
+    )  # Field name made lowercase.
+    minutsucessmax = models.SmallIntegerField(
+        db_column="MinutSucessMax", blank=True, null=True
+    )  # Field name made lowercase.
+    pointbreaksupmax = models.SmallIntegerField(
+        db_column="PointBreaksupMax", blank=True, null=True
+    )  # Field name made lowercase.
+    birthdate = models.IntegerField(
+        db_column="BirthDate", blank=True, null=True
+    )  # Field name made lowercase.
+    arrivaldate = models.IntegerField(
+        db_column="ArrivalDate", blank=True, null=True
+    )  # Field name made lowercase.
+    departuredate = models.IntegerField(
+        db_column="DepartureDate", blank=True, null=True
+    )  # Field name made lowercase.
+    plannedweek = models.IntegerField(
+        db_column="PlannedWeek", blank=True, null=True
+    )  # Field name made lowercase.
+    plannedweekmax = models.IntegerField(
+        db_column="PlannedWeekMax", blank=True, null=True
+    )  # Field name made lowercase.
+    plannedyear = models.IntegerField(
+        db_column="PlannedYear", blank=True, null=True
+    )  # Field name made lowercase.
+    plannedyearmax = models.IntegerField(
+        db_column="PlannedYearMax", blank=True, null=True
+    )  # Field name made lowercase.
+    salarypehour = models.IntegerField(
+        db_column="SalaryPeHour", blank=True, null=True
+    )  # Field name made lowercase.
+    optvarteacher = models.CharField(
+        db_column="OptVarTeacher", max_length=1, blank=True, null=True
+    )  # Field name made lowercase.
+    externname = models.CharField(
+        db_column="ExternName", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    breaksvrequest = models.CharField(
+        db_column="BreakSVRequest", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    teachquali1 = models.CharField(
+        db_column="TeachQuali1", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    teachquali2 = models.CharField(
+        db_column="TeachQuali2", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    teachquali3 = models.CharField(
+        db_column="TeachQuali3", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    teachquali4 = models.CharField(
+        db_column="TeachQuali4", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    text2 = models.CharField(
+        db_column="Text2", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    glaettdate = models.IntegerField(
+        db_column="GlaettDate", blank=True, null=True
+    )  # Field name made lowercase.
+    breaksvdayflags = models.CharField(
+        db_column="BreakSvDayFlags", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    lengthstaymax = models.SmallIntegerField(
+        db_column="LengthStayMax", blank=True, null=True
+    )  # Field name made lowercase.
+    statusnew = models.CharField(
+        db_column="StatusNew", max_length=10, blank=True, null=True
+    )  # Field name made lowercase.
+    statusnewdate = models.IntegerField(
+        db_column="StatusNewDate", blank=True, null=True
+    )  # Field name made lowercase.
+    text3 = models.CharField(
+        db_column="Text3", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    text4 = models.CharField(
+        db_column="Text4", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    plannedweekminut = models.IntegerField(
+        db_column="PlannedWeekMinut", blank=True, null=True
+    )  # Field name made lowercase.
+    plannedyearminut = models.IntegerField(
+        db_column="PlannedYearMinut", blank=True, null=True
+    )  # Field name made lowercase.
+    plannedweeknew = models.IntegerField(
+        db_column="PlannedWeekNew", blank=True, null=True
+    )  # Field name made lowercase.
+    plannedperdept = models.CharField(
+        db_column="PlannedPerDept", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'Teacher'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'teacher_id', 'term_id'),)
-
-
-class Teachergroup(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    teachergroup_id = models.IntegerField(db_column='TEACHERGROUP_ID')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    sortid = models.IntegerField(db_column='SortId', blank=True, null=True)  # Field name made lowercase.
-    name = models.CharField(db_column='Name', max_length=60, blank=True, null=True)  # Field name made lowercase.
-    longname = models.CharField(db_column='Longname', max_length=100, blank=True,
-                                null=True)  # Field name made lowercase.
-    timestamp = models.IntegerField(db_column='TimeStamp', blank=True, null=True)  # Field name made lowercase.
-    forecolor = models.IntegerField(db_column='ForeColor', blank=True, null=True)  # Field name made lowercase.
-    backcolor = models.IntegerField(db_column='BackColor', blank=True, null=True)  # Field name made lowercase.
-    teacherids = models.CharField(db_column='TeacherIds', max_length=255, blank=True,
-                                  null=True)  # Field name made lowercase.
-    dataperteacher = models.CharField(db_column='DataPerTeacher', max_length=255, blank=True,
-                                      null=True)  # Field name made lowercase.
+        db_table = "Teacher"
+        unique_together = (("school_id", "schoolyear_id", "version_id", "teacher_id", "term_id"),)
+
+
+class Teachergroup(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    teachergroup_id = models.IntegerField(db_column="TEACHERGROUP_ID")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    sortid = models.IntegerField(
+        db_column="SortId", blank=True, null=True
+    )  # Field name made lowercase.
+    name = models.CharField(
+        db_column="Name", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    longname = models.CharField(
+        db_column="Longname", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    timestamp = models.IntegerField(
+        db_column="TimeStamp", blank=True, null=True
+    )  # Field name made lowercase.
+    forecolor = models.IntegerField(
+        db_column="ForeColor", blank=True, null=True
+    )  # Field name made lowercase.
+    backcolor = models.IntegerField(
+        db_column="BackColor", blank=True, null=True
+    )  # Field name made lowercase.
+    teacherids = models.CharField(
+        db_column="TeacherIds", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    dataperteacher = models.CharField(
+        db_column="DataPerTeacher", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'TeacherGroup'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'teachergroup_id'),)
-
-
-class Terms(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    term_id = models.IntegerField(db_column='TERM_ID')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    name = models.CharField(db_column='Name', max_length=60, blank=True, null=True)  # Field name made lowercase.
-    longname = models.CharField(db_column='Longname', max_length=100, blank=True,
-                                null=True)  # Field name made lowercase.
-    flags = models.CharField(db_column='Flags', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    datefrom = models.IntegerField(db_column='DateFrom', blank=True, null=True)  # Field name made lowercase.
-    dateto = models.IntegerField(db_column='DateTo', blank=True, null=True)  # Field name made lowercase.
-    term_id_mother = models.IntegerField(db_column='TERM_ID_Mother', blank=True,
-                                         null=True)  # Field name made lowercase.
+        db_table = "TeacherGroup"
+        unique_together = (("school_id", "schoolyear_id", "version_id", "teachergroup_id"),)
+
+
+class Terms(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    term_id = models.IntegerField(db_column="TERM_ID")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    name = models.CharField(
+        db_column="Name", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    longname = models.CharField(
+        db_column="Longname", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    flags = models.CharField(
+        db_column="Flags", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    datefrom = models.IntegerField(
+        db_column="DateFrom", blank=True, null=True
+    )  # Field name made lowercase.
+    dateto = models.IntegerField(
+        db_column="DateTo", blank=True, null=True
+    )  # Field name made lowercase.
+    term_id_mother = models.IntegerField(
+        db_column="TERM_ID_Mother", blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'Terms'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'term_id'),)
-
-
-class Transfer(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    transfer_id = models.IntegerField(db_column='TRANSFER_ID')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    flags = models.CharField(db_column='Flags', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    teacher_id = models.IntegerField(db_column='TEACHER_ID', blank=True, null=True)  # Field name made lowercase.
-    lesson_id = models.IntegerField(db_column='LESSON_ID', blank=True, null=True)  # Field name made lowercase.
-    datefrom = models.IntegerField(db_column='DateFrom', blank=True, null=True)  # Field name made lowercase.
-    dateto = models.IntegerField(db_column='DateTo', blank=True, null=True)  # Field name made lowercase.
-    lessonfrom = models.SmallIntegerField(db_column='LessonFrom', blank=True, null=True)  # Field name made lowercase.
-    lessonto = models.SmallIntegerField(db_column='LessonTo', blank=True, null=True)  # Field name made lowercase.
+        db_table = "Terms"
+        unique_together = (("school_id", "schoolyear_id", "version_id", "term_id"),)
+
+
+class Transfer(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    transfer_id = models.IntegerField(db_column="TRANSFER_ID")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    flags = models.CharField(
+        db_column="Flags", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    teacher_id = models.IntegerField(
+        db_column="TEACHER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    lesson_id = models.IntegerField(
+        db_column="LESSON_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    datefrom = models.IntegerField(
+        db_column="DateFrom", blank=True, null=True
+    )  # Field name made lowercase.
+    dateto = models.IntegerField(
+        db_column="DateTo", blank=True, null=True
+    )  # Field name made lowercase.
+    lessonfrom = models.SmallIntegerField(
+        db_column="LessonFrom", blank=True, null=True
+    )  # Field name made lowercase.
+    lessonto = models.SmallIntegerField(
+        db_column="LessonTo", blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'Transfer'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'transfer_id'),)
-
-
-class Untissettings(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    option_id = models.IntegerField(db_column='OPTION_ID')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    owner = models.SmallIntegerField(db_column='Owner', blank=True, null=True)  # Field name made lowercase.
-    section = models.CharField(db_column='Section', max_length=1000, blank=True,
-                               null=True)  # Field name made lowercase.
-    optionkey = models.CharField(db_column='OptionKey', max_length=1000, blank=True,
-                                 null=True)  # Field name made lowercase.
-    value = models.TextField(db_column='Value', blank=True, null=True)  # Field name made lowercase.
+        db_table = "Transfer"
+        unique_together = (("school_id", "schoolyear_id", "version_id", "transfer_id"),)
+
+
+class Untissettings(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    option_id = models.IntegerField(db_column="OPTION_ID")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    owner = models.SmallIntegerField(
+        db_column="Owner", blank=True, null=True
+    )  # Field name made lowercase.
+    section = models.CharField(
+        db_column="Section", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    optionkey = models.CharField(
+        db_column="OptionKey", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    value = models.TextField(db_column="Value", blank=True, null=True)  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'UntisSettings'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'option_id'),)
-
-
-class User(models.Model):
-    user_id = models.SmallIntegerField(db_column='USER_ID', primary_key=True)  # Field name made lowercase.
-    user_group_id = models.SmallIntegerField(db_column='USER_GROUP_ID', blank=True,
-                                             null=True)  # Field name made lowercase.
-    name = models.CharField(db_column='Name', max_length=32, blank=True, null=True)  # Field name made lowercase.
-    user_id2 = models.SmallIntegerField(db_column='USER_ID2', blank=True, null=True)  # Field name made lowercase.
-    user2text = models.CharField(db_column='User2Text', max_length=100, blank=True,
-                                 null=True)  # Field name made lowercase.
-    password = models.IntegerField(db_column='Password', blank=True, null=True)  # Field name made lowercase.
-    loggedin = models.IntegerField(db_column='LoggedIn', blank=True, null=True)  # Field name made lowercase.
-    usercounterlast = models.IntegerField(db_column='UserCounterLast', blank=True,
-                                          null=True)  # Field name made lowercase.
-    logindate = models.IntegerField(db_column='LogInDate', blank=True, null=True)  # Field name made lowercase.
-    logintime = models.SmallIntegerField(db_column='LogInTime', blank=True, null=True)  # Field name made lowercase.
-    logoutdate = models.IntegerField(db_column='LogOutDate', blank=True, null=True)  # Field name made lowercase.
-    logouttime = models.SmallIntegerField(db_column='LogOutTime', blank=True, null=True)  # Field name made lowercase.
-    refreshdate = models.IntegerField(db_column='RefreshDate', blank=True, null=True)  # Field name made lowercase.
-    refreshtime = models.SmallIntegerField(db_column='RefreshTime', blank=True, null=True)  # Field name made lowercase.
-    school_id = models.IntegerField(db_column='SCHOOL_ID', blank=True, null=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID', blank=True, null=True)  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID', blank=True, null=True)  # Field name made lowercase.
-    term_id = models.IntegerField(db_column='TERM_ID', blank=True, null=True)  # Field name made lowercase.
-    term = models.CharField(db_column='Term', max_length=50, blank=True, null=True)  # Field name made lowercase.
-    department_id = models.IntegerField(db_column='DEPARTMENT_ID', blank=True, null=True)  # Field name made lowercase.
-    department = models.CharField(db_column='Department', max_length=60, blank=True,
-                                  null=True)  # Field name made lowercase.
-    mode = models.SmallIntegerField(db_column='Mode', blank=True, null=True)  # Field name made lowercase.
-    process = models.SmallIntegerField(db_column='Process', blank=True, null=True)  # Field name made lowercase.
-    type = models.SmallIntegerField(db_column='Type', blank=True, null=True)  # Field name made lowercase.
-    untisname = models.CharField(db_column='UntisName', max_length=20, blank=True,
-                                 null=True)  # Field name made lowercase.
-    userinfo = models.CharField(db_column='UserInfo', max_length=255, blank=True,
-                                null=True)  # Field name made lowercase.
-    departmentrights = models.CharField(db_column='DepartmentRights', max_length=255, blank=True,
-                                        null=True)  # Field name made lowercase.
+        db_table = "UntisSettings"
+        unique_together = (("school_id", "schoolyear_id", "version_id", "option_id"),)
+
+
+class User(models.Model, PureDjangoModel):
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", primary_key=True
+    )  # Field name made lowercase.
+    user_group_id = models.SmallIntegerField(
+        db_column="USER_GROUP_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    name = models.CharField(
+        db_column="Name", max_length=32, blank=True, null=True
+    )  # Field name made lowercase.
+    user_id2 = models.SmallIntegerField(
+        db_column="USER_ID2", blank=True, null=True
+    )  # Field name made lowercase.
+    user2text = models.CharField(
+        db_column="User2Text", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    password = models.IntegerField(
+        db_column="Password", blank=True, null=True
+    )  # Field name made lowercase.
+    loggedin = models.IntegerField(
+        db_column="LoggedIn", blank=True, null=True
+    )  # Field name made lowercase.
+    usercounterlast = models.IntegerField(
+        db_column="UserCounterLast", blank=True, null=True
+    )  # Field name made lowercase.
+    logindate = models.IntegerField(
+        db_column="LogInDate", blank=True, null=True
+    )  # Field name made lowercase.
+    logintime = models.SmallIntegerField(
+        db_column="LogInTime", blank=True, null=True
+    )  # Field name made lowercase.
+    logoutdate = models.IntegerField(
+        db_column="LogOutDate", blank=True, null=True
+    )  # Field name made lowercase.
+    logouttime = models.SmallIntegerField(
+        db_column="LogOutTime", blank=True, null=True
+    )  # Field name made lowercase.
+    refreshdate = models.IntegerField(
+        db_column="RefreshDate", blank=True, null=True
+    )  # Field name made lowercase.
+    refreshtime = models.SmallIntegerField(
+        db_column="RefreshTime", blank=True, null=True
+    )  # Field name made lowercase.
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(
+        db_column="SCHOOLYEAR_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    version_id = models.SmallIntegerField(
+        db_column="VERSION_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    term_id = models.IntegerField(
+        db_column="TERM_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    term = models.CharField(
+        db_column="Term", max_length=50, blank=True, null=True
+    )  # Field name made lowercase.
+    department_id = models.IntegerField(
+        db_column="DEPARTMENT_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    department = models.CharField(
+        db_column="Department", max_length=60, blank=True, null=True
+    )  # Field name made lowercase.
+    mode = models.SmallIntegerField(
+        db_column="Mode", blank=True, null=True
+    )  # Field name made lowercase.
+    process = models.SmallIntegerField(
+        db_column="Process", blank=True, null=True
+    )  # Field name made lowercase.
+    type = models.SmallIntegerField(
+        db_column="Type", blank=True, null=True
+    )  # Field name made lowercase.
+    untisname = models.CharField(
+        db_column="UntisName", max_length=20, blank=True, null=True
+    )  # Field name made lowercase.
+    userinfo = models.CharField(
+        db_column="UserInfo", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    departmentrights = models.CharField(
+        db_column="DepartmentRights", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'User'
-
-
-class Usergroup(models.Model):
-    user_group_id = models.SmallIntegerField(db_column='USER_GROUP_ID', primary_key=True)  # Field name made lowercase.
-    name = models.CharField(db_column='Name', max_length=32, blank=True, null=True)  # Field name made lowercase.
-    schools = models.CharField(db_column='Schools', max_length=255, blank=True, null=True)  # Field name made lowercase.
-    schoolyears = models.CharField(db_column='SchoolYears', max_length=255, blank=True,
-                                   null=True)  # Field name made lowercase.
-    versions = models.CharField(db_column='Versions', max_length=255, blank=True,
-                                null=True)  # Field name made lowercase.
-    department = models.CharField(db_column='Department', max_length=255, blank=True,
-                                  null=True)  # Field name made lowercase.
-    termnames = models.CharField(db_column='TermNames', max_length=255, blank=True,
-                                 null=True)  # Field name made lowercase.
-    flags = models.CharField(db_column='Flags', max_length=255, blank=True, null=True)  # Field name made lowercase.
-    openschool = models.IntegerField(db_column='OpenSchool', blank=True, null=True)  # Field name made lowercase.
-    openschoolyear = models.IntegerField(db_column='OpenSchoolYear', blank=True,
-                                         null=True)  # Field name made lowercase.
-    openversion = models.IntegerField(db_column='OpenVersion', blank=True, null=True)  # Field name made lowercase.
-    useradministration = models.IntegerField(db_column='UserAdministration', blank=True,
-                                             null=True)  # Field name made lowercase.
-    administration = models.IntegerField(db_column='Administration', blank=True,
-                                         null=True)  # Field name made lowercase.
-    timetableoptimisation = models.IntegerField(db_column='TimetableOptimisation', blank=True,
-                                                null=True)  # Field name made lowercase.
-    rightsprint = models.IntegerField(db_column='RightsPrint', blank=True, null=True)  # Field name made lowercase.
-    save2gpn = models.IntegerField(db_column='Save2gpn', blank=True, null=True)  # Field name made lowercase.
-    infostp = models.IntegerField(db_column='InfoStp', blank=True, null=True)  # Field name made lowercase.
-    timetable = models.SmallIntegerField(db_column='Timetable', blank=True, null=True)  # Field name made lowercase.
-    masterdata = models.SmallIntegerField(db_column='MasterData', blank=True, null=True)  # Field name made lowercase.
-    specialdata = models.SmallIntegerField(db_column='SpecialData', blank=True, null=True)  # Field name made lowercase.
-    lesson = models.SmallIntegerField(db_column='Lesson', blank=True, null=True)  # Field name made lowercase.
-    terms = models.SmallIntegerField(db_column='Terms', blank=True, null=True)  # Field name made lowercase.
-    substitution = models.SmallIntegerField(db_column='Substitution', blank=True,
-                                            null=True)  # Field name made lowercase.
-    absences = models.SmallIntegerField(db_column='Absences', blank=True, null=True)  # Field name made lowercase.
-    coursplaning = models.SmallIntegerField(db_column='Coursplaning', blank=True,
-                                            null=True)  # Field name made lowercase.
-    deduction = models.SmallIntegerField(db_column='Deduction', blank=True, null=True)  # Field name made lowercase.
-    importdata = models.IntegerField(db_column='ImportData', blank=True, null=True)  # Field name made lowercase.
-    webuntis = models.IntegerField(db_column='WebUntis', blank=True, null=True)  # Field name made lowercase.
-    subststatistics = models.IntegerField(db_column='SubstStatistics', blank=True,
-                                          null=True)  # Field name made lowercase.
+        db_table = "User"
+
+
+class Usergroup(models.Model, PureDjangoModel):
+    user_group_id = models.SmallIntegerField(
+        db_column="USER_GROUP_ID", primary_key=True
+    )  # Field name made lowercase.
+    name = models.CharField(
+        db_column="Name", max_length=32, blank=True, null=True
+    )  # Field name made lowercase.
+    schools = models.CharField(
+        db_column="Schools", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    schoolyears = models.CharField(
+        db_column="SchoolYears", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    versions = models.CharField(
+        db_column="Versions", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    department = models.CharField(
+        db_column="Department", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    termnames = models.CharField(
+        db_column="TermNames", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    flags = models.CharField(
+        db_column="Flags", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    openschool = models.IntegerField(
+        db_column="OpenSchool", blank=True, null=True
+    )  # Field name made lowercase.
+    openschoolyear = models.IntegerField(
+        db_column="OpenSchoolYear", blank=True, null=True
+    )  # Field name made lowercase.
+    openversion = models.IntegerField(
+        db_column="OpenVersion", blank=True, null=True
+    )  # Field name made lowercase.
+    useradministration = models.IntegerField(
+        db_column="UserAdministration", blank=True, null=True
+    )  # Field name made lowercase.
+    administration = models.IntegerField(
+        db_column="Administration", blank=True, null=True
+    )  # Field name made lowercase.
+    timetableoptimisation = models.IntegerField(
+        db_column="TimetableOptimisation", blank=True, null=True
+    )  # Field name made lowercase.
+    rightsprint = models.IntegerField(
+        db_column="RightsPrint", blank=True, null=True
+    )  # Field name made lowercase.
+    save2gpn = models.IntegerField(
+        db_column="Save2gpn", blank=True, null=True
+    )  # Field name made lowercase.
+    infostp = models.IntegerField(
+        db_column="InfoStp", blank=True, null=True
+    )  # Field name made lowercase.
+    timetable = models.SmallIntegerField(
+        db_column="Timetable", blank=True, null=True
+    )  # Field name made lowercase.
+    masterdata = models.SmallIntegerField(
+        db_column="MasterData", blank=True, null=True
+    )  # Field name made lowercase.
+    specialdata = models.SmallIntegerField(
+        db_column="SpecialData", blank=True, null=True
+    )  # Field name made lowercase.
+    lesson = models.SmallIntegerField(
+        db_column="Lesson", blank=True, null=True
+    )  # Field name made lowercase.
+    terms = models.SmallIntegerField(
+        db_column="Terms", blank=True, null=True
+    )  # Field name made lowercase.
+    substitution = models.SmallIntegerField(
+        db_column="Substitution", blank=True, null=True
+    )  # Field name made lowercase.
+    absences = models.SmallIntegerField(
+        db_column="Absences", blank=True, null=True
+    )  # Field name made lowercase.
+    coursplaning = models.SmallIntegerField(
+        db_column="Coursplaning", blank=True, null=True
+    )  # Field name made lowercase.
+    deduction = models.SmallIntegerField(
+        db_column="Deduction", blank=True, null=True
+    )  # Field name made lowercase.
+    importdata = models.IntegerField(
+        db_column="ImportData", blank=True, null=True
+    )  # Field name made lowercase.
+    webuntis = models.IntegerField(
+        db_column="WebUntis", blank=True, null=True
+    )  # Field name made lowercase.
+    subststatistics = models.IntegerField(
+        db_column="SubstStatistics", blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'UserGroup'
-
-
-class Usermessage(models.Model):
-    message_id = models.IntegerField(db_column='MESSAGE_ID', primary_key=True)  # Field name made lowercase.
-    user_id = models.IntegerField(db_column='USER_ID')  # Field name made lowercase.
-    sender_id = models.SmallIntegerField(db_column='Sender_ID', blank=True, null=True)  # Field name made lowercase.
-    date = models.IntegerField(db_column='Date', blank=True, null=True)  # Field name made lowercase.
-    time = models.SmallIntegerField(db_column='Time', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    newmessage = models.IntegerField(db_column='NewMessage', blank=True, null=True)  # Field name made lowercase.
-    notread = models.IntegerField(db_column='NotRead', blank=True, null=True)  # Field name made lowercase.
-    text = models.CharField(db_column='Text', max_length=1000, blank=True, null=True)  # Field name made lowercase.
-    subject = models.CharField(db_column='Subject', max_length=100, blank=True, null=True)  # Field name made lowercase.
+        db_table = "UserGroup"
+
+
+class Usermessage(models.Model, PureDjangoModel):
+    message_id = models.IntegerField(
+        db_column="MESSAGE_ID", primary_key=True
+    )  # Field name made lowercase.
+    user_id = models.IntegerField(db_column="USER_ID")  # Field name made lowercase.
+    sender_id = models.SmallIntegerField(
+        db_column="Sender_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    date = models.IntegerField(
+        db_column="Date", blank=True, null=True
+    )  # Field name made lowercase.
+    time = models.SmallIntegerField(
+        db_column="Time", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    newmessage = models.IntegerField(
+        db_column="NewMessage", blank=True, null=True
+    )  # Field name made lowercase.
+    notread = models.IntegerField(
+        db_column="NotRead", blank=True, null=True
+    )  # Field name made lowercase.
+    text = models.CharField(
+        db_column="Text", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    subject = models.CharField(
+        db_column="Subject", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'UserMessage'
-        unique_together = (('message_id', 'user_id'),)
-
-
-class Valuecorrection(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    teacher_id = models.IntegerField(db_column='TEACHER_ID')  # Field name made lowercase.
-    number = models.SmallIntegerField(db_column='Number')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    text = models.CharField(db_column='Text', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    flags = models.CharField(db_column='Flags', max_length=100, blank=True, null=True)  # Field name made lowercase.
-    date = models.IntegerField(db_column='Date', blank=True, null=True)  # Field name made lowercase.
-    type1 = models.CharField(db_column='Type1', max_length=1, blank=True, null=True)  # Field name made lowercase.
-    value = models.IntegerField(db_column='Value', blank=True, null=True)  # Field name made lowercase.
-    valueminutes = models.IntegerField(db_column='ValueMinutes', blank=True, null=True)  # Field name made lowercase.
-    percentage = models.SmallIntegerField(db_column='Percentage', blank=True, null=True)  # Field name made lowercase.
-    basis = models.CharField(db_column='Basis', max_length=1, blank=True, null=True)  # Field name made lowercase.
-    schoolorig = models.CharField(db_column='SchoolOrig', max_length=100, blank=True,
-                                  null=True)  # Field name made lowercase.
+        db_table = "UserMessage"
+        unique_together = (("message_id", "user_id"),)
+
+
+class Valuecorrection(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    teacher_id = models.IntegerField(db_column="TEACHER_ID")  # Field name made lowercase.
+    number = models.SmallIntegerField(db_column="Number")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    text = models.CharField(
+        db_column="Text", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    flags = models.CharField(
+        db_column="Flags", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
+    date = models.IntegerField(
+        db_column="Date", blank=True, null=True
+    )  # Field name made lowercase.
+    type1 = models.CharField(
+        db_column="Type1", max_length=1, blank=True, null=True
+    )  # Field name made lowercase.
+    value = models.IntegerField(
+        db_column="Value", blank=True, null=True
+    )  # Field name made lowercase.
+    valueminutes = models.IntegerField(
+        db_column="ValueMinutes", blank=True, null=True
+    )  # Field name made lowercase.
+    percentage = models.SmallIntegerField(
+        db_column="Percentage", blank=True, null=True
+    )  # Field name made lowercase.
+    basis = models.CharField(
+        db_column="Basis", max_length=1, blank=True, null=True
+    )  # Field name made lowercase.
+    schoolorig = models.CharField(
+        db_column="SchoolOrig", max_length=100, blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'ValueCorrection'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'teacher_id', 'number'),)
-
-
-class Version(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    counterlast = models.IntegerField(db_column='CounterLast', blank=True, null=True)  # Field name made lowercase.
-    usercounterlast = models.IntegerField(db_column='UserCounterLast', blank=True,
-                                          null=True)  # Field name made lowercase.
-    user_idlast = models.SmallIntegerField(db_column='USER_IDLast', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    mode = models.SmallIntegerField(db_column='Mode', blank=True, null=True)  # Field name made lowercase.
-    process = models.SmallIntegerField(db_column='Process', blank=True, null=True)  # Field name made lowercase.
-    date = models.IntegerField(db_column='Date', blank=True, null=True)  # Field name made lowercase.
-    time = models.SmallIntegerField(db_column='Time', blank=True, null=True)  # Field name made lowercase.
-    progdate = models.CharField(db_column='ProgDate', max_length=12, blank=True,
-                                null=True)  # Field name made lowercase.
-    text = models.CharField(db_column='Text', max_length=50, blank=True, null=True)  # Field name made lowercase.
-    only1user = models.IntegerField(db_column='Only1User', blank=True, null=True)  # Field name made lowercase.
-    action = models.IntegerField(db_column='Action', blank=True, null=True)  # Field name made lowercase.
-    updatedb = models.IntegerField(db_column='UpdateDb', blank=True, null=True)  # Field name made lowercase.
-    readdb = models.IntegerField(db_column='ReadDb', blank=True, null=True)  # Field name made lowercase.
+        db_table = "ValueCorrection"
+        unique_together = (("school_id", "schoolyear_id", "version_id", "teacher_id", "number"),)
+
+
+class Version(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    counterlast = models.IntegerField(
+        db_column="CounterLast", blank=True, null=True
+    )  # Field name made lowercase.
+    usercounterlast = models.IntegerField(
+        db_column="UserCounterLast", blank=True, null=True
+    )  # Field name made lowercase.
+    user_idlast = models.SmallIntegerField(
+        db_column="USER_IDLast", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    mode = models.SmallIntegerField(
+        db_column="Mode", blank=True, null=True
+    )  # Field name made lowercase.
+    process = models.SmallIntegerField(
+        db_column="Process", blank=True, null=True
+    )  # Field name made lowercase.
+    date = models.IntegerField(
+        db_column="Date", blank=True, null=True
+    )  # Field name made lowercase.
+    time = models.SmallIntegerField(
+        db_column="Time", blank=True, null=True
+    )  # Field name made lowercase.
+    progdate = models.CharField(
+        db_column="ProgDate", max_length=12, blank=True, null=True
+    )  # Field name made lowercase.
+    text = models.CharField(
+        db_column="Text", max_length=50, blank=True, null=True
+    )  # Field name made lowercase.
+    only1user = models.IntegerField(
+        db_column="Only1User", blank=True, null=True
+    )  # Field name made lowercase.
+    action = models.IntegerField(
+        db_column="Action", blank=True, null=True
+    )  # Field name made lowercase.
+    updatedb = models.IntegerField(
+        db_column="UpdateDb", blank=True, null=True
+    )  # Field name made lowercase.
+    readdb = models.IntegerField(
+        db_column="ReadDb", blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'Version'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id'),)
-
-
-class Views(models.Model):
-    school_id = models.IntegerField(db_column='SCHOOL_ID', primary_key=True)  # Field name made lowercase.
-    schoolyear_id = models.IntegerField(db_column='SCHOOLYEAR_ID')  # Field name made lowercase.
-    version_id = models.SmallIntegerField(db_column='VERSION_ID')  # Field name made lowercase.
-    type = models.SmallIntegerField(db_column='Type')  # Field name made lowercase.
-    views_id = models.IntegerField(db_column='VIEWS_ID')  # Field name made lowercase.
-    owner = models.SmallIntegerField(db_column='Owner')  # Field name made lowercase.
-    counter = models.IntegerField(db_column='Counter', blank=True, null=True)  # Field name made lowercase.
-    user_id = models.SmallIntegerField(db_column='USER_ID', blank=True, null=True)  # Field name made lowercase.
-    deleted = models.IntegerField(db_column='Deleted', blank=True, null=True)  # Field name made lowercase.
-    sortid = models.IntegerField(db_column='SortId', blank=True, null=True)  # Field name made lowercase.
-    window = models.CharField(db_column='Window', max_length=255, blank=True, null=True)  # Field name made lowercase.
-    typem = models.CharField(db_column='TypeM', max_length=2, blank=True, null=True)  # Field name made lowercase.
-    fieldbool1 = models.IntegerField(db_column='FieldBool1', blank=True, null=True)  # Field name made lowercase.
-    fieldbool2 = models.IntegerField(db_column='FieldBool2', blank=True, null=True)  # Field name made lowercase.
-    fieldbool3 = models.IntegerField(db_column='FieldBool3', blank=True, null=True)  # Field name made lowercase.
-    fieldbool4 = models.IntegerField(db_column='FieldBool4', blank=True, null=True)  # Field name made lowercase.
-    fieldbool5 = models.IntegerField(db_column='FieldBool5', blank=True, null=True)  # Field name made lowercase.
-    fieldbool6 = models.IntegerField(db_column='FieldBool6', blank=True, null=True)  # Field name made lowercase.
-    fieldbool7 = models.IntegerField(db_column='FieldBool7', blank=True, null=True)  # Field name made lowercase.
-    fieldbool8 = models.IntegerField(db_column='FieldBool8', blank=True, null=True)  # Field name made lowercase.
-    fieldbool9 = models.IntegerField(db_column='FieldBool9', blank=True, null=True)  # Field name made lowercase.
-    fieldbool10 = models.IntegerField(db_column='FieldBool10', blank=True, null=True)  # Field name made lowercase.
-    fieldbool11 = models.IntegerField(db_column='FieldBool11', blank=True, null=True)  # Field name made lowercase.
-    fieldbool12 = models.IntegerField(db_column='FieldBool12', blank=True, null=True)  # Field name made lowercase.
-    fieldbool13 = models.IntegerField(db_column='FieldBool13', blank=True, null=True)  # Field name made lowercase.
-    fieldbool14 = models.IntegerField(db_column='FieldBool14', blank=True, null=True)  # Field name made lowercase.
-    fieldbool15 = models.IntegerField(db_column='FieldBool15', blank=True, null=True)  # Field name made lowercase.
-    fieldbool16 = models.IntegerField(db_column='FieldBool16', blank=True, null=True)  # Field name made lowercase.
-    fieldbool17 = models.IntegerField(db_column='FieldBool17', blank=True, null=True)  # Field name made lowercase.
-    fieldbool18 = models.IntegerField(db_column='FieldBool18', blank=True, null=True)  # Field name made lowercase.
-    fieldbool19 = models.IntegerField(db_column='FieldBool19', blank=True, null=True)  # Field name made lowercase.
-    fieldbool20 = models.IntegerField(db_column='FieldBool20', blank=True, null=True)  # Field name made lowercase.
-    fieldint1 = models.SmallIntegerField(db_column='FieldInt1', blank=True, null=True)  # Field name made lowercase.
-    fieldint2 = models.SmallIntegerField(db_column='FieldInt2', blank=True, null=True)  # Field name made lowercase.
-    fieldint3 = models.SmallIntegerField(db_column='FieldInt3', blank=True, null=True)  # Field name made lowercase.
-    fieldint4 = models.SmallIntegerField(db_column='FieldInt4', blank=True, null=True)  # Field name made lowercase.
-    fieldint5 = models.SmallIntegerField(db_column='FieldInt5', blank=True, null=True)  # Field name made lowercase.
-    fieldint6 = models.SmallIntegerField(db_column='FieldInt6', blank=True, null=True)  # Field name made lowercase.
-    fieldint7 = models.SmallIntegerField(db_column='FieldInt7', blank=True, null=True)  # Field name made lowercase.
-    fieldint8 = models.SmallIntegerField(db_column='FieldInt8', blank=True, null=True)  # Field name made lowercase.
-    fieldint9 = models.SmallIntegerField(db_column='FieldInt9', blank=True, null=True)  # Field name made lowercase.
-    fieldint10 = models.SmallIntegerField(db_column='FieldInt10', blank=True, null=True)  # Field name made lowercase.
-    fieldint11 = models.SmallIntegerField(db_column='FieldInt11', blank=True, null=True)  # Field name made lowercase.
-    fieldint12 = models.SmallIntegerField(db_column='FieldInt12', blank=True, null=True)  # Field name made lowercase.
-    fieldint13 = models.SmallIntegerField(db_column='FieldInt13', blank=True, null=True)  # Field name made lowercase.
-    fieldint14 = models.SmallIntegerField(db_column='FieldInt14', blank=True, null=True)  # Field name made lowercase.
-    fieldint15 = models.SmallIntegerField(db_column='FieldInt15', blank=True, null=True)  # Field name made lowercase.
-    fieldint16 = models.SmallIntegerField(db_column='FieldInt16', blank=True, null=True)  # Field name made lowercase.
-    fieldint17 = models.SmallIntegerField(db_column='FieldInt17', blank=True, null=True)  # Field name made lowercase.
-    fieldint18 = models.SmallIntegerField(db_column='FieldInt18', blank=True, null=True)  # Field name made lowercase.
-    fieldint19 = models.SmallIntegerField(db_column='FieldInt19', blank=True, null=True)  # Field name made lowercase.
-    fieldint20 = models.SmallIntegerField(db_column='FieldInt20', blank=True, null=True)  # Field name made lowercase.
-    fieldlong1 = models.IntegerField(db_column='FieldLong1', blank=True, null=True)  # Field name made lowercase.
-    fieldlong2 = models.IntegerField(db_column='FieldLong2', blank=True, null=True)  # Field name made lowercase.
-    fieldlong3 = models.IntegerField(db_column='FieldLong3', blank=True, null=True)  # Field name made lowercase.
-    fieldlong4 = models.IntegerField(db_column='FieldLong4', blank=True, null=True)  # Field name made lowercase.
-    fieldlong5 = models.IntegerField(db_column='FieldLong5', blank=True, null=True)  # Field name made lowercase.
-    fieldlong6 = models.IntegerField(db_column='FieldLong6', blank=True, null=True)  # Field name made lowercase.
-    fieldlong7 = models.IntegerField(db_column='FieldLong7', blank=True, null=True)  # Field name made lowercase.
-    fieldlong8 = models.IntegerField(db_column='FieldLong8', blank=True, null=True)  # Field name made lowercase.
-    fieldtext255a = models.CharField(db_column='FieldText255A', max_length=255, blank=True,
-                                     null=True)  # Field name made lowercase.
-    fieldtext255b = models.CharField(db_column='FieldText255B', max_length=255, blank=True,
-                                     null=True)  # Field name made lowercase.
-    fieldtext255c = models.CharField(db_column='FieldText255C', max_length=255, blank=True,
-                                     null=True)  # Field name made lowercase.
-    fieldtext255d = models.CharField(db_column='FieldText255D', max_length=255, blank=True,
-                                     null=True)  # Field name made lowercase.
-    fieldtext255e = models.CharField(db_column='FieldText255E', max_length=255, blank=True,
-                                     null=True)  # Field name made lowercase.
-    fieldtext255f = models.CharField(db_column='FieldText255F', max_length=255, blank=True,
-                                     null=True)  # Field name made lowercase.
-    fieldtext255g = models.CharField(db_column='FieldText255G', max_length=255, blank=True,
-                                     null=True)  # Field name made lowercase.
-    fieldtext255h = models.CharField(db_column='FieldText255H', max_length=255, blank=True,
-                                     null=True)  # Field name made lowercase.
-    fieldtext1000a = models.CharField(db_column='FieldText1000A', max_length=1000, blank=True,
-                                      null=True)  # Field name made lowercase.
-    fieldtext1000b = models.CharField(db_column='FieldText1000B', max_length=1000, blank=True,
-                                      null=True)  # Field name made lowercase.
-    fieldtext1000c = models.CharField(db_column='FieldText1000C', max_length=1000, blank=True,
-                                      null=True)  # Field name made lowercase.
-    fieldtext1000d = models.CharField(db_column='FieldText1000D', max_length=1000, blank=True,
-                                      null=True)  # Field name made lowercase.
-    fieldtext1000e = models.CharField(db_column='FieldText1000E', max_length=1000, blank=True,
-                                      null=True)  # Field name made lowercase.
-    fieldtext1000f = models.CharField(db_column='FieldText1000F', max_length=1000, blank=True,
-                                      null=True)  # Field name made lowercase.
-    fieldtext1000g = models.CharField(db_column='FieldText1000G', max_length=1000, blank=True,
-                                      null=True)  # Field name made lowercase.
-    fieldtext1000h = models.CharField(db_column='FieldText1000H', max_length=1000, blank=True,
-                                      null=True)  # Field name made lowercase.
-    fieldtext1000i = models.CharField(db_column='FieldText1000I', max_length=1000, blank=True,
-                                      null=True)  # Field name made lowercase.
-    fieldtext1000j = models.CharField(db_column='FieldText1000J', max_length=1000, blank=True,
-                                      null=True)  # Field name made lowercase.
+        db_table = "Version"
+        unique_together = (("school_id", "schoolyear_id", "version_id"),)
+
+
+class Views(models.Model, PureDjangoModel):
+    school_id = models.IntegerField(
+        db_column="SCHOOL_ID", primary_key=True
+    )  # Field name made lowercase.
+    schoolyear_id = models.IntegerField(db_column="SCHOOLYEAR_ID")  # Field name made lowercase.
+    version_id = models.SmallIntegerField(db_column="VERSION_ID")  # Field name made lowercase.
+    type = models.SmallIntegerField(db_column="Type")  # Field name made lowercase.
+    views_id = models.IntegerField(db_column="VIEWS_ID")  # Field name made lowercase.
+    owner = models.SmallIntegerField(db_column="Owner")  # Field name made lowercase.
+    counter = models.IntegerField(
+        db_column="Counter", blank=True, null=True
+    )  # Field name made lowercase.
+    user_id = models.SmallIntegerField(
+        db_column="USER_ID", blank=True, null=True
+    )  # Field name made lowercase.
+    deleted = models.IntegerField(
+        db_column="Deleted", blank=True, null=True
+    )  # Field name made lowercase.
+    sortid = models.IntegerField(
+        db_column="SortId", blank=True, null=True
+    )  # Field name made lowercase.
+    window = models.CharField(
+        db_column="Window", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    typem = models.CharField(
+        db_column="TypeM", max_length=2, blank=True, null=True
+    )  # Field name made lowercase.
+    fieldbool1 = models.IntegerField(
+        db_column="FieldBool1", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldbool2 = models.IntegerField(
+        db_column="FieldBool2", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldbool3 = models.IntegerField(
+        db_column="FieldBool3", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldbool4 = models.IntegerField(
+        db_column="FieldBool4", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldbool5 = models.IntegerField(
+        db_column="FieldBool5", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldbool6 = models.IntegerField(
+        db_column="FieldBool6", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldbool7 = models.IntegerField(
+        db_column="FieldBool7", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldbool8 = models.IntegerField(
+        db_column="FieldBool8", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldbool9 = models.IntegerField(
+        db_column="FieldBool9", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldbool10 = models.IntegerField(
+        db_column="FieldBool10", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldbool11 = models.IntegerField(
+        db_column="FieldBool11", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldbool12 = models.IntegerField(
+        db_column="FieldBool12", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldbool13 = models.IntegerField(
+        db_column="FieldBool13", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldbool14 = models.IntegerField(
+        db_column="FieldBool14", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldbool15 = models.IntegerField(
+        db_column="FieldBool15", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldbool16 = models.IntegerField(
+        db_column="FieldBool16", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldbool17 = models.IntegerField(
+        db_column="FieldBool17", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldbool18 = models.IntegerField(
+        db_column="FieldBool18", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldbool19 = models.IntegerField(
+        db_column="FieldBool19", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldbool20 = models.IntegerField(
+        db_column="FieldBool20", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldint1 = models.SmallIntegerField(
+        db_column="FieldInt1", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldint2 = models.SmallIntegerField(
+        db_column="FieldInt2", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldint3 = models.SmallIntegerField(
+        db_column="FieldInt3", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldint4 = models.SmallIntegerField(
+        db_column="FieldInt4", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldint5 = models.SmallIntegerField(
+        db_column="FieldInt5", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldint6 = models.SmallIntegerField(
+        db_column="FieldInt6", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldint7 = models.SmallIntegerField(
+        db_column="FieldInt7", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldint8 = models.SmallIntegerField(
+        db_column="FieldInt8", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldint9 = models.SmallIntegerField(
+        db_column="FieldInt9", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldint10 = models.SmallIntegerField(
+        db_column="FieldInt10", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldint11 = models.SmallIntegerField(
+        db_column="FieldInt11", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldint12 = models.SmallIntegerField(
+        db_column="FieldInt12", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldint13 = models.SmallIntegerField(
+        db_column="FieldInt13", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldint14 = models.SmallIntegerField(
+        db_column="FieldInt14", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldint15 = models.SmallIntegerField(
+        db_column="FieldInt15", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldint16 = models.SmallIntegerField(
+        db_column="FieldInt16", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldint17 = models.SmallIntegerField(
+        db_column="FieldInt17", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldint18 = models.SmallIntegerField(
+        db_column="FieldInt18", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldint19 = models.SmallIntegerField(
+        db_column="FieldInt19", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldint20 = models.SmallIntegerField(
+        db_column="FieldInt20", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldlong1 = models.IntegerField(
+        db_column="FieldLong1", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldlong2 = models.IntegerField(
+        db_column="FieldLong2", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldlong3 = models.IntegerField(
+        db_column="FieldLong3", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldlong4 = models.IntegerField(
+        db_column="FieldLong4", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldlong5 = models.IntegerField(
+        db_column="FieldLong5", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldlong6 = models.IntegerField(
+        db_column="FieldLong6", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldlong7 = models.IntegerField(
+        db_column="FieldLong7", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldlong8 = models.IntegerField(
+        db_column="FieldLong8", blank=True, null=True
+    )  # Field name made lowercase.
+    fieldtext255a = models.CharField(
+        db_column="FieldText255A", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    fieldtext255b = models.CharField(
+        db_column="FieldText255B", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    fieldtext255c = models.CharField(
+        db_column="FieldText255C", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    fieldtext255d = models.CharField(
+        db_column="FieldText255D", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    fieldtext255e = models.CharField(
+        db_column="FieldText255E", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    fieldtext255f = models.CharField(
+        db_column="FieldText255F", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    fieldtext255g = models.CharField(
+        db_column="FieldText255G", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    fieldtext255h = models.CharField(
+        db_column="FieldText255H", max_length=255, blank=True, null=True
+    )  # Field name made lowercase.
+    fieldtext1000a = models.CharField(
+        db_column="FieldText1000A", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    fieldtext1000b = models.CharField(
+        db_column="FieldText1000B", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    fieldtext1000c = models.CharField(
+        db_column="FieldText1000C", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    fieldtext1000d = models.CharField(
+        db_column="FieldText1000D", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    fieldtext1000e = models.CharField(
+        db_column="FieldText1000E", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    fieldtext1000f = models.CharField(
+        db_column="FieldText1000F", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    fieldtext1000g = models.CharField(
+        db_column="FieldText1000G", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    fieldtext1000h = models.CharField(
+        db_column="FieldText1000H", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    fieldtext1000i = models.CharField(
+        db_column="FieldText1000I", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
+    fieldtext1000j = models.CharField(
+        db_column="FieldText1000J", max_length=1000, blank=True, null=True
+    )  # Field name made lowercase.
 
     class Meta:
         managed = False
-        db_table = 'Views'
-        unique_together = (('school_id', 'schoolyear_id', 'version_id', 'type', 'views_id', 'owner'),)
+        db_table = "Views"
+        unique_together = (
+            ("school_id", "schoolyear_id", "version_id", "type", "views_id", "owner"),
+        )
diff --git a/aleksis/apps/untis/parse.py b/aleksis/apps/untis/parse.py
deleted file mode 100644
index 630f1844c7c56c783020637c670b566694a3dfca..0000000000000000000000000000000000000000
--- a/aleksis/apps/untis/parse.py
+++ /dev/null
@@ -1,184 +0,0 @@
-from dashboard import caches
-
-from .api import *
-from .api_helper import untis_split_third
-
-from .drive import drive
-
-
-class Lesson(object):
-    def __init__(self):
-        self.filled = False
-        self.id = None
-        self.elements = []
-        self.times = []
-
-    def add_element(self, teacher, subject, rooms=[], classes=[]):
-        el = LessonElement()
-        el.create(teacher, subject, rooms, classes)
-        self.elements.append(el)
-
-    def add_time(self, day, hour, rooms=[]):
-        el = LessonTime()
-        el.create(day, hour, rooms)
-        self.times.append(el)
-
-    def create(self, raw_lesson, drive):
-        self.filled = True
-
-        # Split data (,)
-        lesson_id = raw_lesson.lesson_id
-        self.id = lesson_id
-        raw_lesson_data = raw_lesson.lessonelement1.split(",")
-        raw_time_data = raw_lesson.lesson_tt.split(",")
-
-        rtd2 = []
-        for el in raw_time_data:
-            rtd2.append(el.split("~"))
-
-        # print(rtd2)
-
-        for el in rtd2:
-            day = int(el[1])
-            hour = int(el[2])
-            room_ids = untis_split_third(el[3], conv=int)
-
-            rooms = []
-            for room_id in room_ids:
-                r = drive["rooms"][room_id]
-                rooms.append(r)
-
-            self.add_time(day, hour, rooms)
-
-        # print(raw_lesson_data)
-        # print(raw_time_data)
-
-        # Split data more (~)
-        rld2 = []
-        for el in raw_lesson_data:
-            rld2.append(el.split("~"))
-
-        # print(rld2)
-
-        for i, el in enumerate(rld2):
-            teacher_id = int(el[0])
-            subject_id = int(el[2])
-            class_ids = untis_split_third(el[17], conv=int)
-            # print("TEACHER – ", teacher_id, "; SUBJECT – ", subject_id, "; ROOMS – ", room_ids, "; CLASSES – ",
-            #       class_ids)
-
-            if teacher_id != 0:
-                teacher = drive["teachers"][teacher_id]
-            else:
-                teacher = None
-
-            if subject_id != 0:
-                subject = drive["subjects"][subject_id]
-            else:
-                subject = None
-
-            rooms = []
-
-            classes = []
-            for class_id in class_ids:
-                c = drive["classes"][class_id]
-                classes.append(c)
-
-            # print("TEACHER – ", teacher, "; SUBJECT – ", subject, "; ROOMS – ", rooms,
-            #       "; CLASSES – ", classes)
-
-            self.add_element(teacher, subject, rooms, classes)
-
-
-class LessonElement(object):
-    def __init__(self):
-        self.teacher = None
-        self.subject = None
-        self.rooms = []
-        self.classes = []
-
-    def create(self, teacher, subject, rooms=[], classes=[]):
-        self.teacher = teacher
-        self.subject = subject
-        self.rooms = rooms
-        self.classes = classes
-
-
-class LessonTime(object):
-    def __init__(self):
-        self.hour = None
-        self.day = None
-        self.rooms = []
-
-    def create(self, day, hour, rooms=[]):
-        self.day = day
-        self.hour = hour
-        self.rooms = rooms
-
-
-def parse(force_update=False):
-    global drive
-
-    cached = caches.PARSED_LESSONS_CACHE.get()
-    if cached is not False and not force_update:
-        # print("Lessons come from cache")
-        return cached
-    lessons = []
-
-    # Load lessons from Django ORM
-    raw_lessons = get_raw_lessons()
-
-    for raw_lesson in raw_lessons:
-
-        if raw_lesson.lesson_tt and raw_lesson.lessonelement1:
-            # Create object
-            lesson_obj = Lesson()
-            lesson_obj.create(raw_lesson, drive)
-
-            lessons.append(lesson_obj)
-
-    # print("Lesson cache was refreshed")
-    caches.PARSED_LESSONS_CACHE.update(lessons)
-
-    return lessons
-
-
-def get_lesson_by_id(id):
-    global drive
-    lesson = Lesson()
-    raw_lesson = run_one(models.Lesson.objects, filter_term=True).get(lesson_id=id)
-    lesson.create(raw_lesson, drive)
-    return lesson
-
-
-def get_lesson_element_by_id_and_teacher(lesson_id, teacher, hour=None, weekday=None):
-    try:
-        lesson = get_lesson_by_id(lesson_id)
-    except Exception:
-        return None, None
-    el = None
-    i = 0
-
-    if teacher is not None:
-        for i, element in enumerate(lesson.elements):
-            if element.teacher is not None:
-                if element.teacher.id == teacher.id:
-                    el = element
-                    break
-    elif len(lesson.elements) > 0:
-        el = lesson.elements[0]
-    else:
-        el = None
-
-    t = None
-    for time in lesson.times:
-        if time.day == weekday and time.hour == hour:
-            t = time
-
-    room = None
-    if t is not None and len(t.rooms) > i:
-        room = t.rooms[i]
-
-    if el is not None:
-        return el, room
-    return None, None
diff --git a/aleksis/apps/untis/plan.py b/aleksis/apps/untis/plan.py
deleted file mode 100644
index 2c2c43cc6575a1ea96ebd594b9917dd85fdc6602..0000000000000000000000000000000000000000
--- a/aleksis/apps/untis/plan.py
+++ /dev/null
@@ -1,247 +0,0 @@
-import datetime
-
-from django.utils import timezone
-
-from dashboard import plan_caches
-from schoolapps import settings
-from schoolapps.settings import LESSONS
-from untisconnect.api import TYPE_CLASS, TYPE_TEACHER, TYPE_ROOM
-from untisconnect.api import format_classes, get_today_holidays
-from untisconnect.datetimeutils import format_lesson_time
-from untisconnect.events import get_all_events_by_date
-from untisconnect.parse import parse
-from untisconnect.sub import get_substitutions_by_date_as_dict, TYPE_CANCELLATION, generate_event_table
-
-
-class LessonContainer(object):
-    """
-    Needed for Django template because template language does not support dictionaries
-    Saves the time object and the lesson elements
-    """
-
-    def __init__(self, ):
-        self.time = None
-        self.elements = []
-
-    def set_time(self, time):
-        self.time = time
-
-    def append(self, element):
-        self.elements.append(element)
-
-
-class LessonElementContainer(object):
-    """
-    Needed for Django template because template language does not support dictionaries
-    Saves the lesson element object and the room (from time object)
-    """
-
-    def __init__(self, element, room, substitution=None):
-        self.element = element
-        self.room = room
-        self.substitution = substitution
-        self.is_old = False  #
-
-        self.is_event = substitution["table"].is_event if substitution is not None else False
-        if self.element is not None:
-            self.classes_formatted = format_classes(self.element.classes)
-
-
-def parse_lesson_times():
-    times = []
-    for i, t in enumerate(LESSONS):
-        start_split = t[0].split(":")
-        start_time = timezone.datetime(year=2000, day=1, month=1, hour=int(start_split[0]), minute=int(start_split[1]))
-        end_time = start_time + timezone.timedelta(minutes=45)
-        times.append({
-            "number": i + 1,
-            "number_format": t[1],
-            "start": start_time,
-            "start_format": format_lesson_time(start_time),
-            "end": end_time,
-            "end_format": format_lesson_time(end_time)
-        })
-    return times
-
-
-def get_plan(type, id, smart=False, monday_of_week=None, force_update=False):
-    """ Generates a plan for type (TYPE_TEACHER, TYPE_CLASS, TYPE_ROOM) and a id of the teacher (class, room)"""
-    # Check cache
-    cache = plan_caches.get_cache_for_plan(type, id, smart, monday_of_week)
-
-    cached = cache.get()
-    # print(cached)
-    if cached is not False and not force_update:
-        # print("Plan come from cache", cache.id)
-        return cached
-
-    # Get parsed lessons
-    lessons = parse()
-    times_parsed = parse_lesson_times()
-
-    hols_for_weekdays = []
-
-    if smart:
-        week_days = [monday_of_week + datetime.timedelta(days=i) for i in range(5)]
-        subs_for_weekday = []
-        for week_day in week_days:
-            subs = get_substitutions_by_date_as_dict(week_day)
-            subs_for_weekday.append(subs)
-
-            hols = get_today_holidays(week_day)
-            hols_for_weekdays.append(hols)
-
-    # Init plan array
-    plan = []
-    already_added_subs_as_ids = []
-
-    # Fill plan array with LessonContainers (show upside), WIDTH and HEIGHT are defined by Django settings
-    for hour_idx in range(settings.TIMETABLE_HEIGHT):
-        plan.append(([], times_parsed[hour_idx] if len(times_parsed) > hour_idx else None))
-        for day_idx in range(settings.TIMETABLE_WIDTH):
-            plan[hour_idx][0].append(LessonContainer())
-
-    # Fill plan with lessons
-    for lesson in lessons:
-        for i, element in enumerate(lesson.elements):
-
-            # Check if the lesson element is important for that plan (look by type and id)
-            found = False
-            if type == TYPE_CLASS:
-                for lclass in element.classes:
-                    if lclass.id == id:
-                        found = True
-
-            elif type == TYPE_TEACHER:
-                if element.teacher:
-                    if element.teacher.id == id:
-                        found = True
-
-            elif type == TYPE_ROOM:
-                for time in lesson.times:
-                    for j, lroom in enumerate(time.rooms):
-                        if lroom.id == id:
-                            found = True
-
-            # If the lesson element is important then add it to plan array
-            if found:
-                for time in lesson.times:  # Go for every time the lesson is thought
-                    # Find matching rooms
-                    room_index = None
-                    for j, lroom in enumerate(time.rooms):
-                        if lroom.id == id:
-                            room_index = j
-
-                    # Add the time object to the matching LessonContainer on the right position in the plan array
-                    plan[time.hour - 1][0][time.day - 1].set_time(time)
-
-                    # Check if there is an room for this time and lesson
-                    try:
-                        room = time.rooms[i]
-                    except IndexError:
-                        room = None
-
-                    # Smart Plan: Check if there substitutions for this lesson
-                    matching_sub = None
-
-                    if smart:
-                        # If a sub with matching lesson id and day exists
-                        if subs_for_weekday[time.day - 1].get(lesson.id, None) is not None:
-                            for sub in subs_for_weekday[time.day - 1][lesson.id]:
-                                # ... check whether the sub has the right old teacher and the right lesson number
-                                if sub["sub"].teacher_old is not None and element.teacher is not None:
-                                    if sub["sub"].teacher_old.id == element.teacher.id and \
-                                            sub["sub"].lesson == time.hour and sub["table"].is_event is False:
-                                        matching_sub = sub
-
-                        # If the lesson matches, add it to the list of already added subs
-                        if matching_sub:
-                            already_added_subs_as_ids.append(matching_sub["sub"].id)
-
-                    # Create a LessonElementContainer with room and lesson element
-                    element_container = LessonElementContainer(element, room, substitution=matching_sub)
-
-                    # Important for rooms: Check if the current room is the old room
-                    if smart and matching_sub is not None:
-                        if matching_sub["sub"].room_new is not None:
-                            if matching_sub["sub"].room_old is not None:
-                                if matching_sub["sub"].room_old != matching_sub["sub"].room_new:
-                                    element_container.is_old = True
-                            else:
-                                element_container.is_old = True
-
-                                # The rooms is empty, too, if the lesson is canceled
-                        if matching_sub["sub"].type == TYPE_CANCELLATION:
-                            element_container.is_old = True
-
-                    # Check for holidays
-                    if smart and hols_for_weekdays[time.day - 1]:
-                        element_container.is_hol = True
-                        element_container.element.holiday_reason = hols_for_weekdays[time.day - 1][0].name
-
-                    if type != TYPE_ROOM or i == room_index:
-                        # Add this container object to the LessonContainer object in the plan array
-                        plan[time.hour - 1][0][time.day - 1].append(element_container)
-
-    # Now check subs which were not in this plan before
-    if smart:
-        for i, week_day in enumerate(week_days):
-            subs_for_this_weekday = subs_for_weekday[i]
-            for lesson_id, subs in subs_for_this_weekday.items():
-                for sub in subs:
-
-                    found = False
-                    room = sub["sub"].room_old
-                    if type == TYPE_CLASS:
-                        if sub["sub"].classes:
-                            for _class in sub["sub"].classes:
-                                if _class.id == id:
-                                    found = True
-                    elif type == TYPE_TEACHER:
-                        if sub["sub"].teacher_new:
-                            if sub["sub"].teacher_new.id == id:
-                                found = True
-
-                        if sub["sub"].teacher_old:
-                            if sub["sub"].teacher_old.id == id:
-                                found = True
-
-                    elif type == TYPE_ROOM:
-                        if sub["sub"].room_new:
-                            if sub["sub"].room_new.id == id:
-                                found = True
-                    if found:
-                        element_container = LessonElementContainer(sub["sub"].lesson_element, room, substitution=sub)
-                        if sub["sub"].id not in already_added_subs_as_ids:
-                            plan[sub["sub"].lesson - 1][0][i].append(element_container)
-
-            # Get all events for this week day
-            events = get_all_events_by_date(week_day)
-            event_table = generate_event_table(events)
-
-            for event in event_table:
-                found = False
-                # Check if event is relevant for type and id
-                if type == TYPE_CLASS:
-                    for _class in event.event.classes:
-                        if _class.id == id:
-                            found = True
-                elif type == TYPE_TEACHER:
-                    for teacher in event.teachers:
-                        if teacher.id == id:
-                            found = True
-
-                elif type == TYPE_ROOM:
-                    for room in event.rooms:
-                        if room.id == id:
-                            found = True
-
-                if found:
-                    # Add event to plan
-                    element_container = LessonElementContainer(None, None,
-                                                               substitution={"sub": None, "table": event})
-                    for j in range(event.event.from_lesson - 1, event.event.to_lesson):
-                        plan[j][0][i].append(element_container)
-
-    cache.update((plan, hols_for_weekdays))
-    return plan, hols_for_weekdays
diff --git a/aleksis/apps/untis/settings.py b/aleksis/apps/untis/settings.py
new file mode 100644
index 0000000000000000000000000000000000000000..17fa5ad50490f8566069daa62ddf794aecee5682
--- /dev/null
+++ b/aleksis/apps/untis/settings.py
@@ -0,0 +1,62 @@
+from django.utils.translation import gettext_lazy as _
+
+from aleksis.core.settings import _settings
+
+DATABASES = {
+    "untis": {
+        "ENGINE": "django.db.backends.mysql",
+        "NAME": _settings.get("untis.database.name", "untis"),
+        "USER": _settings.get("untis.database.user", "untis"),
+        "PASSWORD": _settings.get("untis.database.password", None),
+        "HOST": _settings.get("untis.database.host", "127.0.0.1"),
+        "PORT": _settings.get("untis.database.port", 3306),
+    }
+}
+
+CONSTANCE_CONFIG = {
+    "UNTIS_IMPORT_MYSQL_UPDATE_SUBJECTS": (True, _("Update values of existing subjects?"), bool,),
+    "UNTIS_IMPORT_MYSQL_UPDATE_PERSONS_SHORT_NAME": (
+        False,
+        _("Update short name of existing persons?"),
+        bool,
+    ),
+    "UNTIS_IMPORT_MYSQL_UPDATE_PERSONS_NAME": (
+        False,
+        _("Update first and last name of existing persons?"),
+        bool,
+    ),
+    "UNTIS_IMPORT_MYSQL_UPDATE_GROUPS_SHORT_NAME": (
+        False,
+        _("Update short name of existing groups?"),
+        bool,
+    ),
+    "UNTIS_IMPORT_MYSQL_UPDATE_GROUPS_NAME": (False, _("Update name of existing groups?"), bool,),
+    "UNTIS_IMPORT_MYSQL_UPDATE_GROUPS_OVERWRITE_OWNERS": (
+        False,
+        _("Overwrite existing owners?"),
+        bool,
+    ),
+    "UNTIS_IMPORT_MYSQL_UPDATE_ROOMS_NAME": (True, _("Update name of existing rooms?"), bool,),
+    "UNTIS_IMPORT_MYSQL_UPDATE_SUPERVISION_AREAS": (
+        True,
+        _("Update values of existing supervision areas?"),
+    ),
+    "UNTIS_IMPORT_MYSQL_USE_COURSE_GROUPS": (
+        True,
+        _("Build or search course groups for every course instead of setting classes as groups."),
+    ),
+}
+
+CONSTANCE_CONFIG_FIELDSETS = {
+    "UNTIS import via MySQL: Common Settings": (
+        "UNTIS_IMPORT_MYSQL_UPDATE_SUBJECTS",
+        "UNTIS_IMPORT_MYSQL_UPDATE_PERSONS_SHORT_NAME",
+        "UNTIS_IMPORT_MYSQL_UPDATE_PERSONS_NAME",
+        "UNTIS_IMPORT_MYSQL_UPDATE_GROUPS_SHORT_NAME",
+        "UNTIS_IMPORT_MYSQL_UPDATE_GROUPS_NAME",
+        "UNTIS_IMPORT_MYSQL_UPDATE_GROUPS_OVERWRITE_OWNERS",
+        "UNTIS_IMPORT_MYSQL_UPDATE_ROOMS_NAME",
+        "UNTIS_IMPORT_MYSQL_UPDATE_SUPERVISION_AREAS",
+        "UNTIS_IMPORT_MYSQL_USE_COURSE_GROUPS",
+    ),
+}
diff --git a/aleksis/apps/untis/sub.py b/aleksis/apps/untis/sub.py
deleted file mode 100644
index 7b9236df619ead2b012683c41c6bb96be969d5f4..0000000000000000000000000000000000000000
--- a/aleksis/apps/untis/sub.py
+++ /dev/null
@@ -1,341 +0,0 @@
-from django.utils import timezone
-from django.db.models import Q
-
-from untisconnect import models
-from untisconnect.api import run_default_filter, row_by_row_helper, format_classes, get_all_absences_by_date, \
-    TYPE_TEACHER
-from untisconnect.api_helper import run_using, untis_split_first, untis_date_to_date, date_to_untis_date
-from untisconnect.parse import get_lesson_element_by_id_and_teacher
-from untisconnect.drive import drive
-
-TYPE_SUBSTITUTION = 0
-TYPE_CANCELLATION = 1
-TYPE_TEACHER_CANCELLATION = 2
-TYPE_CORRIDOR = 3
-
-
-def parse_type_of_untis_flags(flags):
-    """
-    Get type of substitution by parsing UNTIS flags
-    :param flags: UNTIS flags (string)
-    :return: type (int, constants are provided)
-    """
-
-    type_ = TYPE_SUBSTITUTION
-    if "E" in flags:
-        type_ = TYPE_CANCELLATION
-    elif "F" in flags:
-        type_ = TYPE_TEACHER_CANCELLATION
-    return type_
-
-
-class Substitution(object):
-    def __init__(self):
-        self.filled = False
-        self.id = None
-        self.lesson_id = None
-        self.date = None
-        self.lesson = None
-        self.type = None
-        self.text = None
-        self.teacher_old = None
-        self.teacher_new = None
-        self.subject_old = None
-        self.subject_new = None
-        self.room_old = None
-        self.room_new = None
-        self.corridor = None
-        self.classes = None
-        self.lesson_element = None
-        self.lesson_time = None
-
-    def __str__(self):
-        if self.filled:
-            return self.id
-        else:
-            return "Unbekannt"
-
-    def create(self, db_obj):
-        self.filled = True
-
-        # Metadata
-        self.id = db_obj.substitution_id
-        self.lesson_id = db_obj.lesson_idsubst
-        self.date = untis_date_to_date(db_obj.date)
-        self.lesson = db_obj.lesson
-        self.type = parse_type_of_untis_flags(db_obj.flags)
-        self.text = db_obj.text
-
-        # Teacher
-        if db_obj.teacher_idlessn != 0:
-            self.teacher_old = drive["teachers"][db_obj.teacher_idlessn]
-
-        # print(self.teacher_new, self.teacher_old, self.lesson_id, self.id)
-        if db_obj.teacher_idsubst != 0:
-            self.teacher_new = drive["teachers"][db_obj.teacher_idsubst]
-
-            if self.teacher_old is not None and self.teacher_new.id == self.teacher_old.id:
-                self.teacher_new = None
-
-            if self.teacher_old is None and self.teacher_new is not None:
-                self.teacher_old = self.teacher_new
-                self.teacher_new = None
-
-        # print(self.teacher_old, self.teacher_new)
-
-        self.lesson_element, self.room_old = get_lesson_element_by_id_and_teacher(self.lesson_id, self.teacher_old,
-                                                                                  self.lesson, self.date.weekday() + 1)
-
-        # Subject
-        self.subject_old = self.lesson_element.subject if self.lesson_element is not None else None
-        if db_obj.subject_idsubst != 0:
-            self.subject_new = drive["subjects"][db_obj.subject_idsubst]
-
-            if self.subject_old is not None and self.subject_old.id == self.subject_new.id:
-                self.subject_new = None
-
-        # Room
-        if db_obj.room_idsubst != 0:
-            self.room_new = drive["rooms"][db_obj.room_idsubst]
-
-            if self.room_old is not None and self.room_old.id == self.room_new.id:
-                self.room_new = None
-
-        # Supervisement
-        if db_obj.corridor_id != 0:
-            self.corridor = drive["corridors"][db_obj.corridor_id]
-            self.type = TYPE_CORRIDOR
-
-        # Classes
-        self.classes = []
-        class_ids = untis_split_first(db_obj.classids, conv=int)
-
-        for id in class_ids:
-            self.classes.append(drive["classes"][id])
-
-
-def substitutions_sorter(sub):
-    """
-    Sorting helper (sort function) for substitutions
-    :param sub: Substitution to sort
-    :return: A string for sorting by
-    """
-
-    # First, sort by class
-    sort_by = sub.classes
-
-    # If the sub hasn't got a class, then put it to the bottom
-    if sort_by == "":
-        sort_by = "Z"
-
-    # Second, sort by lesson number
-    sort_by += str(sub.lesson)
-
-    return sort_by
-
-
-class SubRow(object):
-    def __init__(self):
-        self.sub = None
-        self.color = "black"
-        self.css_class = "black-text"
-        self.lesson = ""
-        self.classes = ""
-        self.teacher = ""
-        self.teacher_full = ""
-        self.teachers = []  # Only for events
-        self.rooms = []  # Only for events
-        self.absences = []  # Only for events
-        self.subject = ""
-        self.subject_full = ""
-        self.room = ""
-        self.room_full = ""
-        self.text = ""
-        self.extra = ""
-        self.is_event = False
-        self.event = None
-
-
-def generate_event_table(events):
-    sub_rows = []
-    for event in events:
-        sub_row = SubRow()
-        sub_row.is_event = True
-        sub_row.event = event
-
-        if event.from_lesson != event.to_lesson:
-            sub_row.lesson = "{}.-{}.".format(event.from_lesson, event.to_lesson)
-        else:
-            sub_row.lesson = "{}.".format(event.from_lesson)
-
-        sub_row.classes = format_classes(event.classes)
-        sub_row.teachers = event.teachers
-        sub_row.rooms = event.rooms
-        sub_row.absences = event.absences
-
-        sub_row.color = "purple"
-        sub_row.text = event.text
-
-        sub_rows.append(sub_row)
-
-    return sub_rows
-
-
-def generate_sub_table(subs, events=[]):
-    """
-    Parse substitutions and prepare than for displaying in plan
-    :param subs: Substitutions to parse
-    :return: A list of SubRow objects
-    """
-
-    sub_rows = []
-    for sub in subs:
-        sub_row = SubRow()
-        sub_row.sub = sub
-
-        # Color
-        sub_row.color = "black"
-        if sub.type == 1 or sub.type == 2:
-            sub_row.css_class = "green-text"
-            sub_row.color = "green"
-        elif sub.type == 3:
-            sub_row.css_class = "blue-text"
-            sub_row.color = "blue"
-
-        #  Format lesson
-        if sub.type == 3:
-            sub_row.lesson = "{}./{}.".format(sub.lesson - 1, sub.lesson)
-        else:
-            sub_row.lesson = "{}.".format(sub.lesson)
-
-        # Classes
-        sub_row.classes = format_classes(sub.classes)
-
-        # Hint text
-        sub_row.text = sub.text
-
-        # Badge
-        sub_row.badge = None
-        if sub.type == 1:
-            sub_row.badge = "Schüler frei"
-        elif sub.type == 2:
-            sub_row.badge = "Lehrer frei"
-
-        # Debugging information
-        sub_row.extra = "{} {}".format(sub.id, sub.lesson_id)
-
-        sub_rows.append(sub_row)
-
-    sub_rows += generate_event_table(events)
-    sub_rows.sort(key=substitutions_sorter)
-
-    return sub_rows
-
-
-class HeaderInformation:
-    def __init__(self):
-        self.absences = []
-        self.missing_classes = []
-        self.affected_teachers = []
-        self.affected_classes = []
-        self.rows = []
-
-    def is_box_needed(self):
-        return len(self.absences) > 0 or len(self.missing_classes) > 0 or len(
-            self.affected_teachers) > 0 or len(self.affected_classes) > 0
-
-
-def get_header_information(subs, date, events=[]):
-    """
-    Get header information like affected teachers/classes and missing teachers/classes for a given date
-    :param date: The date as datetime object
-    :param subs: All subs for the given date
-    :return: HeaderInformation object with all kind of information
-    """
-
-    info = HeaderInformation()
-
-    # Get all affected teachers and classes
-    for sub in subs:
-        if sub.teacher_old and sub.teacher_old not in info.affected_teachers:
-            info.affected_teachers.append(sub.teacher_old)
-        if sub.teacher_new and sub.teacher_new not in info.affected_teachers:
-            info.affected_teachers.append(sub.teacher_new)
-
-        for _class in sub.classes:
-            if _class not in info.affected_classes:
-                info.affected_classes.append(_class)
-
-    for event in events:
-        for teacher in event.teachers:
-            if teacher.id not in [x.id for x in info.affected_teachers]:
-                info.affected_teachers.append(teacher)
-
-        for _class in event.classes:
-            if _class.id not in [x.id for x in info.affected_classes]:
-                info.affected_classes.append(_class)
-
-    # Get all absences that are relevant for this day
-    info.absences = get_all_absences_by_date(date)
-
-    # Format list of affected teachers
-    if info.affected_teachers:
-        joined = ", ".join(sorted([x.shortcode for x in info.affected_teachers]))
-        info.rows.append(("Betroffene Lehrkräfte", joined))
-
-    # Format list of affected classes
-    if info.affected_classes:
-        joined = ", ".join(sorted([x.name for x in info.affected_classes]))
-        info.rows.append(("Betroffene Klassen", joined))
-
-    # Format list of missing teachers (absences)
-    if info.absences:
-        elements = []
-        for absence in info.absences:
-            if absence.type != TYPE_TEACHER:
-                continue
-            if absence.is_whole_day:
-                # Teacher is missing the whole day
-                elements.append("{}".format(absence.teacher.shortcode))
-            elif absence.from_lesson == absence.to_lesson:
-                elements.append("{} ({}.)".format(absence.teacher.shortcode, absence.from_lesson))
-            else:
-                # Teacher is only missing a part of day
-                elements.append(
-                    "{} ({}.-{}.)".format(absence.teacher.shortcode, absence.from_lesson, absence.to_lesson))
-        elements.sort()
-        joined = ", ".join(elements)
-
-        info.rows.append(("Abwesende Lehrkräfte", joined))
-
-    return info
-
-
-def get_substitutions_by_date(date):
-    subs_raw = run_default_filter(
-        run_using(models.Substitution.objects.filter(date=date_to_untis_date(date), deleted=0).exclude(
-            Q(flags__contains="N") |
-            Q(flags__contains="b") |
-            Q(flags__contains="F") |
-            Q(flags__exact="g")).order_by("classids", "lesson")),
-        filter_term=False)
-
-    subs = row_by_row_helper(subs_raw, Substitution)
-    # subs.sort(key=substitutions_sorter)
-    return subs
-
-
-def get_substitutions_by_date_as_dict(date):
-    subs_raw = get_substitutions_by_date(date)
-    sub_table = generate_sub_table(subs_raw)
-    subs = {}
-    for i, sub_raw in enumerate(subs_raw):
-        if sub_raw.lesson_id not in subs.keys():
-            subs[sub_raw.lesson_id] = []
-        sub_row = None
-        for sub_item in sub_table:
-            if sub_item.sub.id == sub_raw.id:
-                sub_row = sub_item
-        subs[sub_raw.lesson_id].append({"sub": sub_raw, "table": sub_row})
-
-    return subs
diff --git a/aleksis/apps/untis/tasks.py b/aleksis/apps/untis/tasks.py
new file mode 100644
index 0000000000000000000000000000000000000000..f66078bb12a4ce1b773b0f9c827e9b9bd88fe4ba
--- /dev/null
+++ b/aleksis/apps/untis/tasks.py
@@ -0,0 +1,9 @@
+from aleksis.core.util.core_helpers import celery_optional
+
+from .util.mysql.main import untis_import_mysql as _untis_import_mysql
+
+
+@celery_optional
+def untis_import_mysql():
+    """ Celery task for import of UNTIS data from MySQL """
+    _untis_import_mysql()
diff --git a/aleksis/apps/untis/templates/untis/untis_import.html b/aleksis/apps/untis/templates/untis/xml_import.html
similarity index 72%
rename from aleksis/apps/untis/templates/untis/untis_import.html
rename to aleksis/apps/untis/templates/untis/xml_import.html
index 9f775e52cf429e485f825a0e5577092c8be96cb5..f481527c2bfc098c48c3ca205c41d4115787ffd3 100644
--- a/aleksis/apps/untis/templates/untis/untis_import.html
+++ b/aleksis/apps/untis/templates/untis/xml_import.html
@@ -4,9 +4,8 @@
 
 {% load material_form i18n %}
 
-
-{% block browser_title %}{% blocktrans %}Import Untis data{% endblocktrans %}{% endblock %}
-{% block page_title %}{% blocktrans %}Import Untis data{% endblocktrans %}{% endblock %}
+{% block browser_title %}{% blocktrans %}Import Untis data via XML{% endblocktrans %}{% endblock %}
+{% block page_title %}{% blocktrans %}Import Untis data via XML{% endblocktrans %}{% endblock %}
 
 {% block content %}
 
@@ -15,9 +14,9 @@
       Untis provides a function for exporting all data as an XML file.
     {% endblocktrans %}
   </p>
-  <div class="alert error">
+  <div class="alert warning">
     <p>
-      <i class="material-icons left">error</i>
+      <i class="material-icons left">warning</i>
       {% blocktrans %}
         Newly imported data will be valid as of tomorrow.
       {% endblocktrans %}
@@ -38,7 +37,7 @@
   <form method="post" enctype="multipart/form-data">
     {% csrf_token %}
     {% form form=upload_form %}{% endform %}
-    {% include "core/save_button.html" %}
+    {% include "core/save_button.html" with icon="import_export" caption=_("Import data") %}
   </form>
 
 {% endblock %}
diff --git a/aleksis/apps/untis/urls.py b/aleksis/apps/untis/urls.py
index 27ac3d368475d3db38d4757f066e1f405cf7fb6f..1a5119ea3c6195ab915588b2e3fd684891294b0b 100644
--- a/aleksis/apps/untis/urls.py
+++ b/aleksis/apps/untis/urls.py
@@ -3,5 +3,5 @@ from django.urls import path
 from . import views
 
 urlpatterns = [
-    path("import", views.untis_import, name="untis_import"),
+    path("import/xml/", views.xml_import, name="untis_xml_import"),
 ]
diff --git a/aleksis/apps/untis/util/mysql/importers/absences.py b/aleksis/apps/untis/util/mysql/importers/absences.py
new file mode 100644
index 0000000000000000000000000000000000000000..9527e00443a61d486291dbf60751668abaea3884
--- /dev/null
+++ b/aleksis/apps/untis/util/mysql/importers/absences.py
@@ -0,0 +1,142 @@
+import logging
+from enum import Enum
+
+from tqdm import tqdm
+
+from aleksis.apps.chronos import models as chronos_models
+
+from .... import models as mysql_models
+from ..util import (
+    TQDM_DEFAULTS,
+    get_first_period,
+    get_last_period,
+    get_term,
+    move_weekday_to_range,
+    run_default_filter,
+    untis_date_to_date,
+)
+
+logger = logging.getLogger(__name__)
+unknown_reason, _ = chronos_models.AbsenceReason.objects.get_or_create(short_name="?")
+
+
+class AbsenceType(Enum):
+    GROUP = 100
+    TEACHER = 101
+    ROOM = 102
+
+
+def import_absences(absence_reasons_ref, time_periods_ref, teachers_ref, classes_ref, rooms_ref):
+    ref = {}
+
+    # Get term
+    term = get_term()
+    term_date_start = untis_date_to_date(term.datefrom)
+    term_date_end = untis_date_to_date(term.dateto)
+
+    # Get absences
+    absences = (
+        run_default_filter(mysql_models.Absence.objects, filter_term=False)
+        .filter(datefrom__lte=term.dateto, dateto__gte=term.datefrom)
+        .order_by("absence_id")
+    )
+
+    existing_absences = []
+    for absence in tqdm(absences, desc="Import absences", **TQDM_DEFAULTS):
+        import_ref = absence.absence_id
+
+        logger.info("Import absence {}".format(import_ref))
+
+        if absence.absence_reason_id == 0:
+            reason = unknown_reason
+        else:
+            reason = absence_reasons_ref[absence.absence_reason_id]
+
+        # Build values
+        type_ = absence.typea
+        date_from = untis_date_to_date(absence.datefrom)
+        date_to = untis_date_to_date(absence.dateto)
+        period_from = absence.lessonfrom
+        period_to = absence.lessonto
+        weekday_from = date_from.weekday()
+        weekday_to = date_to.weekday()
+
+        # Check min/max weekdays
+        weekday_from = move_weekday_to_range(time_periods_ref, weekday_from)
+        weekday_to = move_weekday_to_range(time_periods_ref, weekday_to)
+
+        # Check min/max periods
+        first_period = get_first_period(time_periods_ref, weekday_from)
+        last_period = get_last_period(time_periods_ref, weekday_from)
+
+        if period_from == 0:
+            period_from = first_period
+        if period_to == 0:
+            period_to = last_period
+
+        time_period_from = time_periods_ref[weekday_from][period_from]
+        time_period_to = time_periods_ref[weekday_to][period_to]
+        comment = absence.text
+
+        group = None
+        teacher = None
+        room = None
+
+        if type_ == AbsenceType.GROUP:
+            group = classes_ref[absence.ida]
+        elif type_ == AbsenceType.TEACHER:
+            teacher = teachers_ref[absence.ida]
+        elif type == AbsenceType.ROOM:
+            room = rooms_ref[absence.ida]
+
+        new_absence, created = chronos_models.Absence.objects.get_or_create(
+            import_ref_untis=import_ref,
+            defaults={
+                "reason": reason,
+                "group": group,
+                "teacher": teacher,
+                "room": room,
+                "date_start": date_from,
+                "date_end": date_to,
+                "period_from": time_period_from,
+                "period_to": time_period_to,
+                "comment": absence.text,
+            },
+        )
+
+        if created:
+            logger.info("  New absence created")
+
+        if (
+            new_absence.reason != reason
+            or new_absence.group != group
+            or new_absence.teacher != teacher
+            or new_absence.room != room
+            or new_absence.date_start != date_from
+            or new_absence.date_end != date_to
+            or new_absence.period_from != time_period_from
+            or new_absence.period_to != time_period_to
+            or new_absence.comment != comment
+        ):
+            new_absence.reason = reason
+            new_absence.group = group
+            new_absence.teacher = teacher
+            new_absence.room = room
+            new_absence.date_start = date_from
+            new_absence.date_end = date_to
+            new_absence.period_from = time_period_from
+            new_absence.period_to = time_period_to
+            new_absence.comment = comment
+            new_absence.save()
+            logger.info("  Absence updated")
+
+        existing_absences.append(import_ref)
+        ref[import_ref] = new_absence
+
+        # Delete all no longer existing absences
+        for a in chronos_models.Absence.objects.filter(
+            date_start__lte=term_date_start, date_end__gte=term_date_end
+        ):
+            if a.import_ref_untis and a.import_ref_untis not in existing_absences:
+                logger.info("Absence {} deleted".format(a.id))
+                a.delete()
diff --git a/aleksis/apps/untis/util/mysql/importers/common_data.py b/aleksis/apps/untis/util/mysql/importers/common_data.py
new file mode 100644
index 0000000000000000000000000000000000000000..12d7a8833c5d7cb1eac838e658f543f171ef6af9
--- /dev/null
+++ b/aleksis/apps/untis/util/mysql/importers/common_data.py
@@ -0,0 +1,544 @@
+import logging
+from datetime import time
+from enum import Enum
+from typing import Dict, List
+
+from constance import config
+from tqdm import tqdm
+
+from aleksis.apps.chronos import models as chronos_models
+from aleksis.core import models as core_models
+
+from .... import models as mysql_models
+from ..util import (
+    TQDM_DEFAULTS,
+    connect_untis_fields,
+    run_default_filter,
+    untis_colour_to_hex,
+    untis_split_first,
+)
+
+logger = logging.getLogger(__name__)
+
+
+class CommonDataId(Enum):
+    PERIOD = 40
+
+
+def import_subjects() -> Dict[int, chronos_models.Subject]:
+    """ Import subjects """
+
+    subjects_ref = {}
+
+    # Get subjects
+    subjects = run_default_filter(mysql_models.Subjects.objects, filter_term=False)
+
+    for subject in tqdm(subjects, desc="Import subjects", **TQDM_DEFAULTS):
+        # Check if needed data are provided
+        if not subject.name:
+            raise RuntimeException(
+                "Subject ID {}: Cannot import subject without short name.".format(
+                    subject.subject_id
+                )
+            )
+
+        # Build values
+        short_name = subject.name[:10]
+        name = subject.longname if subject.longname else short_name
+        colour_fg = untis_colour_to_hex(subject.forecolor)
+        colour_bg = untis_colour_to_hex(subject.backcolor)
+        import_ref = subject.subject_id
+
+        logger.info("Import subject {} …".format(short_name))
+
+        # Get or create subject object by short name
+        new_subject, created = chronos_models.Subject.objects.get_or_create(
+            abbrev=short_name,
+            defaults={
+                "name": name,
+                "colour_fg": colour_fg,
+                "colour_bg": colour_bg,
+                "import_ref_untis": import_ref,
+            },
+        )
+
+        if created:
+            logger.info("  New subject created")
+
+        # Force sync
+        changed = False
+        if config.UNTIS_IMPORT_MYSQL_UPDATE_SUBJECTS and (
+            new_subject.name != name
+            or new_subject.colour_fg != colour_fg
+            or new_subject.colour_bg != colour_bg
+        ):
+            new_subject.name = name
+            new_subject.colour_fg = untis_colour_to_hex(subject.forecolor)
+            new_subject.colour_bg = untis_colour_to_hex(subject.backcolor)
+            changed = True
+
+            logger.info("  Name, foreground and background colour updated")
+
+        if new_subject.import_ref_untis != import_ref:
+            new_subject.import_ref_untis = import_ref
+            changed = True
+
+            logger.info("  Import reference updated")
+
+        if changed:
+            new_subject.save()
+
+        subjects_ref[import_ref] = new_subject
+
+    return subjects_ref
+
+
+def import_teachers() -> Dict[int, core_models.Person]:
+    """ Import teachers """
+
+    teachers_ref = {}
+
+    # Get teachers
+    teachers = run_default_filter(mysql_models.Teacher.objects)
+
+    for teacher in tqdm(teachers, desc="Import teachers", **TQDM_DEFAULTS):
+        # Check if needed data are provided
+        if not teacher.name:
+            raise RuntimeException(
+                "Teacher ID {}: Cannot import teacher without short name.".format(
+                    teacher.teacher_id
+                )
+            )
+
+        # Build values
+        short_name = teacher.name
+        first_name = teacher.firstname if teacher.firstname else "?"
+        last_name = teacher.longname if teacher.longname else teacher.name
+        import_ref = teacher.teacher_id
+
+        logger.info("Import teacher {} (as person) …".format(short_name))
+
+        new_teacher, created = core_models.Person.objects.get_or_create(
+            short_name__iexact=short_name,
+            defaults={
+                "first_name": first_name,
+                "last_name": last_name,
+                "import_ref_untis": import_ref,
+            },
+        )
+
+        if created:
+            logger.info("  New person created")
+
+        changed = False
+        if config.UNTIS_IMPORT_MYSQL_UPDATE_PERSONS_NAME and (
+            new_teacher.first_name != first_name or new_teacher.last_name != last_name
+        ):
+            new_teacher.first_name = first_name
+            new_teacher.last_name = last_name
+            changed = True
+            logger.info("  First and last name updated")
+
+        if (
+            config.UNTIS_IMPORT_MYSQL_UPDATE_PERSONS_SHORT_NAME
+            and new_teacher.short_name != short_name
+        ):
+            new_teacher.short_name = short_name
+            changed = True
+            logger.info("  Short name updated")
+
+        if new_teacher.import_ref_untis != import_ref:
+            new_teacher.import_ref_untis = import_ref
+            changed = True
+            logger.info("  Import reference updated")
+
+        if changed:
+            new_teacher.save()
+
+        teachers_ref[teacher.teacher_id] = new_teacher
+
+    return teachers_ref
+
+
+def import_classes(teachers_ref: Dict[int, core_models.Person]) -> Dict[int, core_models.Group]:
+    """ Import classes """
+
+    classes_ref = {}
+
+    # Get classes
+    course_classes = run_default_filter(mysql_models.Class.objects, filter_term=True)
+
+    for class_ in tqdm(course_classes, desc="Import classes", **TQDM_DEFAULTS):
+        # Check if needed data are provided
+        if not class_.name:
+            raise RuntimeException(
+                "Class ID {}: Cannot import class without short name.".format(class_.teacher_id)
+            )
+
+        # Build values
+        short_name = class_.name[:16]
+        name = class_.longname if class_.longname else short_name
+        teacher_ids = untis_split_first(class_.teacherids, int)
+        owners = [teachers_ref[t_id] for t_id in teacher_ids]
+        import_ref = class_.class_id
+
+        logger.info("Import class {} (as group) …".format(short_name))
+
+        new_group, created = core_models.Group.objects.get_or_create(
+            short_name__iexact=short_name, defaults={"name": name, "import_ref_untis": import_ref},
+        )
+
+        if created:
+            logger.info("  New person created")
+
+        changed = False
+
+        if (
+            config.UNTIS_IMPORT_MYSQL_UPDATE_GROUPS_SHORT_NAME
+            and new_group.short_name != short_name
+        ):
+            new_group.short_name = short_name
+            changed = True
+            logger.info("  Short name updated")
+
+        if config.UNTIS_IMPORT_MYSQL_UPDATE_GROUPS_NAME and new_group.name != name:
+            new_group.name = name
+            changed = True
+            logger.info("  Name updated")
+
+        if new_group.import_ref_untis != import_ref:
+            new_group.import_ref_untis = import_ref
+            changed = True
+            logger.info("  Import reference updated")
+
+        if changed:
+            new_group.save()
+
+        if config.UNTIS_IMPORT_MYSQL_UPDATE_GROUPS_OVERWRITE_OWNERS:
+            new_group.owners.set(owners)
+            logger.info("  Group owners set")
+        else:
+            new_group.owners.add(*owners)
+            logger.info("  Group owners added")
+
+        classes_ref[class_.class_id] = new_group
+
+    return classes_ref
+
+
+def import_rooms() -> Dict[int, chronos_models.Room]:
+    """ Import rooms """
+
+    ref = {}
+
+    # Get rooms
+    rooms = run_default_filter(mysql_models.Room.objects)
+
+    for room in tqdm(rooms, desc="Import rooms", **TQDM_DEFAULTS):
+        if not room.name:
+            raise RuntimeException(
+                "Room ID {}: Cannot import room without short name.".format(room.room_id)
+            )
+
+        # Build values
+        short_name = room.name[:10]
+        name = room.longname[:30] if room.longname else short_name
+        import_ref = room.room_id
+
+        logger.info("Import room {} …".format(short_name))
+
+        new_room, created = chronos_models.Room.objects.get_or_create(
+            short_name=short_name, defaults={"name": name, "import_ref_untis": import_ref},
+        )
+
+        if created:
+            logger.info("  New room created")
+
+        changed = False
+
+        if config.UNTIS_IMPORT_MYSQL_UPDATE_ROOMS_NAME and new_room.name != name:
+            new_room.name = name
+            changed = True
+            logger.info("  Name updated")
+
+        if new_room.import_ref_untis != import_ref:
+            new_room.import_ref_untis = import_ref
+            changed = True
+            logger.info("  Import reference updated")
+
+        if changed:
+            new_room.save()
+
+        ref[import_ref] = new_room
+
+    return ref
+
+
+def import_supervision_areas(breaks_ref, teachers_ref) -> Dict[int, chronos_models.SupervisionArea]:
+    """ Import supervision areas """
+
+    ref = {}
+
+    # Get supervision areas
+    areas = run_default_filter(mysql_models.Corridor.objects, filter_term=False)
+
+    for area in tqdm(areas, desc="Import supervision areas", **TQDM_DEFAULTS):
+        if not area.name:
+            raise RuntimeException(
+                "Supervision area ID {}: Cannot import supervision area without short name.".format(
+                    area.corridor_id
+                )
+            )
+
+        short_name = area.name[:10]
+        name = area.longname[:50] if area.longname else short_name
+        colour_fg = untis_colour_to_hex(area.forecolor)
+        colour_bg = untis_colour_to_hex(area.backcolor)
+        import_ref = area.corridor_id
+
+        logger.info("Import supervision area {} …".format(short_name))
+
+        new_area, created = chronos_models.SupervisionArea.objects.get_or_create(
+            short_name=short_name,
+            defaults={
+                "name": name,
+                "colour_fg": colour_fg,
+                "colour_bg": colour_bg,
+                "import_ref_untis": import_ref,
+            },
+        )
+
+        if created:
+            logger.info("  New supervision area created")
+
+        changed = False
+
+        if config.UNTIS_IMPORT_MYSQL_UPDATE_SUPERVISION_AREAS and (
+            new_area.name != new_area.name
+            or new_area.colour_fg != colour_fg
+            or new_area.colour_bg != colour_bg
+        ):
+            new_area.name = name
+            new_area.colour_fg = colour_fg
+            new_area.colour_bg = colour_bg
+            changed = True
+
+            logger.info("  Name, foreground and background colour updated")
+
+        if new_area.import_ref_untis != import_ref:
+            new_area.import_ref_untis = import_ref
+            changed = True
+            logger.info("  Import reference updated")
+
+        if changed:
+            new_area.save()
+
+        logger.info("  Import supervisions for this area")
+
+        # Parse raw data
+        raw_supervisions = connect_untis_fields(area, "breaksupervision", 16)
+
+        supervisions_ref = {}
+        for raw_supervision in raw_supervisions:
+            # Split more and get teacher id
+            raw_supervision_2 = raw_supervision.split("~")
+            teacher_id = int(raw_supervision_2[1])
+
+            if teacher_id in teachers_ref:
+                # Get weekday, period after break and teacher
+                weekday = int(raw_supervision_2[2]) - 1
+                period_after_break = int(raw_supervision_2[3])
+                teacher = teachers_ref[teacher_id]
+
+                logger.info(
+                    "    Import supervision on weekday {} before the {}. period (teacher {})".format(
+                        weekday, period_after_break, teacher
+                    )
+                )
+
+                # Get or create
+                new_supervision, created = new_area.supervisions.get_or_create(
+                    break_item=breaks_ref[weekday][period_after_break],
+                    defaults={"teacher": teacher},
+                )
+
+                # Log
+                if created:
+                    logger.info("      New supervision created")
+
+                # Save supervisions in reference dict
+                if weekday not in supervisions_ref:
+                    supervisions_ref[weekday] = {}
+                if period_after_break not in supervisions_ref[weekday]:
+                    supervisions_ref[weekday][period_after_break] = []
+                supervisions_ref[weekday][period_after_break].append(new_supervision)
+
+        for supervision in new_area.supervisions.all():
+            delete = True
+
+            # Get weekday and period after break
+            weekday = supervision.break_item.weekday
+            period_after_break = supervision.break_item.before_period_number
+
+            # Delete supervision if no longer existing
+            if weekday in supervisions_ref:
+                if period_after_break in supervisions_ref[weekday]:
+                    if supervision in supervisions_ref[weekday][period_after_break]:
+                        delete = False
+
+            if delete:
+                supervision.delete()
+                logger.info("    Supervision {} deleted".format(supervision))
+
+        ref[import_ref] = {"area": new_area, "supervisions": supervisions_ref}
+
+    return ref
+
+
+def import_time_periods() -> Dict[int, Dict[int, chronos_models.TimePeriod]]:
+    """ Import time periods an breaks """
+
+    times = (
+        run_default_filter(mysql_models.Commondata.objects, filter_term=False)
+        .filter(id=30)
+        .order_by("number")
+    )
+
+    times_ref = {}
+    for time_ in tqdm(times, desc="Import times", **TQDM_DEFAULTS):
+        period = time_.number
+
+        # Extract time
+        start_time = time(time_.fieldbyte1, time_.fieldbyte2)
+        end_time = time(time_.fieldbyte3, time_.fieldbyte4)
+
+        times_ref[period] = (start_time, end_time)
+
+    periods = (
+        run_default_filter(mysql_models.Commondata.objects, filter_term=False)
+        .filter(id=CommonDataId.PERIOD.value)
+        .order_by("number", "number1")
+    )
+
+    time_periods_ref = {}
+    for time_period in tqdm(periods, desc="Import time periods", **TQDM_DEFAULTS):
+        weekday = time_period.number - 1
+        period = time_period.number1
+        start_time = times_ref[period][0]
+        end_time = times_ref[period][1]
+
+        logger.info("Import time period on weekday {} in the {}. period".format(weekday, period))
+
+        new_time_period, created = chronos_models.TimePeriod.objects.get_or_create(
+            weekday=weekday,
+            period=period,
+            defaults={"time_start": start_time, "time_end": end_time},
+        )
+
+        if created:
+            logger.info("  New time period created")
+
+        if new_time_period.time_start != start_time or new_time_period.time_end != end_time:
+            new_time_period.time_start = start_time
+            new_time_period.time_end = end_time
+            new_time_period.save()
+            logger.info("  Time period updated")
+
+        # Build index with time periods
+        if weekday not in time_periods_ref:
+            time_periods_ref[weekday] = {}
+        time_periods_ref[weekday][period] = new_time_period
+
+    return time_periods_ref
+
+
+def import_breaks(
+    time_periods_ref: Dict[int, Dict[int, chronos_models.TimePeriod]],
+) -> Dict[int, Dict[int, chronos_models.Break]]:
+    # Build breaks for all weekdays
+    breaks_ref = {}
+    for weekday, time_periods in tqdm(
+        time_periods_ref.items(), desc="Import breaks (weekday)", **TQDM_DEFAULTS
+    ):
+        breaks_ref[weekday] = {}
+
+        # Add None two times in order to create breaks before first lesson and after last lesson
+        time_periods_for_breaks = [None] + list(time_periods.values()) + [None]
+        for i, time_period in tqdm(
+            enumerate(time_periods_for_breaks), desc="Import breaks (period)", **TQDM_DEFAULTS
+        ):
+            # If last item (None) is reached, no further break must be created
+            if i + 1 == len(time_periods_for_breaks):
+                break
+
+            after_period = time_period
+            before_period = time_periods_for_breaks[i + 1]
+
+            short_name = "{}: {}./{}.".format(
+                weekday,
+                after_period.period if after_period else "-",
+                before_period.period if before_period else "-",
+            )
+
+            logger.info("Generate break {}".format(short_name))
+
+            new_break, created = chronos_models.Break.objects.get_or_create(
+                after_period=after_period,
+                before_period=before_period,
+                defaults={"short_name": short_name, "name": short_name},
+            )
+
+            if created:
+                logger.info("  New break created")
+
+            # Save index with lesson after break
+            next_period = new_break.before_period_number
+            breaks_ref[weekday][next_period] = new_break
+
+    return breaks_ref
+
+
+def import_absence_reasons() -> Dict[int, chronos_models.AbsenceReason]:
+    """ Import absence reasons """
+
+    ref = {}
+
+    # Get reasons
+    reasons = run_default_filter(mysql_models.Absencereason.objects, filter_term=False)
+
+    for reason in tqdm(reasons, desc="Import absence reasons", **TQDM_DEFAULTS):
+        if not reason.name:
+            raise RuntimeException(
+                "Absence reason ID {}: Cannot import absence reason without short name.".format(
+                    reason.absence_reason_id
+                )
+            )
+
+        # Build values
+        short_name = reason.name
+        name = reason.longname if reason.longname else short_name
+        import_ref = reason.absence_reason_id
+
+        logger.info("Import absence reason {} …".format(short_name))
+
+        new_reason, created = chronos_models.AbsenceReason.objects.get_or_create(
+            import_ref_untis=import_ref, defaults={"short_name": short_name, "name": name}
+        )
+
+        if created:
+            logger.info("  New absence reason created")
+
+        changed = False
+
+        if new_reason.short_name != short_name or new_reason.name != name:
+            new_reason.short_name = short_name
+            new_reason.name = name
+            changed = True
+            logger.info("  Short name and name updated")
+
+        if changed:
+            new_reason.save()
+
+        ref[import_ref] = new_reason
+
+    return ref
diff --git a/aleksis/apps/untis/util/mysql/importers/events.py b/aleksis/apps/untis/util/mysql/importers/events.py
new file mode 100644
index 0000000000000000000000000000000000000000..87b8bf3d00a33fc886e7e68ea2555ef1c761ab11
--- /dev/null
+++ b/aleksis/apps/untis/util/mysql/importers/events.py
@@ -0,0 +1,137 @@
+import logging
+
+from tqdm import tqdm
+
+from aleksis.apps.chronos import models as chronos_models
+
+from .... import models as mysql_models
+from ..util import (
+    TQDM_DEFAULTS,
+    connect_untis_fields,
+    get_first_period,
+    get_last_period,
+    get_term,
+    move_weekday_to_range,
+    run_default_filter,
+    untis_date_to_date,
+)
+
+logger = logging.getLogger(__name__)
+
+
+def import_events(time_periods_ref, teachers_ref, classes_ref, rooms_ref):
+    ref = {}
+
+    # Get term
+    term = get_term()
+    term_date_start = untis_date_to_date(term.datefrom)
+    term_date_end = untis_date_to_date(term.dateto)
+
+    # Get absences
+    events = (
+        run_default_filter(mysql_models.Event.objects, filter_term=False)
+        .filter(datefrom__lte=term.dateto, dateto__gte=term.datefrom)
+        .order_by("event_id")
+    )
+
+    existing_events = []
+    for event in tqdm(events, desc="Import events", **TQDM_DEFAULTS):
+        import_ref = event.event_id
+
+        logger.info("Import event {}".format(import_ref))
+
+        # Build values
+        comment = event.text
+
+        date_from = untis_date_to_date(event.datefrom)
+        date_to = untis_date_to_date(event.dateto)
+        period_from = event.lessonfrom
+        period_to = event.lessonto
+        weekday_from = date_from.weekday()
+        weekday_to = date_to.weekday()
+
+        # Check min/max weekdays
+        weekday_from = move_weekday_to_range(time_periods_ref, weekday_from)
+        weekday_to = move_weekday_to_range(time_periods_ref, weekday_to)
+
+        # Check min/max periods
+        first_period = get_first_period(time_periods_ref, weekday_from)
+        last_period = get_last_period(time_periods_ref, weekday_from)
+
+        if period_from == 0:
+            period_from = first_period
+        if period_to == 0:
+            period_to = last_period
+
+        time_period_from = time_periods_ref[weekday_from][period_from]
+        time_period_to = time_periods_ref[weekday_to][period_to]
+
+        groups = []
+        teachers = []
+        rooms = []
+
+        # Get groups, teachers and rooms
+        raw_events = connect_untis_fields(event, "eventelement", 10)
+        for raw_event in raw_events:
+            el = raw_event.split("~")
+
+            # Group
+            if el[0] != "0" and el[0] != "":
+                group = classes_ref[int(el[0])]
+                groups.append(group)
+
+            # Teacher
+            if el[2] != "0" and el[2] != "":
+                teacher = teachers_ref[int(el[2])]
+                teachers.append(teacher)
+
+            # Room
+            if el[3] != "0" and el[3] != "":
+                room = rooms_ref[int(el[3])]
+                rooms.append(room)
+
+        new_event, created = chronos_models.Event.objects.get_or_create(
+            import_ref_untis=import_ref,
+            defaults={
+                "date_start": date_from,
+                "date_end": date_to,
+                "period_from": time_period_from,
+                "period_to": time_period_to,
+                "title": comment,
+            },
+        )
+
+        if created:
+            logger.info("  New event created")
+
+        # Sync simple fields
+        if (
+            new_event.date_start != date_from
+            or new_event.date_end != date_to
+            or new_event.period_from != time_period_from
+            or new_event.period_to != time_period_to
+            or new_event.title != comment
+        ):
+            new_event.date_start = date_from
+            new_event.date_end = date_to
+            new_event.period_from = time_period_from
+            new_event.period_to = time_period_to
+            new_event.title = comment
+            new_event.save()
+            logger.info("  Time range and title updated")
+
+        # Sync m2m-fields
+        new_event.groups.set(groups)
+        new_event.teachers.set(teachers)
+        new_event.rooms.set(rooms)
+
+        existing_events.append(import_ref)
+        ref[import_ref] = new_event
+
+        # Delete all no longer existing events
+        for e in chronos_models.Event.objects.filter(
+            date_start__lte=term_date_start, date_end__gte=term_date_end
+        ):
+            if e.import_ref_untis and e.import_ref_untis not in existing_events:
+                logger.info("Event {} deleted".format(e.id))
+                e.delete()
diff --git a/aleksis/apps/untis/util/mysql/importers/holidays.py b/aleksis/apps/untis/util/mysql/importers/holidays.py
new file mode 100644
index 0000000000000000000000000000000000000000..d3f9d61532bc08190210a41873d6b6c37f65235d
--- /dev/null
+++ b/aleksis/apps/untis/util/mysql/importers/holidays.py
@@ -0,0 +1,67 @@
+import logging
+from typing import Dict
+
+from tqdm import tqdm
+
+from aleksis.apps.chronos import models as chronos_models
+
+from .... import models as mysql_models
+from ..util import TQDM_DEFAULTS, run_default_filter, untis_date_to_date
+
+logger = logging.getLogger(__name__)
+
+
+def import_holidays() -> Dict[int, chronos_models.Holiday]:
+    """ Import holidays """
+    ref = {}
+
+    # Get holidays
+    holidays = run_default_filter(mysql_models.Holiday.objects, filter_term=False)
+
+    for holiday in tqdm(holidays, desc="Import holidays", **TQDM_DEFAULTS):
+        import_ref = holiday.holiday_id
+
+        # Check if needed data are provided
+        if not holiday.name:
+            raise RuntimeException(
+                "Holiday ID {}: Cannot import holiday without short name.".format(import_ref)
+            )
+
+        title = holiday.name[:50]
+        comments = holiday.longname
+
+        date_start = untis_date_to_date(holiday.datefrom)
+        date_end = untis_date_to_date(holiday.dateto)
+
+        logger.info("Import holiday {} …".format(title))
+
+        # Get or create holiday
+        new_holiday, created = chronos_models.Holiday.objects.get_or_create(
+            import_ref_untis=import_ref,
+            defaults={
+                "title": title,
+                "comments": comments,
+                "date_start": date_start,
+                "date_end": date_end,
+            },
+        )
+
+        if created:
+            logger.info("  New holiday created")
+
+        if (
+            new_holiday.title != title
+            or new_holiday.comments != comments
+            or new_holiday.date_start != date_start
+            or new_holiday.date_end != date_end
+        ):
+            new_holiday.title = title
+            new_holiday.comments = comments
+            new_holiday.date_start = date_start
+            new_holiday.date_end = date_end
+            new_holiday.save()
+            logger.info("  Holiday updated")
+
+        ref[import_ref] = new_holiday
+
+    return ref
diff --git a/aleksis/apps/untis/util/mysql/importers/lessons.py b/aleksis/apps/untis/util/mysql/importers/lessons.py
new file mode 100644
index 0000000000000000000000000000000000000000..b9f79ab0d6af77f926ed2bd9a3843ebfdedbaf54
--- /dev/null
+++ b/aleksis/apps/untis/util/mysql/importers/lessons.py
@@ -0,0 +1,267 @@
+import logging
+from datetime import timedelta
+
+from django.utils.translation import gettext as _
+
+from constance import config
+from tqdm import tqdm
+
+from aleksis.apps.chronos import models as chronos_models
+from aleksis.core import models as core_models
+
+from .... import models as mysql_models
+from ..util import (
+    TQDM_DEFAULTS,
+    compare_m2m,
+    connect_untis_fields,
+    get_term,
+    run_default_filter,
+    untis_date_to_date,
+    untis_split_third,
+)
+
+logger = logging.getLogger(__name__)
+
+
+def import_lessons(time_periods_ref, rooms_ref, subjects_ref, teachers_ref, classes_ref):
+    """ Import lessons """
+
+    # Get current term
+    term = get_term()
+    date_start = untis_date_to_date(term.datefrom)
+    date_end = untis_date_to_date(term.dateto)
+
+    # Get all existing lessons for this term
+    lessons_in_term = chronos_models.Lesson.objects.filter(term_untis=term.term_id).values_list(
+        "id", flat=True
+    )
+
+    # Set the end date of all lessons from other terms ending in this term to the day before this term starts
+    chronos_models.Lesson.objects.filter(date_end__gte=date_start).exclude(
+        id__in=lessons_in_term
+    ).update(date_end=date_start - timedelta(days=1))
+
+    # Lessons
+    lessons = run_default_filter(mysql_models.Lesson.objects)
+    for lesson in tqdm(lessons, desc="Import lessons", **TQDM_DEFAULTS):
+        lesson_id = lesson.lesson_id
+
+        logger.info(_("Import lesson {}").format(lesson_id))
+
+        if not lesson.lesson_tt:
+            logger.warning(_("  Skip because missing times").format(lesson_id))
+            continue
+
+        # Split data (,)
+        raw_lesson_data = connect_untis_fields(lesson, "lessonelement", 10)
+        raw_time_data = lesson.lesson_tt.split(",")
+
+        raw_time_data_2 = []
+        for el in raw_time_data:
+            # Split data (~)
+            raw_time_data_2.append(el.split("~"))
+
+        # Get time periods and rooms
+        time_periods = []
+        rooms_per_periods = []
+        for el in raw_time_data_2:
+            weekday = int(el[1]) - 1
+            hour = int(el[2])
+            room_ids = untis_split_third(el[3], conv=int)
+
+            # Get rooms
+            rooms = []
+            for room_id in room_ids:
+                r = rooms_ref[room_id]
+                rooms.append(r)
+
+            # Get time period
+            time_period = time_periods_ref[weekday][hour]
+            time_periods.append(time_period)
+            rooms_per_periods.append(rooms)
+
+        # Split data more (~)
+        raw_lesson_data_2 = []
+        for el in raw_lesson_data:
+            raw_lesson_data_2.append(el.split("~"))
+
+        # All part lessons (courses)
+        for i, el in enumerate(raw_lesson_data_2):
+            logger.info("  Lesson part {}".format(i))
+
+            # Get plain ids
+            teacher_id = int(el[0])
+            subject_id = int(el[2])
+            class_ids = untis_split_third(el[17], conv=int)
+
+            # Get teacher
+            if teacher_id != 0:
+                teacher = teachers_ref[teacher_id]
+            else:
+                teacher = None
+
+            teachers = [teacher] if teacher else []
+
+            # Get subject
+            if subject_id != 0:
+                subject = subjects_ref[subject_id]
+            else:
+                logger.warning(_("    Skip because missing subject".format(i)))
+                continue
+
+            # Get classes
+            course_classes = []
+            for class_id in class_ids:
+                c = classes_ref[class_id]
+                course_classes.append(c)
+
+            if config.UNTIS_IMPORT_MYSQL_USE_COURSE_GROUPS:
+                # Negative import_ref denotes a course group
+                group_import_ref = -int("{}{}".format(lesson_id, i))
+                subject_ref = subject.abbrev
+
+                # Search by parent groups and subject
+                qs = core_models.Group.objects.filter(
+                    parent_groups__in=[c.id for c in course_classes],
+                    untis_subject__iexact=subject_ref,
+                )
+
+                # Check if found groups match
+                match = False
+                if qs.exists():
+                    if compare_m2m(course_classes, qs[0].parent_groups.all()):
+                        match = True
+                        course_group = qs[0]
+                        logger.info(
+                            "    Course group found by searching by parent groups and subject"
+                        )
+
+                changed = False
+                if not match:
+                    # No matching group found
+
+                    # Build names and refs for course groups
+                    group_short_name = "{}-{}".format(
+                        "".join([c.short_name for c in course_classes]), subject.abbrev
+                    )
+                    group_name = "{}: {}".format(
+                        ", ".join([c.short_name for c in course_classes]), subject.abbrev,
+                    )
+
+                    # Get or create course group
+                    course_group, created = core_models.Group.objects.get_or_create(
+                        short_name=group_short_name, defaults={"name": group_name}
+                    )
+
+                    # Log
+                    if created:
+                        logger.info("    Course group created")
+
+                    # Update parent groups
+                    course_group.parent_groups.set(course_classes)
+                    logger.info("    Course groups set")
+
+                    # Update name
+                    if course_group.name != group_name:
+                        course_group.name = group_name
+                        logger.info("    Name of course group updated")
+
+                        changed = True
+
+                # Update owners
+                course_group.owners.set(teachers)
+
+                # Update import ref
+                if (
+                    course_group.import_ref_untis != group_import_ref
+                ):  # or course_group.untis_subject != subject_ref:
+                    course_group.import_ref_untis = group_import_ref
+                    # course_group.subject_ref = subject_ref
+                    logger.info("    Import reference of course group updated")
+                    changed = True
+
+                if changed:
+                    course_group.save()
+
+                groups = [course_group]
+            else:
+                groups = course_classes
+
+            # Get old lesson
+            old_lesson_qs = chronos_models.Lesson.objects.filter(
+                lesson_id_untis=lesson_id, element_id_untis=i, term_untis=term.term_id
+            )
+
+            if old_lesson_qs.exists():
+                # Update existing lesson
+                logger.info("    Existing lesson found")
+
+                old_lesson = old_lesson_qs[0]
+
+                if (
+                    old_lesson.subject != subject
+                    or old_lesson.date_start != date_start
+                    or old_lesson.date_end != date_end
+                ):
+                    old_lesson.subject = subject
+                    old_lesson.date_start = date_start
+                    old_lesson.date_end = date_end
+                    old_lesson.save()
+                    logger.info("    Subject, start date and end date updated")
+                lesson = old_lesson
+            else:
+                # Create new lesson
+
+                lesson = chronos_models.Lesson.objects.create(
+                    subject=subject,
+                    date_start=date_start,
+                    date_end=date_end,
+                    lesson_id_untis=lesson_id,
+                    element_id_untis=i,
+                    term_untis=term.term_id,
+                )
+                logger.info("    New lesson created")
+
+            # Sync groups
+            lesson.groups.set(groups)
+
+            # Sync teachers
+            lesson.teachers.set(teachers)
+
+            # All times for this course
+            old_lesson_periods_qs = chronos_models.LessonPeriod.objects.filter(lesson=lesson)
+
+            # If length has changed, delete all lesson periods
+            if old_lesson_periods_qs.count() != len(time_periods):
+                old_lesson_periods_qs.delete()
+                logger.info("    Lesson periods deleted")
+
+            # Sync time periods
+            for j, time_period in enumerate(time_periods):
+                logger.info("    Import lesson period {}".format(time_period))
+
+                # Get room if provided
+                rooms = rooms_per_periods[j]
+                if i < len(rooms):
+                    room = rooms[i]
+                else:
+                    room = None
+
+                # Check if an old lesson period is provided
+                old_lesson_period_qs = old_lesson_periods_qs.filter(element_id_untis=j)
+                if old_lesson_period_qs.exists():
+                    # Update old lesson period
+
+                    old_lesson_period = old_lesson_period_qs[0]
+                    if old_lesson_period.period != time_period or old_lesson_period.room != room:
+                        old_lesson_period.period = time_period
+                        old_lesson_period.room = room
+                        old_lesson_period.save()
+                        logger.info("      Time period and room updated")
+                else:
+                    # Create new lesson period
+
+                    lesson.periods.add(
+                        time_period, through_defaults={"room": room, "element_id_untis": j},
+                    )
+                    logger.info("      New time period added")
diff --git a/aleksis/apps/untis/util/mysql/importers/substitutions.py b/aleksis/apps/untis/util/mysql/importers/substitutions.py
new file mode 100644
index 0000000000000000000000000000000000000000..40242a4fe740cd4e802b918632ebab06281b1ad0
--- /dev/null
+++ b/aleksis/apps/untis/util/mysql/importers/substitutions.py
@@ -0,0 +1,251 @@
+import logging
+from enum import Enum
+
+from django.db.models import Q
+
+from calendarweek import CalendarWeek
+from tqdm import tqdm
+
+from aleksis.apps.chronos import models as chronos_models
+
+from .... import models as mysql_models
+from ..util import (
+    TQDM_DEFAULTS,
+    get_term,
+    run_default_filter,
+    untis_date_to_date,
+    untis_split_first,
+)
+
+logger = logging.getLogger(__name__)
+
+
+class SubstitutionFlag(Enum):
+    CANCELLED = "E"
+    CANCELLED_FOR_TEACHERS = "F"
+
+
+def import_substitutions(
+    teachers_ref,
+    subjects_ref,
+    rooms_ref,
+    classes_ref,
+    supervision_areas_ref,
+    time_periods_ref,
+):
+    """ Import substitutions """
+
+    term = get_term()
+    date_start = untis_date_to_date(term.datefrom)
+    date_end = untis_date_to_date(term.dateto)
+
+    subs = (
+        run_default_filter(mysql_models.Substitution.objects, filter_term=False)
+        .filter(date__gte=term.datefrom, date__lte=term.dateto)
+        .exclude(
+            Q(flags__contains="N")
+            | Q(flags__contains="b")
+            | Q(flags__contains="F")
+            | Q(flags__exact="g")
+        )
+        .order_by("substitution_id")
+    )
+
+    existing_subs = []
+    for sub in tqdm(subs, desc="Import substitutions", **TQDM_DEFAULTS):
+        # IDs
+        sub_id = sub.substitution_id
+        existing_subs.append(sub_id)
+
+        lesson_id = sub.lesson_idsubst
+
+        logger.info("Import substitution {}".format(sub_id))
+
+        # Time
+        date = untis_date_to_date(sub.date)
+        weekday = date.weekday()
+        week = CalendarWeek.from_date(date)
+        period = sub.lesson
+
+        # Supervision substitution?
+        is_supervision_substitution = sub.corridor_id != 0
+
+        # Cancellation?
+        cancelled, cancelled_for_teachers = False, False
+        if SubstitutionFlag.CANCELLED.value in sub.flags:
+            cancelled = True
+        elif SubstitutionFlag.CANCELLED_FOR_TEACHERS.value in sub.flags:
+            cancelled_for_teachers = True
+
+        # Comment
+        comment = sub.text
+
+        # Teacher
+        if sub.teacher_idlessn != 0:
+            teacher_old = teachers_ref[sub.teacher_idlessn]
+        else:
+            teacher_old = None
+
+        teachers = []
+        teacher_new = None
+        if sub.teacher_idsubst != 0:
+            teacher_new = teachers_ref[sub.teacher_idsubst]
+            teachers = [teacher_new]
+
+            if teacher_old is not None and teacher_new.id == teacher_old.id:
+                teachers = []
+
+        if not is_supervision_substitution:
+            lesson_periods = chronos_models.LessonPeriod.objects.filter(
+                lesson__lesson_id_untis=lesson_id,
+                lesson__teachers=teacher_old,
+                period__period=period,
+                period__weekday=weekday,
+            ).on_day(date)
+
+            if lesson_periods.exists():
+                lesson_period = lesson_periods[0]
+                logger.info("  Matching lesson period found ({})".format(lesson_period))
+            else:
+                lesson_period = None
+
+            # Subject
+            subject_old = lesson_period.lesson.subject if lesson_period else None
+            subject_new = None
+            if sub.subject_idsubst != 0:
+                subject_new = subjects_ref[sub.subject_idsubst]
+
+                if subject_old and subject_old.id == subject_new.id:
+                    subject_new = None
+
+            if cancelled:
+                subject_new = None
+
+            # Room
+            room_old = lesson_period.room if lesson_period else None
+            room_new = None
+            if sub.room_idsubst != 0:
+                room_new = rooms_ref[sub.room_idsubst]
+
+                if room_old is not None and room_old.id == room_new.id:
+                    room_new = None
+
+            # Classes
+            classes = []
+            class_ids = untis_split_first(sub.classids, conv=int)
+
+            for id in class_ids:
+                classes.append(classes_ref[id])
+
+            if lesson_period:
+                (substitution, created,) = chronos_models.LessonSubstitution.objects.get_or_create(
+                    lesson_period=lesson_period, week=week.week
+                )
+
+                if created:
+                    logger.info("  Substitution created")
+
+                # Sync teachers
+                substitution.teachers.set(teachers)
+                logger.info("   Substitution teachers set")
+
+                # Update values
+                if (
+                    substitution.subject != subject_new
+                    or substitution.room != room_new
+                    or substitution.cancelled != cancelled
+                    or substitution.cancelled_for_teachers != cancelled_for_teachers
+                    or substitution.comment != comment
+                    or substitution.import_ref_untis != sub_id
+                ):
+                    substitution.subject = subject_new
+                    substitution.room = room_new
+                    substitution.cancelled = cancelled
+                    substitution.cancelled_for_teachers = cancelled_for_teachers
+                    substitution.comment = comment
+                    substitution.import_ref_untis = sub_id
+                    substitution.save()
+                    logger.info("  Substitution updated")
+
+            else:
+                logger.info("  Extra lesson detected")
+                time_period = time_periods_ref[date.weekday()][period]
+
+                groups = [
+                    classes_ref[pk] for pk in untis_split_first(sub.classids, int)
+                ]
+
+                room = room_old if not room_new and room_old else room_new
+                subject = subject_old if not subject_new else subject_new
+                teachers = [teacher_old] if not teacher_new else [teacher_new]
+
+                (
+                    extra_lesson,
+                    created,
+                ) = chronos_models.ExtraLesson.objects.update_or_create(
+                    import_ref_untis=sub_id,
+                    defaults={
+                        "week": week.week,
+                        "period": time_period,
+                        "subject": subject,
+                        "room": room,
+                        "comment": comment,
+                    },
+                )
+
+                if created:
+                    logger.info("  Extra lesson created")
+
+                extra_lesson.teachers.set(teachers)
+                extra_lesson.groups.set(groups)
+        else:
+            if teacher_new:
+                logger.info("  Supervision substitution detected")
+
+                # Supervision
+                area_ref = supervision_areas_ref[sub.corridor_id]
+                possible_supervisions = area_ref["supervisions"][weekday][period]
+
+                supervision = None
+                for possible_supervision in possible_supervisions:
+                    if possible_supervision.teacher == teacher_old:
+                        supervision = possible_supervision
+
+                if supervision:
+                    (
+                        substitution,
+                        created,
+                    ) = chronos_models.SupervisionSubstitution.objects.get_or_create(
+                        supervision=supervision, date=date, defaults={"teacher": teacher_new},
+                    )
+
+                    if created:
+                        logger.info("  Supervision substitution created")
+
+                    if (
+                        substitution.teacher != teacher_new
+                        or substitution.import_ref_untis != sub_id
+                    ):
+                        substitution.teacher = teacher_new
+                        substitution.import_ref_untis = sub_id
+                        substitution.save()
+                        logger.info("  Supervision substitution updated")
+
+    # Delete all no longer existing substitutions
+    for s in chronos_models.LessonSubstitution.objects.within_dates(date_start, date_end):
+        if s.import_ref_untis and s.import_ref_untis not in existing_subs:
+            logger.info("Substitution {} deleted".format(s.id))
+            s.delete()
+
+    # Delete all no longer existing extra lessons
+    for s in chronos_models.ExtraLesson.objects.within_dates(date_start, date_end):
+        if s.import_ref_untis and s.import_ref_untis not in existing_subs:
+            logger.info("Extra lesson {} deleted".format(s.id))
+            s.delete()
+
+    # Delete all no longer existing supervision substitutions
+    for s in chronos_models.SupervisionSubstitution.objects.filter(date__gte=date_start, date__lte=date_end):
+        if s.import_ref_untis and s.import_ref_untis not in existing_subs:
+            logger.info("Supervision substitution {} deleted".format(s.id))
+            s.delete()
+
diff --git a/aleksis/apps/untis/util/mysql/main.py b/aleksis/apps/untis/util/mysql/main.py
new file mode 100644
index 0000000000000000000000000000000000000000..7fd537e5629c7f8790d5f421839a924a7b3d3808
--- /dev/null
+++ b/aleksis/apps/untis/util/mysql/main.py
@@ -0,0 +1,49 @@
+from django.db import transaction
+
+from .importers.absences import import_absences
+from .importers.common_data import (
+    import_absence_reasons,
+    import_breaks,
+    import_classes,
+    import_rooms,
+    import_subjects,
+    import_supervision_areas,
+    import_teachers,
+    import_time_periods,
+)
+from .importers.events import import_events
+from .importers.holidays import import_holidays
+from .importers.lessons import import_lessons
+from .importers.substitutions import import_substitutions
+
+
+@transaction.atomic
+def untis_import_mysql():
+    # Coomon data for Chronos
+    subjects_ref = import_subjects()
+    rooms_ref = import_rooms()
+    absence_reasons_ref = import_absence_reasons()
+
+    # Common data for core
+    teachers_ref = import_teachers()
+    classes_ref = import_classes(teachers_ref)
+
+    # Time periods
+    time_periods_ref = import_time_periods()
+    breaks_ref = import_breaks(time_periods_ref)
+
+    # Holidays
+    holidays_ref = import_holidays()
+
+    # Supervisions
+    supervision_areas_ref = import_supervision_areas(breaks_ref, teachers_ref)
+
+    # Lessons
+    import_lessons(time_periods_ref, rooms_ref, subjects_ref, teachers_ref, classes_ref)
+
+    # Substitutions
+    import_absences(absence_reasons_ref, time_periods_ref, teachers_ref, classes_ref, rooms_ref)
+    import_substitutions(teachers_ref, subjects_ref, rooms_ref, classes_ref, supervision_areas_ref, time_periods_ref)
+
+    # Events
+    import_events(time_periods_ref, teachers_ref, classes_ref, rooms_ref)
diff --git a/aleksis/apps/untis/util/mysql/util.py b/aleksis/apps/untis/util/mysql/util.py
new file mode 100644
index 0000000000000000000000000000000000000000..57c53c8a1700e4c51bf908df849a4a200ff725da
--- /dev/null
+++ b/aleksis/apps/untis/util/mysql/util.py
@@ -0,0 +1,179 @@
+import logging
+from datetime import date, datetime
+from typing import Any, Callable, Optional, Sequence, Union
+
+from django.db.models import Model, QuerySet
+from django.utils import timezone
+
+from ... import models as mysql_models
+
+DB_NAME = "untis"
+UNTIS_DATE_FORMAT = "%Y%m%d"
+
+TQDM_DEFAULTS = {
+    "disable": None,
+    "unit": "obj",
+    "dynamic_ncols": True,
+}
+
+logger = logging.getLogger(__name__)
+
+
+def run_using(obj: QuerySet) -> QuerySet:
+    """ Seed QuerySet with using() database from global DB_NAME """
+    return obj.using(DB_NAME)
+
+
+def get_term(for_date: Optional[date] = None) -> mysql_models.Terms:
+    """ Get term valid for the provided date """
+
+    if not for_date:
+        for_date = timezone.now().date()
+
+    term = run_using(mysql_models.Terms.objects).get(
+        datefrom__lte=date_to_untis_date(for_date), dateto__gte=date_to_untis_date(for_date)
+    )
+
+    return term
+
+
+def run_default_filter(
+    qs: QuerySet,
+    for_date: Optional[date] = None,
+    filter_term: bool = True,
+    filter_deleted: bool = True,
+) -> QuerySet:
+    """ Add a default filter in order to select the correct term """
+
+    term = get_term(for_date)
+    term_id, schoolyear_id, school_id, version_id = (
+        term.term_id,
+        term.schoolyear_id,
+        term.school_id,
+        term.version_id,
+    )
+
+    qs = run_using(qs).filter(
+        school_id=school_id, schoolyear_id=schoolyear_id, version_id=version_id,
+    )
+
+    if filter_term:
+        qs = qs.filter(term_id=term_id)
+
+    if filter_deleted:
+        qs = qs.filter(deleted=0)
+
+    return qs
+
+
+def clean_array(seq: Sequence, conv: Callable[[Any], Any] = lambda el: el) -> Sequence:
+    """ Convert a sequence using a converter function, stripping all
+    elements that are boolean False after conversion.
+
+    >>> clean_array(["a", "", "b"])
+    ['a', 'b']
+
+    >>> clean_array(["8", "", "12", "0"], int)
+    [8, 12]
+    """
+
+    filtered = filter(lambda el: bool(el), map(lambda el: conv(el) if el else None, seq))
+    return type(seq)(filtered)
+
+
+def untis_split_first(s: str, conv: Callable[[Any], Any] = lambda el: el) -> Sequence:
+    return clean_array(s.split(","), conv=conv)
+
+
+def untis_split_second(s: str, conv: Callable[[Any], Any] = lambda el: el) -> Sequence:
+    return clean_array(s.split("~"), conv=conv)
+
+
+def untis_split_third(s: str, conv: Callable[[Any], Any] = lambda el: el) -> Sequence:
+    return clean_array(s.split(";"), conv=conv)
+
+
+def untis_date_to_date(untis: int) -> date:
+    """ Converts a UNTIS date to a python date """
+    return datetime.strptime(str(untis), UNTIS_DATE_FORMAT).date()
+
+
+def date_to_untis_date(from_date: date) -> int:
+    """ Converts a python date to a UNTIS date """
+    return int(from_date.strftime(UNTIS_DATE_FORMAT))
+
+
+def untis_colour_to_hex(colour: int) -> str:
+    """ Convert a numerical colour in BGR order to a standard hex RGB string """
+
+    # Convert UNTIS number to HEX
+    hex_bgr = str(hex(colour))[2:].zfill(6)
+
+    # Change BGR to RGB
+    hex_rgb = hex_bgr[4:6] + hex_bgr[2:4] + hex_bgr[0:2]
+
+    # Add html #
+    return "#" + hex_rgb
+
+
+def compare_m2m(a: Union[Sequence[Model], QuerySet], b: Union[Sequence[Model], QuerySet]) -> bool:
+    """ Compare if content of two m2m fields is equal """
+
+    return set(a) == set(b)
+
+
+def connect_untis_fields(obj: Model, attr: str, limit: int) -> Sequence[str]:
+    """ Connects data from multiple DB fields
+
+    Untis splits structured data, like lists, as comma-separated string into
+    multiple, numbered database fields, like:
+
+      field1 = "This,is,a,nice"
+      field2 = "list,of,words"
+
+    This function joins these fields, then splits them into the original list.
+    """
+
+    all_data = []
+
+    for i in range(1, limit + 1):
+        attr_name = "{}{}".format(attr, i)
+        raw_data = getattr(obj, attr_name, "")
+        if raw_data:
+            data = untis_split_first(raw_data)
+            all_data += data
+
+    return all_data
+
+
+def get_first_weekday(time_periods_ref: dict) -> int:
+    """ Get first weekday from time periods reference """
+    return sorted(time_periods_ref.keys())[0]
+
+
+def get_last_weekday(time_periods_ref: dict) -> int:
+    """ Get last weekday from time periods reference """
+    return sorted(time_periods_ref.keys())[-1]
+
+
+def get_first_period(time_periods_ref: dict, weekday: int) -> int:
+    """ Get first period on a weekday from time periods reference """
+    return sorted(time_periods_ref[weekday].keys())[0]
+
+
+def get_last_period(time_periods_ref: dict, weekday: int) -> int:
+    """ Get last period an a weekday from time periods reference """
+    return sorted(time_periods_ref[weekday].keys())[-1]
+
+
+def move_weekday_to_range(time_periods_ref: dict, weekday: int) -> int:
+    """ Move weekday values into school week (e. g. saturday to friday) """
+    first_weekday = get_first_weekday(time_periods_ref)
+    last_weekday = get_last_weekday(time_periods_ref)
+
+    if weekday < first_weekday:
+        weekday = first_weekday
+    if weekday > last_weekday:
+        weekday = last_weekday
+
+    return weekday
diff --git a/aleksis/apps/untis/util.py b/aleksis/apps/untis/util/xml/xml.py
similarity index 80%
rename from aleksis/apps/untis/util.py
rename to aleksis/apps/untis/util/xml/xml.py
index 3b61df05bc3ca570ae08aab378b17fac9043b7f9..4bc09e753061de40371dfe35ccf7e5551e87a71f 100644
--- a/aleksis/apps/untis/util.py
+++ b/aleksis/apps/untis/util/xml/xml.py
@@ -10,13 +10,6 @@ from aleksis.core.models import Group, Person
 from aleksis.core.util import messages
 
 
-from untisconnect.api import TYPE_TEACHER, get_teacher_by_shortcode, TYPE_CLASS, get_class_by_name, get_all_teachers, \
-    get_all_classes, get_all_rooms, get_all_subjects
-from untisconnect.datetimeutils import get_calendar_week, calendar_week, weekday
-from untisconnect.plan import get_plan
-from userinformation import UserInformation
-
-
 def get_child_node_text(node: Node, tag: str) -> Optional[str]:
     tag_nodes = node.getElementsByTagName(tag)
 
@@ -171,45 +164,3 @@ def untis_import_xml(request: HttpRequest, untis_xml: Union[BinaryIO, str]) -> N
             lesson.periods.add(period[0], through_defaults={"room": period[1]})
 
         lesson.save()
-
-
-def get_type_and_object_of_user(user):
-    _type = UserInformation.user_type(user)
-    if _type == UserInformation.TEACHER:
-        # Teacher
-        _type = TYPE_TEACHER
-        shortcode = user.username
-        el = get_teacher_by_shortcode(shortcode)
-    elif _type == UserInformation.STUDENT:
-        # Student
-        _type = TYPE_CLASS
-        _name = UserInformation.user_classes(user)[0]
-        el = get_class_by_name(_name)
-    else:
-        # Nothing of both
-        return None, None
-
-    return _type, el
-
-
-def overview_dict():
-    return {
-        'teachers': get_all_teachers(),
-        'classes': get_all_classes(),
-        'rooms': get_all_rooms(),
-        'subjects': get_all_subjects()
-    }
-
-
-def get_plan_for_day(_type, plan_id, date):
-    # Get calendar week and monday of week
-
-    monday_of_week = get_calendar_week(calendar_week(date), date.year)["first_day"]
-    week_day = weekday(date)
-
-    # Get plan
-    plan, holidays = get_plan(_type, plan_id, smart=True, monday_of_week=monday_of_week)
-    lessons = [(row[week_day], time) for row, time in plan]
-
-    holidays_for_date = holidays[week_day]
-    return lessons, holidays_for_date
diff --git a/aleksis/apps/untis/views.py b/aleksis/apps/untis/views.py
index fbea02bf07176dfab33516ad4368890ec3b052c4..2221a3b02156b5bf6dddee0c58a246d82ea6aff5 100644
--- a/aleksis/apps/untis/views.py
+++ b/aleksis/apps/untis/views.py
@@ -5,12 +5,12 @@ from django.shortcuts import render
 from aleksis.core.decorators import admin_required
 
 from .forms import UntisUploadForm
-from .util import untis_import_xml
+from .util.xml.xml import untis_import_xml
 
 
 @login_required
 @admin_required
-def untis_import(request: HttpRequest) -> HttpResponse:
+def xml_import(request: HttpRequest) -> HttpResponse:
     context = {}
 
     upload_form = UntisUploadForm()
@@ -23,4 +23,4 @@ def untis_import(request: HttpRequest) -> HttpResponse:
 
     context["upload_form"] = upload_form
 
-    return render(request, "untis/untis_import.html", context)
+    return render(request, "untis/xml_import.html", context)
diff --git a/pyproject.toml b/pyproject.toml
index f104baed41307f10e0661c92b615436575cfc40a..d6beadf2e6a91a2909e3ce9b18f55ab3c70e7415 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -22,6 +22,8 @@ classifiers = [
 python = "^3.7"
 AlekSIS = { path = "../../.." }
 AlekSIS-App-Chronos = { path = "../AlekSIS-App-Chronos" }
+mysqlclient = "^1.4.6"
+tqdm = "^4.44.1"
 
 [build-system]
 requires = ["poetry>=0.12"]