# 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 ), ]