62 lines
2.3 KiB
Python
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"))
|