# Generated by Django 4.0.4 on 2022-05-05 10:28
from datetime import date, timedelta

import arrow
from django.db import migrations
from icalevents import icalevents

from calendar_utils.parser import process_event_list


def update_event_lists(apps, schema):
    Calendar = apps.get_model("calendar_utils", "Calendar")

    for calendar in Calendar.objects.all():
        try:
            event_list = icalevents.events(
                url=calendar.url,
                start=date.today() - timedelta(days=30),
                end=date.today() + timedelta(days=60),
            )
        except ValueError:
            print("Could not parse calendar from {}".format(calendar.url))

        event_list_hash = str(hash(str(event_list)))
        past, future = process_event_list(event_list)
        calendar.past_events = past
        calendar.future_events = list(reversed(future))
        calendar.event_hash = event_list_hash

        calendar.last_update = arrow.utcnow().datetime
        calendar.save()


class Migration(migrations.Migration):
    dependencies = [
        ("calendar_utils", "0003_remove_calendar_source_calendar_event_hash"),
    ]

    operations = [
        migrations.RunPython(update_event_lists, reverse_code=migrations.RunPython.noop)
    ]