Files
Web-NibblePoker/website/sidebar.py
Herwin Bozet 124dc1042f Added "new" indicator to sidebar
Update sidebar.yml, commons.yml, and 4 more files...
2024-10-20 22:56:42 +02:00

41 lines
1.0 KiB
Python

from dataclasses import dataclass, field
from datetime import datetime, timezone
from typing import Optional
import yaml
@dataclass
class SidebarEntry:
title_key: str
icon: str
active_id: str
has_new_until_utc: int
abs_href: Optional[str] = field(default=None)
raw_href: Optional[str] = field(default=None)
def has_new(self) -> bool:
return datetime.fromtimestamp(self.has_new_until_utc, tz=timezone.utc) > datetime.now(timezone.utc)
__SIDEBAR_ENTRIES: list[Optional[SidebarEntry]] = list()
def reload_sidebar_entries(definition_file: str) -> None:
global __SIDEBAR_ENTRIES
__SIDEBAR_ENTRIES = list()
with open(definition_file, 'r') as f:
raw_sidebar_entries = yaml.safe_load(f)
for raw_sidebar_entry in raw_sidebar_entries:
try:
__SIDEBAR_ENTRIES.append(SidebarEntry(**raw_sidebar_entry))
except Exception:
__SIDEBAR_ENTRIES.append(None)
def get_sidebar_entries() -> list[Optional[SidebarEntry]]:
return __SIDEBAR_ENTRIES