oncall-engine/engine/apps/schedules/ical_events/proxy/ical_proxy.py
2022-08-18 14:28:48 +03:00

27 lines
1.1 KiB
Python

from abc import ABC, abstractmethod
from datetime import datetime
from typing import List, Tuple
from django.utils import timezone
from icalendar import Calendar, Event
class IcalService(ABC):
@abstractmethod
def get_events_from_ical_between(self, calendar: Calendar, start_date: datetime, end_date: datetime) -> List[Event]:
raise NotImplementedError
@abstractmethod
def get_start_and_end_with_respect_to_event_type(self, event: Event) -> Tuple[timezone.datetime, timezone.datetime]:
raise NotImplementedError
class IcalProxy(IcalService):
def __init__(self, ical_adapter: IcalService):
self.ical_adapter = ical_adapter
def get_events_from_ical_between(self, calendar: Calendar, start_date: datetime, end_date: datetime) -> List[Event]:
return self.ical_adapter.get_events_from_ical_between(calendar, start_date, end_date)
def get_start_and_end_with_respect_to_event_type(self, event: Event) -> Tuple[timezone.datetime, timezone.datetime]:
return self.ical_adapter.get_start_and_end_with_respect_to_event_type(event)