chore(home): mirror from kalinamall (9883e6a) with papatramp URLs
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
from dataclasses import dataclass
|
||||
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.models.mobile_settings import MOBILE_SETTINGS_ROW_ID, MobileSettings
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class MobileSettingsConfig:
|
||||
devices_allowed: bool
|
||||
max_devices_per_user: int
|
||||
min_app_version: str | None
|
||||
source: str = "db"
|
||||
|
||||
|
||||
def get_effective_mobile_settings(db: Session) -> MobileSettingsConfig:
|
||||
row = db.get(MobileSettings, MOBILE_SETTINGS_ROW_ID)
|
||||
if row is None:
|
||||
return MobileSettingsConfig(
|
||||
devices_allowed=False,
|
||||
max_devices_per_user=3,
|
||||
min_app_version=None,
|
||||
source="default",
|
||||
)
|
||||
return MobileSettingsConfig(
|
||||
devices_allowed=bool(row.devices_allowed),
|
||||
max_devices_per_user=max(1, int(row.max_devices_per_user or 3)),
|
||||
min_app_version=(row.min_app_version or "").strip() or None,
|
||||
source="db",
|
||||
)
|
||||
|
||||
|
||||
def upsert_mobile_settings(
|
||||
db: Session,
|
||||
*,
|
||||
devices_allowed: bool,
|
||||
max_devices_per_user: int,
|
||||
min_app_version: str | None,
|
||||
) -> MobileSettingsConfig:
|
||||
if max_devices_per_user < 1 or max_devices_per_user > 50:
|
||||
raise ValueError("max_devices_per_user must be between 1 and 50")
|
||||
cleaned_version = (min_app_version or "").strip() or None
|
||||
row = db.get(MobileSettings, MOBILE_SETTINGS_ROW_ID)
|
||||
if row is None:
|
||||
row = MobileSettings(
|
||||
id=MOBILE_SETTINGS_ROW_ID,
|
||||
devices_allowed=devices_allowed,
|
||||
max_devices_per_user=max_devices_per_user,
|
||||
min_app_version=cleaned_version,
|
||||
)
|
||||
db.add(row)
|
||||
else:
|
||||
row.devices_allowed = devices_allowed
|
||||
row.max_devices_per_user = max_devices_per_user
|
||||
row.min_app_version = cleaned_version
|
||||
db.commit()
|
||||
db.refresh(row)
|
||||
return get_effective_mobile_settings(db)
|
||||
Reference in New Issue
Block a user