feat: add floating quick task flow
This commit is contained in:
57
app/services/app_settings.py
Normal file
57
app/services/app_settings.py
Normal file
@@ -0,0 +1,57 @@
|
||||
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
|
||||
Reference in New Issue
Block a user