GetTogether/events/migrations/0022_localize_datetimes.py

47 lines
2 KiB
Python

# Generated by Django 2.0 on 2018-04-01 15:11
from django.db import migrations
from django.utils import timezone
import pytz
def localize_event_datetimes(apps, schema_editor):
Event = MyModel = apps.get_model('events', 'Event')
for event in Event.objects.all():
utc_tz = pytz.timezone('UTC')
event_tz = get_event_timezone(event)
print("Converting event %s to %s" % (event.id, event_tz))
event.start_time = utc_tz.localize(timezone.make_naive(event_tz.localize(timezone.make_naive(event.start_time, pytz.utc))))
event.end_time = utc_tz.localize(timezone.make_naive(event_tz.localize(timezone.make_naive(event.end_time, pytz.utc))))
event.save()
def localize_commonevent_datetimes(apps, schema_editor):
CommonEvent = MyModel = apps.get_model('events', 'CommonEvent')
for event in CommonEvent.objects.all():
utc_tz = pytz.timezone('UTC')
event_tz = get_event_timezone(event)
print("Converting common event %s to %s" % (event.id, event_tz))
event.start_time = utc_tz.localize(timezone.make_naive(event_tz.localize(timezone.make_naive(event.start_time, pytz.utc))))
event.end_time = utc_tz.localize(timezone.make_naive(event_tz.localize(timezone.make_naive(event.end_time, pytz.utc))))
event.save()
def get_event_timezone(event):
if event.place is not None:
return pytz.timezone(event.place.tz)
elif hasattr(event, 'team') and event.team is not None:
return pytz.timezone(event.team.tz)
elif hasattr(event, 'city') and event.city is not None:
return pytz.timezone(event.city.tz)
else:
return pytz.timezone("UTC")
class Migration(migrations.Migration):
dependencies = [
('events', '0021_add_account_secret'),
]
operations = [
migrations.RunPython(localize_event_datetimes, reverse_code=migrations.RunPython.noop),
migrations.RunPython(localize_commonevent_datetimes, reverse_code=migrations.RunPython.noop),
]