3cn-ecn/nantralPlatform

Fix naive datetime

Closed this issue · 5 comments

/usr/local/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1361: RuntimeWarning: DateTimeField Post.publication_date received a naive datetime (2021-09-20 00:00:00) while time zone support is active.
  RuntimeWarning)
/usr/local/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1361: RuntimeWarning: DateTimeField BaseEvent.date received a naive datetime (2021-09-30 00:00:00) while time zone support is active.
  RuntimeWarning)
[DJANGO] WARNING 2021-09-30 16:14:45,407 log django.request.log_response:230: Not Found: /account/upgrade-permanent
/usr/local/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1361: RuntimeWarning: DateTimeField Post.publication_date received a naive datetime (2021-09-20 00:00:00) while time zone support is active.
  RuntimeWarning)
/usr/local/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1361: RuntimeWarning: DateTimeField BaseEvent.date received a naive datetime (2021-09-30 00:00:00) while time zone support is active.
  RuntimeWarning)

On a des objets sans timezone, il faudrait les modifier pour virer les logs
Ou alors tuer les warnings

Quand on enlève le order_by("date"), le warning disparait.

Et le traceback:

Internal Server Error: /
Traceback (most recent call last):
  File "C:\Users\Charles\CloudStation\Documents\Perso\Dev\nantralPlatform\env\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
    response = get_response(request)
  File "C:\Users\Charles\CloudStation\Documents\Perso\Dev\nantralPlatform\env\lib\site-packages\django\core\handlers\base.py", line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Users\Charles\CloudStation\Documents\Perso\Dev\nantralPlatform\env\lib\site-packages\django\views\generic\base.py", line 70, in view
    return self.dispatch(request, *args, **kwargs)
  File "C:\Users\Charles\CloudStation\Documents\Perso\Dev\nantralPlatform\server\apps\home\views.py", line 33, in dispatch
    return super().dispatch(request, *args, **kwargs)
  File "C:\Users\Charles\CloudStation\Documents\Perso\Dev\nantralPlatform\env\lib\site-packages\django\contrib\auth\mixins.py", line 71, in dispatch
    return super().dispatch(request, *args, **kwargs)
  File "C:\Users\Charles\CloudStation\Documents\Perso\Dev\nantralPlatform\env\lib\site-packages\django\views\generic\base.py", line 98, in dispatch
    return handler(request, *args, **kwargs)
  File "C:\Users\Charles\CloudStation\Documents\Perso\Dev\nantralPlatform\env\lib\site-packages\django\views\generic\base.py", line 159, in get
    context = self.get_context_data(**kwargs)
  File "C:\Users\Charles\CloudStation\Documents\Perso\Dev\nantralPlatform\server\apps\home\views.py", line 38, in get_context_data
    posts: List[Post] = Post.objects.filter(
  File "C:\Users\Charles\CloudStation\Documents\Perso\Dev\nantralPlatform\env\lib\site-packages\django\db\models\manager.py", line 85, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "C:\Users\Charles\CloudStation\Documents\Perso\Dev\nantralPlatform\env\lib\site-packages\django\db\models\query.py", line 941, in filter
    return self._filter_or_exclude(False, args, kwargs)
  File "C:\Users\Charles\CloudStation\Documents\Perso\Dev\nantralPlatform\env\lib\site-packages\django\db\models\query.py", line 961, in _filter_or_exclude
    clone._filter_or_exclude_inplace(negate, args, kwargs)
  File "C:\Users\Charles\CloudStation\Documents\Perso\Dev\nantralPlatform\env\lib\site-packages\django\db\models\query.py", line 968, in _filter_or_exclude_inplace
    self._query.add_q(Q(*args, **kwargs))
  File "C:\Users\Charles\CloudStation\Documents\Perso\Dev\nantralPlatform\env\lib\site-packages\django\db\models\sql\query.py", line 1391, in 
add_q
    clause, _ = self._add_q(q_object, self.used_aliases)
  File "C:\Users\Charles\CloudStation\Documents\Perso\Dev\nantralPlatform\env\lib\site-packages\django\db\models\sql\query.py", line 1410, in 
_add_q
    child_clause, needed_inner = self.build_filter(
  File "C:\Users\Charles\CloudStation\Documents\Perso\Dev\nantralPlatform\env\lib\site-packages\django\db\models\sql\query.py", line 1345, in 
build_filter
    condition = self.build_lookup(lookups, col, value)
  File "C:\Users\Charles\CloudStation\Documents\Perso\Dev\nantralPlatform\env\lib\site-packages\django\db\models\sql\query.py", line 1191, in 
build_lookup
    lookup = lookup_class(lhs, rhs)
  File "C:\Users\Charles\CloudStation\Documents\Perso\Dev\nantralPlatform\env\lib\site-packages\django\db\models\lookups.py", line 25, in __init__
    self.rhs = self.get_prep_lookup()
  File "C:\Users\Charles\CloudStation\Documents\Perso\Dev\nantralPlatform\env\lib\site-packages\django\db\models\lookups.py", line 77, in get_prep_lookup
    return self.lhs.output_field.get_prep_value(self.rhs)
  File "C:\Users\Charles\CloudStation\Documents\Perso\Dev\nantralPlatform\env\lib\site-packages\django\db\models\fields\__init__.py", line 1416, in get_prep_value
    warnings.warn("DateTimeField %s received a naive datetime (%s)"
RuntimeWarning: DateTimeField Post.publication_date received a naive datetime (2021-09-21 03:04:49.351078) while time zone support is active.

C'est peut-être un bug de Django, mais quand on fait un filter sur un queryset, utiliser timezone.now() ne suffit pas, il faut utiliser timezone.make_aware(timezone.now()) pour éviter le RunTimeWarning.
Je ne comprends pas