# Generated by Django 2.2.28 on 2022-08-31 20:26 import datetime import json from zoneinfo import ZoneInfo from django.db import migrations TZ_BEFORE = ZoneInfo('PST8PDT') def forward(apps, schema_editor): DeletedEvent = apps.get_model('doc', 'DeletedEvent') for deleted_event in DeletedEvent.objects.all(): fields = json.loads(deleted_event.json) replacements = {} for k, v in fields.items(): if isinstance(v, str): try: dt = datetime.datetime.strptime(v, '%Y-%m-%d %H:%M:%S') except: pass else: replacements[k] = dt.replace(tzinfo=TZ_BEFORE).astimezone(datetime.timezone.utc).isoformat() if len(replacements) > 0: fields.update(replacements) deleted_event.json = json.dumps(fields) deleted_event.save() def reverse(apps, schema_editor): DeletedEvent = apps.get_model('doc', 'DeletedEvent') for deleted_event in DeletedEvent.objects.all(): fields = json.loads(deleted_event.json) replacements = {} for k, v in fields.items(): if isinstance(v, str) and 'T' in v: try: dt = datetime.datetime.fromisoformat(v) except: pass else: replacements[k] = dt.astimezone(TZ_BEFORE).replace(tzinfo=None).strftime('%Y-%m-%d %H:%M:%S') if len(replacements) > 0: fields.update(replacements) deleted_event.json = json.dumps(fields) deleted_event.save() class Migration(migrations.Migration): dependencies = [ ('doc', '0045_use_timezone_now_for_doc_models'), ('utils', '0003_pause_to_change_use_tz'), ] operations = [ migrations.RunPython(forward, reverse), ]