26 lines
856 B
Python
26 lines
856 B
Python
from datetime import date, datetime
|
||
|
||
|
||
def format_money(value: float | int | None) -> str:
|
||
"""Return money value in a readable Russian format."""
|
||
amount = 0 if value is None else float(value)
|
||
return f"{amount:,.2f} ₽".replace(",", " ")
|
||
|
||
|
||
def current_month_key() -> str:
|
||
"""Return current month in SQLite-friendly format YYYY-MM."""
|
||
return date.today().strftime("%Y-%m")
|
||
|
||
|
||
def today_text() -> str:
|
||
"""Return current date in ISO format for entry fields."""
|
||
return date.today().strftime("%Y-%m-%d")
|
||
|
||
|
||
def validate_date(value: str) -> str:
|
||
"""Validate user date and return normalized ISO date."""
|
||
try:
|
||
return datetime.strptime(value.strip(), "%Y-%m-%d").strftime("%Y-%m-%d")
|
||
except ValueError as error:
|
||
raise ValueError("Дата должна быть в формате ГГГГ-ММ-ДД.") from error
|