from datetime import datetime, timedelta, time import datetime as Datetime from django.db import models import urllib.request import ssl from icalendar import Calendar, Event import recurring_ical_events # Create your models here. class cls_caldav(): url = "" data = None items = [] day = [] night = [] def __init__(self, url=""): self.url = url def clear_data(self): self.data = None self.items = [] self.day = [] self.night = [] def get_caldav_data(self): ctx = ssl.create_default_context() ctx.check_hostname = False ctx.verify_mode = ssl.CERT_NONE self.clear_data() o_url = urllib.request.urlopen(self.url, context=ctx) self.data = o_url.read() o_url.close() now = f"{datetime.now().day}.{datetime.now().month}.{datetime.now().year}" tomorow = datetime.now() + timedelta(days=1) today = datetime.today() for event in recurring_ical_events.of(Calendar.from_ical(self.data)).at(today): print(event) item = _caldav_item() item.name = event["SUMMARY"] item.desc = event["DESCRIPTION"] item.dtstart = event["DTSTART"].dt.strftime("%d.%m.%Y %H:%M") item.dtend = event["DTEND"].dt.strftime("%d.%m.%Y %H:%M") self.items.append(item) start = event["DTSTART"].dt if isinstance(start, Datetime.date): start = datetime.combine(start, datetime.min.time()) if start < datetime.combine(datetime.today(), time(19,0)): self.day.append(item) if start >= datetime.combine(datetime.today(), time(19,0)): self.night.append(item) print(self.day) print(self.night) return self.data class _caldav_item(): name = "" desc = "" dtstart = None dtend = None dtstamp = None o_caldav = cls_caldav(url="https://sync.infomaniak.com/calendars/AA01593/a4835de4-b3cd-46ca-8f48-3dacd3a2b46e?export")