Importing exams broken due to missing time period #57

Closed
opened 2022-10-15 13:04:15 +02:00 by nik · 7 comments
Owner
Traceback (most recent call last):
  File "/usr/local/bin/aleksis-admin", line 8, in <module>
    sys.exit(aleksis_cmd())
  File "/usr/local/lib/python3.10/dist-packages/aleksis/core/__main__.py", line 14, in aleksis_cmd
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python3.10/dist-packages/django/core/management/__init__.py", line 419, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python3.10/dist-packages/django/core/management/__init__.py", line 413, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python3.10/dist-packages/django/core/management/base.py", line 354, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/usr/local/lib/python3.10/dist-packages/django/core/management/base.py", line 398, in execute
    output = self.handle(*args, **options)
  File "/usr/local/lib/python3.10/dist-packages/aleksis/apps/untis/management/commands/untis_import_mysql.py", line 30, in handle
    command.run(background=background, version=version)
  File "/usr/local/lib/python3.10/dist-packages/aleksis/apps/untis/commands.py", line 46, in run
    _untis_import_mysql(cls.get_terms(), school_id=school_id, version=version)
  File "/usr/local/lib/python3.10/dist-packages/aleksis/apps/untis/util/mysql/main.py", line 99, in untis_import_mysql
    import_exams(validity_range, time_periods_ref, subjects_ref, teachers_ref, rooms_ref)
  File "/usr/local/lib/python3.10/dist-packages/aleksis/apps/untis/util/mysql/importers/exams.py", line 93, in import_exams
    period = time_periods_ref[weekday][period]
KeyError: 0

My best guess is that this happens when an exam is planned for a time period that does not have a regular lesson in the plan.

```plain Traceback (most recent call last): File "/usr/local/bin/aleksis-admin", line 8, in <module> sys.exit(aleksis_cmd()) File "/usr/local/lib/python3.10/dist-packages/aleksis/core/__main__.py", line 14, in aleksis_cmd execute_from_command_line(sys.argv) File "/usr/local/lib/python3.10/dist-packages/django/core/management/__init__.py", line 419, in execute_from_command_line utility.execute() File "/usr/local/lib/python3.10/dist-packages/django/core/management/__init__.py", line 413, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/usr/local/lib/python3.10/dist-packages/django/core/management/base.py", line 354, in run_from_argv self.execute(*args, **cmd_options) File "/usr/local/lib/python3.10/dist-packages/django/core/management/base.py", line 398, in execute output = self.handle(*args, **options) File "/usr/local/lib/python3.10/dist-packages/aleksis/apps/untis/management/commands/untis_import_mysql.py", line 30, in handle command.run(background=background, version=version) File "/usr/local/lib/python3.10/dist-packages/aleksis/apps/untis/commands.py", line 46, in run _untis_import_mysql(cls.get_terms(), school_id=school_id, version=version) File "/usr/local/lib/python3.10/dist-packages/aleksis/apps/untis/util/mysql/main.py", line 99, in untis_import_mysql import_exams(validity_range, time_periods_ref, subjects_ref, teachers_ref, rooms_ref) File "/usr/local/lib/python3.10/dist-packages/aleksis/apps/untis/util/mysql/importers/exams.py", line 93, in import_exams period = time_periods_ref[weekday][period] KeyError: 0 ``` My best guess is that this happens when an exam is planned for a time period that does not have a regular lesson in the plan.
Author
Owner

The exam record being imported is:

weekday 1, period 0: ['0', '0', '0', '1961', '0', '0', '0']

That is, curiously, all zeroes for lesson, subject, period, teacher, and room.

Given that, it more looks like some kind of placeholder.

I tried skipping this record, but then I get:

Traceback (most recent call last):
  File "/usr/local/lib/python3.10/dist-packages/django/db/models/query.py", line 581, in get_or_create
    return self.get(**kwargs), False
  File "/usr/local/lib/python3.10/dist-packages/django/db/models/query.py", line 435, in get
    raise self.model.DoesNotExist(
aleksis.apps.chronos.models.Exam.DoesNotExist: Exam matching query does not exist.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.10/dist-packages/django/db/backends/utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
  File "/usr/local/lib/python3.10/dist-packages/django_prometheus/db/common.py", line 71, in execute
    return super().execute(*args, **kwargs)
psycopg2.errors.NotNullViolation: null value in column "title" of relation "chronos_exam" violates not-null constraint
DETAIL:  Failing row contains (1, {"import_ref_untis": 2}, 2022-09-20, null, Sn Rob / Sem, 15203, 1831, 1832, 1, 61).
The exam record being imported is: `weekday 1, period 0: ['0', '0', '0', '1961', '0', '0', '0']` That is, curiously, all zeroes for lesson, subject, period, teacher, and room. Given that, it more looks like some kind of placeholder. I tried skipping this record, but then I get: ```plain Traceback (most recent call last): File "/usr/local/lib/python3.10/dist-packages/django/db/models/query.py", line 581, in get_or_create return self.get(**kwargs), False File "/usr/local/lib/python3.10/dist-packages/django/db/models/query.py", line 435, in get raise self.model.DoesNotExist( aleksis.apps.chronos.models.Exam.DoesNotExist: Exam matching query does not exist. During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/local/lib/python3.10/dist-packages/django/db/backends/utils.py", line 84, in _execute return self.cursor.execute(sql, params) File "/usr/local/lib/python3.10/dist-packages/django_prometheus/db/common.py", line 71, in execute return super().execute(*args, **kwargs) psycopg2.errors.NotNullViolation: null value in column "title" of relation "chronos_exam" violates not-null constraint DETAIL: Failing row contains (1, {"import_ref_untis": 2}, 2022-09-20, null, Sn Rob / Sem, 15203, 1831, 1832, 1, 61). ```
Owner

created branch 57-importing-exams-broken-due-to-missing-time-period to address this issue

created branch [`57-importing-exams-broken-due-to-missing-time-period`](/AlekSIS/official/AlekSIS-App-Untis/-/compare/master...57-importing-exams-broken-due-to-missing-time-period) to address this issue
Owner

mentioned in merge request !236

mentioned in merge request !236
nik closed this issue 2022-10-19 19:41:26 +02:00
Author
Owner

mentioned in commit 2fde0c70c2

mentioned in commit 2fde0c70c28851dbcaab48577af05c32447c9763
Owner

created branch 57-importing-exams-broken-due-to-missing-time-period to address this issue

created branch [`57-importing-exams-broken-due-to-missing-time-period`](/AlekSIS/official/AlekSIS-App-Untis/-/compare/master...57-importing-exams-broken-due-to-missing-time-period) to address this issue
Owner

mentioned in merge request !237

mentioned in merge request !237
Owner

mentioned in commit 255f9d0ae6

mentioned in commit 255f9d0ae64a0074bf93c306fcdda9f12b4f9334
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
aleksis/AlekSIS-App-Untis#57
No description provided.