Update
This commit is contained in:
+15
-1
@@ -1,4 +1,4 @@
|
||||
from typing import Optional, Literal
|
||||
from typing import Literal
|
||||
from pydantic import BaseModel, Field, field_validator, model_validator
|
||||
from devplacepy.constants import TOPICS
|
||||
|
||||
@@ -159,3 +159,17 @@ class AdminRoleForm(BaseModel):
|
||||
|
||||
class AdminPasswordForm(BaseModel):
|
||||
password: str = Field(min_length=6, max_length=128)
|
||||
|
||||
|
||||
class AdminSettingsForm(BaseModel):
|
||||
site_name: str = Field(default="", max_length=200)
|
||||
site_description: str = Field(default="", max_length=500)
|
||||
site_tagline: str = Field(default="", max_length=500)
|
||||
news_grade_threshold: str = Field(default="", max_length=10)
|
||||
news_api_url: str = Field(default="", max_length=500)
|
||||
news_ai_url: str = Field(default="", max_length=500)
|
||||
news_ai_model: str = Field(default="", max_length=200)
|
||||
news_ai_key: str = Field(default="", max_length=500)
|
||||
max_upload_size_mb: str = Field(default="", max_length=10)
|
||||
allowed_file_types: str = Field(default="", max_length=1000)
|
||||
max_attachments_per_resource: str = Field(default="", max_length=10)
|
||||
|
||||
@@ -2,7 +2,7 @@ import logging
|
||||
from typing import Annotated
|
||||
from datetime import datetime
|
||||
from fastapi import APIRouter, Request, Form
|
||||
from devplacepy.models import AdminRoleForm, AdminPasswordForm
|
||||
from devplacepy.models import AdminRoleForm, AdminPasswordForm, AdminSettingsForm
|
||||
from fastapi.responses import HTMLResponse, RedirectResponse
|
||||
from devplacepy.database import get_table, db, build_pagination
|
||||
from devplacepy.templating import templates
|
||||
@@ -210,11 +210,10 @@ async def admin_news_delete(request: Request, uid: str):
|
||||
|
||||
|
||||
@router.post("/settings")
|
||||
async def admin_settings_save(request: Request):
|
||||
async def admin_settings_save(request: Request, data: Annotated[AdminSettingsForm, Form()]):
|
||||
admin = require_admin(request)
|
||||
form = await request.form()
|
||||
settings = get_table("site_settings")
|
||||
for key, value in form.multi_items():
|
||||
for key, value in data.model_dump().items():
|
||||
existing = settings.find_one(key=key)
|
||||
if existing:
|
||||
settings.update({"id": existing["id"], "key": key, "value": value}, ["id"])
|
||||
|
||||
Reference in New Issue
Block a user