feat: complete web UI — dashboard, articles, publish, settings, issues
Made-with: Cursor
This commit is contained in:
61
src/routes/settings.py
Normal file
61
src/routes/settings.py
Normal file
@@ -0,0 +1,61 @@
|
||||
from flask import Blueprint, render_template, request, redirect, url_for, flash, current_app
|
||||
|
||||
from src.models import Setting
|
||||
import config
|
||||
|
||||
settings_bp = Blueprint("settings", __name__)
|
||||
|
||||
|
||||
@settings_bp.route("/settings", methods=["GET"])
|
||||
def index():
|
||||
feed_url = Setting.get("feed_url", default=config.FEED_URL)
|
||||
fetch_interval = Setting.get("fetch_interval_hours", default=config.FETCH_INTERVAL_HOURS)
|
||||
auto_publish = Setting.get("auto_publish", default=None)
|
||||
max_landscape = Setting.get("image_max_landscape", default=list(config.IMAGE_MAX_LANDSCAPE))
|
||||
max_portrait = Setting.get("image_max_portrait", default=list(config.IMAGE_MAX_PORTRAIT))
|
||||
|
||||
return render_template(
|
||||
"settings.html",
|
||||
feed_url=feed_url,
|
||||
fetch_interval=fetch_interval,
|
||||
auto_publish=auto_publish,
|
||||
max_landscape=max_landscape,
|
||||
max_portrait=max_portrait,
|
||||
)
|
||||
|
||||
|
||||
@settings_bp.route("/settings", methods=["POST"])
|
||||
def update():
|
||||
feed_url = request.form.get("feed_url", config.FEED_URL)
|
||||
fetch_interval = int(request.form.get("fetch_interval", config.FETCH_INTERVAL_HOURS))
|
||||
|
||||
Setting.set("feed_url", feed_url)
|
||||
config.FEED_URL = feed_url
|
||||
|
||||
scheduler_mgr = current_app.config.get("SCHEDULER_MANAGER")
|
||||
if scheduler_mgr:
|
||||
scheduler_mgr.update_fetch_interval(fetch_interval)
|
||||
|
||||
auto_enabled = request.form.get("auto_publish_enabled") == "on"
|
||||
if auto_enabled:
|
||||
day = request.form.get("auto_publish_day", "sun")
|
||||
hour = int(request.form.get("auto_publish_hour", 6))
|
||||
minute = int(request.form.get("auto_publish_minute", 0))
|
||||
method = request.form.get("auto_publish_cover", "text")
|
||||
if scheduler_mgr:
|
||||
scheduler_mgr.enable_auto_publish(day, hour, minute, method)
|
||||
else:
|
||||
if scheduler_mgr:
|
||||
scheduler_mgr.disable_auto_publish()
|
||||
|
||||
lw = int(request.form.get("landscape_w", 800))
|
||||
lh = int(request.form.get("landscape_h", 480))
|
||||
pw = int(request.form.get("portrait_w", 480))
|
||||
ph = int(request.form.get("portrait_h", 800))
|
||||
Setting.set("image_max_landscape", [lw, lh])
|
||||
Setting.set("image_max_portrait", [pw, ph])
|
||||
config.IMAGE_MAX_LANDSCAPE = (lw, lh)
|
||||
config.IMAGE_MAX_PORTRAIT = (pw, ph)
|
||||
|
||||
flash("Settings saved.")
|
||||
return redirect(url_for("settings.index"))
|
||||
Reference in New Issue
Block a user