from dataclasses import dataclass, field from datetime import datetime from pathlib import Path from typing import List, Optional from models.astro_object import AstroObject @dataclass class Session: """Модель сессии наблюдения""" camera: str optics: str start_time: datetime end_time: Optional[datetime] = None objects: List[AstroObject] = field(default_factory=list) session_folder: Optional[Path] = None def add_object(self, astro_object: AstroObject): self.objects.append(astro_object) def get_current_object(self) -> Optional[AstroObject]: return self.objects[-1] if self.objects else None def get_session_name(self) -> str: return f"AstroSession_{self.start_time.strftime('%Y-%m-%d')}" def finish(self): self.end_time = datetime.now() def is_active(self) -> bool: return self.end_time is None