parent
28bc8c1b74
commit
18c9f20090
@ -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()
|
||||
|
||||
|
||||
@ -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})
|
||||
|
||||
@ -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']}")
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user