Ross Mountjoy 62191b21b8 ##### Updated to version 0.6!
> 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)
2020-05-07 09:27:18 -04:00

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