> Version 0.6 brings DashMachine one big step forward to being a finished product by adding a gui to edit the various settings in the config.ini. **Changelog** - improvements to /home including 'pinned' cards, multi-select tag filtering, 'action providers' allowing you to do web searches from the searchbar - rebuilt sidenav with list view, mirroring filter/search/collapse state of the homepage - /settings and /home now on same route - dynamic reloading of settings (no more page reloads) - dedicated config.ini editor slide-out - settings editor slide-out - card editor slide-out - better access group control - dedicated documentation pages - improved documentation - new system for automatically generating documentation for platforms - ability to load custom platforms - added an 'on_starup' method for platforms allowing for registering api routes. (example coming soon)
72 lines
2.2 KiB
Python
72 lines
2.2 KiB
Python
import os
|
|
from shutil import move
|
|
from flask import (
|
|
request,
|
|
Blueprint,
|
|
jsonify,
|
|
render_template_string,
|
|
)
|
|
from dashmachine.main.read_config import read_config
|
|
from dashmachine.main.models import Files
|
|
from dashmachine.settings_system.utils import load_files_html
|
|
from dashmachine.paths import (
|
|
backgrounds_images_folder,
|
|
icons_images_folder,
|
|
user_data_folder,
|
|
template_apps_folder,
|
|
)
|
|
|
|
settings_system = Blueprint("settings_system", __name__)
|
|
|
|
|
|
@settings_system.route("/get_settings_data", methods=["GET"])
|
|
def get_settings_data():
|
|
html = render_template_string(
|
|
"""
|
|
{% from "main/base.html" import SettingsData with context%}
|
|
{{ SettingsData() }}
|
|
"""
|
|
)
|
|
return html
|
|
|
|
|
|
@settings_system.route("/settings/save_config", methods=["POST"])
|
|
def save_config():
|
|
with open(os.path.join(user_data_folder, "config.ini"), "w") as config_file:
|
|
config_file.write(request.form.get("config"))
|
|
msg = read_config()
|
|
if msg["msg"] != "success":
|
|
read_config(from_backup=True)
|
|
return jsonify(data=msg)
|
|
|
|
|
|
@settings_system.route("/settings/add_images", methods=["POST"])
|
|
def add_images():
|
|
if request.form.get("folder") == "icons":
|
|
dest_folder = icons_images_folder
|
|
elif request.form.get("folder") == "backgrounds":
|
|
dest_folder = backgrounds_images_folder
|
|
for cached_file in request.form.get("files").split(","):
|
|
file = Files.query.filter_by(cache=cached_file).first()
|
|
new_path = os.path.join(dest_folder, file.name)
|
|
move(file.path, new_path)
|
|
return load_files_html()
|
|
|
|
|
|
@settings_system.route("/settings/delete_file", methods=["GET"])
|
|
def delete_file():
|
|
if request.args.get("folder") == "backgrounds":
|
|
file = os.path.join(backgrounds_images_folder, request.args.get("file"))
|
|
if request.args.get("folder") == "icons":
|
|
file = os.path.join(icons_images_folder, request.args.get("file"))
|
|
os.remove(file)
|
|
return load_files_html()
|
|
|
|
|
|
@settings_system.route("/settings/get_app_template", methods=["GET"])
|
|
def get_app_template():
|
|
fn = os.path.join(template_apps_folder, f"{request.args.get('name')}.ini")
|
|
with open(fn, "r") as template_app_ini:
|
|
template = template_app_ini.read().replace("\n", "<br>")
|
|
return template
|