Files
personal-calendar/storage.py
Дедов Егор Сергеевич 816c9f1cda Add calendar implementation: models, storage, CLI
2026-05-18 14:51:05 +03:00

44 lines
1.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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]