Done
Some checks failed
DevPlace CI / test (push) Failing after 3m27s

This commit is contained in:
retoor 2026-05-23 06:55:11 +02:00
parent 28bc8c1b74
commit 18c9f20090
4 changed files with 16 additions and 6 deletions

View File

@ -289,6 +289,14 @@ def get_setting(key: str, default: str = "") -> str:
return entry["value"]
def get_int_setting(key: str, default: int) -> int:
raw = get_setting(key, str(default))
try:
return int(raw)
except (TypeError, ValueError):
return default
def clear_settings_cache() -> None:
_settings_cache.clear()

View File

@ -215,6 +215,8 @@ async def admin_settings_save(request: Request, data: Annotated[AdminSettingsFor
for key, value in data.model_dump().items():
existing = settings.find_one(key=key)
if existing:
if value == "":
continue
settings.update({"id": existing["id"], "key": key, "value": value}, ["id"])
else:
settings.insert({"uid": generate_uid(), "key": key, "value": value})

View File

@ -2,7 +2,7 @@ import logging
from pathlib import Path
from fastapi import APIRouter, Request
from fastapi.responses import JSONResponse
from devplacepy.database import get_table, get_setting
from devplacepy.database import get_table, get_setting, get_int_setting
from devplacepy.utils import require_user
from devplacepy.attachments import store_attachment, delete_attachment as _delete_attachment, ALLOWED_UPLOAD_TYPES
@ -40,7 +40,7 @@ async def upload_file(request: Request):
result = store_attachment(content, file.filename, user["uid"])
if result is None:
max_size_mb = int(get_setting("max_upload_size_mb", "10"))
max_size_mb = get_int_setting("max_upload_size_mb", 10)
return JSONResponse({"error": f"File exceeds {max_size_mb}MB limit"}, status_code=413)
logger.info(f"File uploaded: {file.filename} ({len(content)} bytes) -> {result['url']}")

View File

@ -38,12 +38,12 @@ templates.env.globals["avatar_url"] = avatar_url
templates.env.globals["format_date"] = _format_date
templates.env.globals["TOPICS"] = TOPICS
def jinja_max_upload_size_mb():
from devplacepy.database import get_setting
return int(get_setting("max_upload_size_mb", "10"))
from devplacepy.database import get_int_setting
return get_int_setting("max_upload_size_mb", 10)
def jinja_max_attachments():
from devplacepy.database import get_setting
return int(get_setting("max_attachments_per_resource", "10"))
from devplacepy.database import get_int_setting
return get_int_setting("max_attachments_per_resource", 10)
def jinja_allowed_file_types():
from devplacepy.database import get_setting