Files
pi-weekly-newspaper/src/routes/settings.py
2026-04-06 15:21:18 -04:00

62 lines
2.3 KiB
Python

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"))