Error when querying photos edited since a DST change
L'Enibar fait régulièrement des requètes pour mettre à jour les photos de profil, en spécifiant la dernière heure de mise à jour.
La requète crashe lorsque cette dernière mise à jour est un horaire ambigu (qui a existé deux fois dans la journée par exemple).
Traceback:
AmbiguousTimeError at /enibar/photos
2020-10-25 02:00:01
Request Method: GET
Request URL: https://enib.net/enibar/photos?last_updated=2020-10-25T02%3A00%3A01
Django Version: 2.2.15
Python Executable: /usr/bin/uwsgi
Python Version: 3.8.6
Python Path: ['.', '', '/home/sde/prod/.venv/lib/python38.zip', '/home/sde/prod/.venv/lib/python3.8', '/home/sde/prod/.venv/lib/python3.8/lib-dynload', '/us
r/lib64/python3.8', '/usr/lib/python3.8', '/home/sde/prod/.venv/lib/python3.8/site-packages']
Server time: dim, 25 Oct 2020 02:33:29 +0200
Installed Applications:
('django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'core',
'notifications',
'accounts',
'poll',
'events',
'webmail',
'bde',
'carshare',
'news',
'help',
'permissions',
'photo',
'enibar',
'quotes',
'asso',
'partnerships',
'boutique',
'lydia')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
'notifications.middleware.ReadOnVisit')
Traceback:
File "/home/sde/prod/.venv/lib/python3.8/site-packages/django/core/handlers/exception.py" in inner
34. response = get_response(request)
File "/home/sde/prod/.venv/lib/python3.8/site-packages/django/core/handlers/base.py" in _get_response
115. response = self.process_exception_by_middleware(e, request)
File "/home/sde/prod/.venv/lib/python3.8/site-packages/django/core/handlers/base.py" in _get_response
113. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "./enibar/views.py" in get_photo_paths
133. users = User.objects.filter(
File "/home/sde/prod/.venv/lib/python3.8/site-packages/django/db/models/manager.py" in manager_method
82. return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/home/sde/prod/.venv/lib/python3.8/site-packages/django/db/models/query.py" in filter
892. return self._filter_or_exclude(False, *args, **kwargs)
File "/home/sde/prod/.venv/lib/python3.8/site-packages/django/db/models/query.py" in _filter_or_exclude
910. clone.query.add_q(Q(*args, **kwargs))
File "/home/sde/prod/.venv/lib/python3.8/site-packages/django/db/models/sql/query.py" in add_q
1290. clause, _ = self._add_q(q_object, self.used_aliases)
File "/home/sde/prod/.venv/lib/python3.8/site-packages/django/db/models/sql/query.py" in _add_q
1315. child_clause, needed_inner = self.build_filter(
File "/home/sde/prod/.venv/lib/python3.8/site-packages/django/db/models/sql/query.py" in build_filter
1251. condition = self.build_lookup(lookups, col, value)
File "/home/sde/prod/.venv/lib/python3.8/site-packages/django/db/models/sql/query.py" in build_lookup
1116. lookup = lookup_class(lhs, rhs)
File "/home/sde/prod/.venv/lib/python3.8/site-packages/django/db/models/lookups.py" in __init__
20. self.rhs = self.get_prep_lookup()
File "/home/sde/prod/.venv/lib/python3.8/site-packages/django/db/models/lookups.py" in get_prep_lookup
70. return self.lhs.output_field.get_prep_value(self.rhs)
File "/home/sde/prod/.venv/lib/python3.8/site-packages/django/db/models/fields/__init__.py" in get_prep_value
1429. value = timezone.make_aware(value, default_timezone)
File "/home/sde/prod/.venv/lib/python3.8/site-packages/django/utils/timezone.py" in make_aware
270. return timezone.localize(value, is_dst=is_dst)
File "/home/sde/prod/.venv/lib/python3.8/site-packages/pytz/tzinfo.py" in localize
363. raise AmbiguousTimeError(dt)
Exception Type: AmbiguousTimeError at /enibar/photos
Exception Value: 2020-10-25 02:00:01
Request information:
USER: AnonymousUser
GET:
last_updated = '2020-10-25T02:00:01'