import json import os from typing import List from models import Event DATA_FILE = "calendar_data.json" def load_events() -> List[Event]: """Загружает события из JSON файла""" if not os.path.exists(DATA_FILE): return [] try: with open(DATA_FILE, 'r', encoding='utf-8') as f: data = json.load(f) return [Event.from_dict(item) for item in data] except (json.JSONDecodeError, FileNotFoundError): return [] def save_events(events: List[Event]) -> None: """Сохраняет события в JSON файл""" with open(DATA_FILE, 'w', encoding='utf-8') as f: data = [event.to_dict() for event in events] json.dump(data, f, ensure_ascii=False, indent=2) def add_event(event: Event) -> None: """Добавляет новое событие""" events = load_events() events.append(event) save_events(events) def remove_event(index: int) -> bool: """Удаляет событие по индексу (начиная с 0)""" events = load_events() if 0 <= index < len(events): del events[index] save_events(events) return True return False def get_events_by_date(date: str) -> List[Event]: """Возвращает события на конкретную дату""" events = load_events() return [e for e in events if e.date == date]