from __future__ import annotations from ..extensions import db from ..models import AppSetting QUICK_TASK_DEFAULTS = { "quick_task_points_fast": 4, "quick_task_points_normal": 8, "quick_task_points_medium": 12, "quick_task_points_heavy": 18, } QUICK_TASK_EFFORTS = [ ("fast", "Schnell", "quick_task_points_fast"), ("normal", "Normal", "quick_task_points_normal"), ("medium", "Dauert etwas", "quick_task_points_medium"), ("heavy", "Aufwendig", "quick_task_points_heavy"), ] def ensure_app_settings() -> None: for key, value in QUICK_TASK_DEFAULTS.items(): setting = AppSetting.query.filter_by(key=key).first() if not setting: db.session.add(AppSetting(key=key, value=str(value))) db.session.commit() def get_setting_int(key: str, default: int) -> int: setting = AppSetting.query.filter_by(key=key).first() if not setting: return default try: return int(setting.value) except (TypeError, ValueError): return default def set_setting_int(key: str, value: int) -> None: setting = AppSetting.query.filter_by(key=key).first() if not setting: setting = AppSetting(key=key, value=str(value)) db.session.add(setting) else: setting.value = str(value) def get_quick_task_config() -> dict[str, dict]: config: dict[str, dict] = {} for effort_key, label, setting_key in QUICK_TASK_EFFORTS: config[effort_key] = { "label": label, "setting_key": setting_key, "points": get_setting_int(setting_key, QUICK_TASK_DEFAULTS[setting_key]), } return config