Creating absence fails with can't compare offset-naive and offset-aware datetimes #202

Open
opened 2026-10-07 10:31:39 +02:00 by magicfelix · 0 comments
Member
 Traceback (most recent call last):                                                                                                                                                                                           │
│   File "/opt/org.aleksis/venv/lib/python3.13/site-packages/django/core/handlers/exception.py", line 55, in inner                                                                                                             │
│     response = get_response(request)                                                                                                                                                                                         │
│   File "/opt/org.aleksis/venv/lib/python3.13/site-packages/django/core/handlers/base.py", line 198, in _get_response                                                                                                         │
│     response = wrapped_callback(request, *callback_args, **callback_kwargs)                                                                                                                                                  │
│   File "/usr/lib/python3.13/contextlib.py", line 85, in inner                                                                                                                                                                │
│     return func(*args, **kwds)                                                                                                                                                                                               │
│   File "/usr/lib/python3.13/contextlib.py", line 85, in inner                                                                                                                                                                │
│     return func(*args, **kwds)                                                                                                                                                                                               │
│   File "/opt/org.aleksis/venv/lib/python3.13/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper                                                                                                       │
│     return view_func(request, *args, **kwargs)                                                                                                                                                                               │
│   File "/opt/org.aleksis/venv/lib/python3.13/site-packages/django/views/generic/base.py", line 106, in view                                                                                                                  │
│     return self.dispatch(request, *args, **kwargs)                                                                                                                                                                           │
│            ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^                                                                                                                                                                           │
│   File "/opt/org.aleksis/venv/lib/python3.13/site-packages/django/utils/decorators.py", line 48, in _wrapper                                                                                                                 │
│     return bound_method(*args, **kwargs)                                                                                                                                                                                     │
│   File "/opt/org.aleksis/venv/lib/python3.13/site-packages/django/utils/decorators.py", line 192, in _view_wrapper                                                                                                           │
│     result = _process_exception(request, e)                                                                                                                                                                                  │
│   File "/opt/org.aleksis/venv/lib/python3.13/site-packages/django/utils/decorators.py", line 190, in _view_wrapper                                                                                                           │
│     response = view_func(request, *args, **kwargs)                                                                                                                                                                           │
│   File "/opt/org.aleksis/venv/lib/python3.13/site-packages/graphene_django/views.py", line 201, in dispatch                                                                                                                  │
│     result, status_code = self.get_response(request, data, show_graphiql)                                                                                                                                                    │
│                           ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                                                                                                                    │
│   File "/opt/org.aleksis/venv/lib/python3.13/site-packages/graphene_django/views.py", line 218, in get_response                                                                                                              │
│     execution_result = self.execute_graphql_request(                                                                                                                                                                         │
│         request, data, query, variables, operation_name, show_graphiql                                                                                                                                                       │
│     )                                                                                                                                                                                                                        │
│   File "/opt/org.aleksis/venv/lib/python3.13/site-packages/aleksis/core/views.py", line 292, in execute_graphql_request                                                                                                      │
│     raise error                                                                                                                                                                                                              │
│   File "/opt/org.aleksis/venv/lib/python3.13/site-packages/graphql/execution/execute.py", line 677, in execute_field                                                                                                         │
│     result = resolve_fn(source, info, **args)                                                                                                                                                                                │
│   File "/opt/org.aleksis/venv/lib/python3.13/site-packages/aleksis/core/schema/base.py", line 295, in mutate                                                                                                                 │
│     return super().mutate(root, info, *args, **kwargs)                                                                                                                                                                       │
│            ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                                                                                                                                       │
│   File "/opt/org.aleksis/venv/lib/python3.13/site-packages/graphene_django_cud/mutations/batch_create.py", line 232, in mutate                                                                                               │
│     obj = cls.create_obj(                                                                                                                                                                                                    │
│         data,                                                                                                                                                                                                                │
│     ...<7 lines>...                                                                                                                                                                                                          │
│         Model,                                                                                                                                                                                                               │
│     )                                                                                                                                                                                                                        │
│   File "/opt/org.aleksis/venv/lib/python3.13/site-packages/graphene_django_cud/mutations/core.py", line 408, in create_obj                                                                                                   │
│     obj.save()                                                                                                                                                                                                               │
│     ~~~~~~~~^^                                                                                                                                                                                                               │
│   File "/opt/org.aleksis/venv/lib/python3.13/site-packages/aleksis/apps/kolego/models/absence.py", line 307, in save                                                                                                         │
│     modified_absences, extended_absence = self.clear_or_extend_absences_in_timespan(                                                                                                                                         │
│                                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^                                                                                                                                         │
│         self.person.person, new_datetime_start, new_datetime_end, self.reason                                                                                                                                                │
│         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                                                                                                                │
│     )                                                                                                                                                                                                                        │
│     ^                                                                                                                                                                                                                        │
│   File "/opt/org.aleksis/venv/lib/python3.13/site-packages/aleksis/apps/kolego/models/absence.py", line 232, in clear_or_extend_absences_in_timespan                                                                         │
│     datetime_start > event_within_datetime_start                                                                                                                                                                             │
│ graphql.error.graphql_error.GraphQLError: can't compare offset-naive and offset-aware datetimes                                                                                                                              │
│                                                                                                                                                                                                                              │
│ GraphQL request:2:3                                                                                                                                                                                                          │
│ 1 | mutation createAbsences($input: [BatchCreateAbsenceInput]!) {                                                                                                                                                            │
│ 2 |   createAbsences(input: $input) {                                                                                                                                                                                        │
│   |   ^                                                                                                                                                                                                                      │
│ 3 |     items: absences { 
``` Traceback (most recent call last): │ │ File "/opt/org.aleksis/venv/lib/python3.13/site-packages/django/core/handlers/exception.py", line 55, in inner │ │ response = get_response(request) │ │ File "/opt/org.aleksis/venv/lib/python3.13/site-packages/django/core/handlers/base.py", line 198, in _get_response │ │ response = wrapped_callback(request, *callback_args, **callback_kwargs) │ │ File "/usr/lib/python3.13/contextlib.py", line 85, in inner │ │ return func(*args, **kwds) │ │ File "/usr/lib/python3.13/contextlib.py", line 85, in inner │ │ return func(*args, **kwds) │ │ File "/opt/org.aleksis/venv/lib/python3.13/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper │ │ return view_func(request, *args, **kwargs) │ │ File "/opt/org.aleksis/venv/lib/python3.13/site-packages/django/views/generic/base.py", line 106, in view │ │ return self.dispatch(request, *args, **kwargs) │ │ ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^ │ │ File "/opt/org.aleksis/venv/lib/python3.13/site-packages/django/utils/decorators.py", line 48, in _wrapper │ │ return bound_method(*args, **kwargs) │ │ File "/opt/org.aleksis/venv/lib/python3.13/site-packages/django/utils/decorators.py", line 192, in _view_wrapper │ │ result = _process_exception(request, e) │ │ File "/opt/org.aleksis/venv/lib/python3.13/site-packages/django/utils/decorators.py", line 190, in _view_wrapper │ │ response = view_func(request, *args, **kwargs) │ │ File "/opt/org.aleksis/venv/lib/python3.13/site-packages/graphene_django/views.py", line 201, in dispatch │ │ result, status_code = self.get_response(request, data, show_graphiql) │ │ ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ │ │ File "/opt/org.aleksis/venv/lib/python3.13/site-packages/graphene_django/views.py", line 218, in get_response │ │ execution_result = self.execute_graphql_request( │ │ request, data, query, variables, operation_name, show_graphiql │ │ ) │ │ File "/opt/org.aleksis/venv/lib/python3.13/site-packages/aleksis/core/views.py", line 292, in execute_graphql_request │ │ raise error │ │ File "/opt/org.aleksis/venv/lib/python3.13/site-packages/graphql/execution/execute.py", line 677, in execute_field │ │ result = resolve_fn(source, info, **args) │ │ File "/opt/org.aleksis/venv/lib/python3.13/site-packages/aleksis/core/schema/base.py", line 295, in mutate │ │ return super().mutate(root, info, *args, **kwargs) │ │ ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ │ │ File "/opt/org.aleksis/venv/lib/python3.13/site-packages/graphene_django_cud/mutations/batch_create.py", line 232, in mutate │ │ obj = cls.create_obj( │ │ data, │ │ ...<7 lines>... │ │ Model, │ │ ) │ │ File "/opt/org.aleksis/venv/lib/python3.13/site-packages/graphene_django_cud/mutations/core.py", line 408, in create_obj │ │ obj.save() │ │ ~~~~~~~~^^ │ │ File "/opt/org.aleksis/venv/lib/python3.13/site-packages/aleksis/apps/kolego/models/absence.py", line 307, in save │ │ modified_absences, extended_absence = self.clear_or_extend_absences_in_timespan( │ │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ │ │ self.person.person, new_datetime_start, new_datetime_end, self.reason │ │ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ │ │ ) │ │ ^ │ │ File "/opt/org.aleksis/venv/lib/python3.13/site-packages/aleksis/apps/kolego/models/absence.py", line 232, in clear_or_extend_absences_in_timespan │ │ datetime_start > event_within_datetime_start │ │ graphql.error.graphql_error.GraphQLError: can't compare offset-naive and offset-aware datetimes │ │ │ │ GraphQL request:2:3 │ │ 1 | mutation createAbsences($input: [BatchCreateAbsenceInput]!) { │ │ 2 | createAbsences(input: $input) { │ │ | ^ │ │ 3 | items: absences { ```
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
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-Kolego#202
No description provided.