From 3e0e654a587866af283a723d5c216768a0a2dae4 Mon Sep 17 00:00:00 2001 From: Ernesto Rico Schmidt <ernesto@helsinki.at> Date: Sun, 4 Oct 2020 21:36:13 -0400 Subject: [PATCH] Replace naive datetime with timezone aware. Also clean-up unused imports. --- program/models.py | 35 ++++++++++++++++------------------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/program/models.py b/program/models.py index ae330a3d..b9a0b3b5 100644 --- a/program/models.py +++ b/program/models.py @@ -1,23 +1,20 @@ -# -*- coding: utf-8 -*- +from datetime import date, datetime, time, timedelta +from dateutil.relativedelta import relativedelta +from dateutil.rrule import rrule from django.contrib.auth.models import User from django.core.exceptions import ObjectDoesNotExist, ValidationError, MultipleObjectsReturned -from django.urls import reverse from django.db import models from django.db.models import Q from django.forms.models import model_to_dict +from django.urls import reverse +from django.utils import timezone from django.utils.translation import ugettext_lazy as _ -from versatileimagefield.fields import VersatileImageField, PPOIField - from tinymce import models as tinymce_models - -from datetime import date, datetime, time, timedelta -from dateutil.relativedelta import relativedelta -from dateutil.rrule import rrule - -from .utils import get_automation_id_choices +from versatileimagefield.fields import VersatileImageField, PPOIField from pv.settings import THUMBNAIL_SIZES, AUTO_SET_UNTIL_DATE_TO_END_OF_YEAR, AUTO_SET_UNTIL_DATE_TO_DAYS_IN_FUTURE +from .utils import get_automation_id_choices class Type(models.Model): @@ -277,7 +274,7 @@ class Host(models.Model): return reverse('host-detail', args=[str(self.id)]) def active_shows(self): - return self.shows.filter(schedules__until__gt=datetime.today()) + return self.shows.filter(schedules__until__gt=timezone.now()) def is_editable(self, host_id): """ @@ -449,8 +446,8 @@ class Schedule(models.Model): dstart = datetime.strptime(str(sdl['dstart']), '%Y-%m-%d').date() # Schedule mustn't start in the past when adding - if pk is None and dstart < datetime.today().date(): - dstart = datetime.today().date() + if pk is None and dstart < timezone.now().date(): + dstart = timezone.now().date() tstart = sdl['tstart'] + ':00' if len(str(sdl['tstart'])) == 5 else sdl['tstart'] tend = sdl['tend'] + ':00' if len(str(sdl['tend'])) == 5 else sdl['tend'] @@ -465,7 +462,7 @@ class Schedule(models.Model): # Set it to the end of the year # Or add x days if AUTO_SET_UNTIL_DATE_TO_END_OF_YEAR: - now = datetime.now() + now = timezone.now() until = datetime.strptime(str(now.year) + '-12-31', '%Y-%m-%d').date() else: until = dstart + timedelta(days=+AUTO_SET_UNTIL_DATE_TO_DAYS_IN_FUTURE) @@ -847,7 +844,7 @@ class Schedule(models.Model): for ts in conflicts['projected']: # Ignore past dates - if datetime.strptime(ts['start'], "%Y-%m-%d %H:%M:%S") <= datetime.today(): + if datetime.strptime(ts['start'], "%Y-%m-%d %H:%M:%S") <= timezone.now(): continue # If no solution necessary @@ -1080,16 +1077,16 @@ class TimeSlotManager(models.Manager): @staticmethod def get_or_create_current(): try: - return TimeSlot.objects.get(start__lte=datetime.now(), end__gt=datetime.now()) + return TimeSlot.objects.get(start__lte=timezone.now(), end__gt=timezone.now()) except MultipleObjectsReturned: - return TimeSlot.objects.filter(start__lte=datetime.now(), end__gt=datetime.now())[0] + return TimeSlot.objects.filter(start__lte=timezone.now(), end__gt=timezone.now())[0] except ObjectDoesNotExist: once = RRule.objects.get(pk=1) today = date.today().weekday() default = Show.objects.get(pk=1) - previous_timeslot = TimeSlot.objects.filter(end__lte=datetime.now()).order_by('-start')[0] - next_timeslot = TimeSlot.objects.filter(start__gte=datetime.now())[0] + previous_timeslot = TimeSlot.objects.filter(end__lte=timezone.now()).order_by('-start')[0] + next_timeslot = TimeSlot.objects.filter(start__gte=timezone.now())[0] dstart, tstart = previous_timeslot.end.date(), previous_timeslot.end.time() until, tend = next_timeslot.start.date(), next_timeslot.start.time() -- GitLab