diff --git a/dashmachine/rest_api/resources.py b/dashmachine/rest_api/resources.py index 0bad2d9..a18f68a 100755 --- a/dashmachine/rest_api/resources.py +++ b/dashmachine/rest_api/resources.py @@ -1,12 +1,12 @@ import os from flask import request from flask_restful import Resource -from dashmachine.version import tcmachine_version +from dashmachine.version import version class GetVersion(Resource): def get(self): - return {"Version": tcmachine_version} + return {"Version": version} class ServerShutdown(Resource): diff --git a/dashmachine/settings_system/routes.py b/dashmachine/settings_system/routes.py index 43b4977..2b54e44 100644 --- a/dashmachine/settings_system/routes.py +++ b/dashmachine/settings_system/routes.py @@ -5,6 +5,8 @@ from dashmachine.user_system.forms import UserForm from dashmachine.main.utils import read_config, row2dict from dashmachine.main.models import Files, TemplateApps from dashmachine.paths import backgrounds_images_folder, icons_images_folder +from dashmachine.update import check_needed, update_dashmachine +from dashmachine.version import version from dashmachine.settings_system.utils import load_files_html settings_system = Blueprint("settings_system", __name__) @@ -21,12 +23,15 @@ def settings(): t_apps = TemplateApps.query.all() for t_app in t_apps: template_apps.append(f"{t_app.name}&&{t_app.icon}") + update_need = check_needed() return render_template( "settings_system/settings.html", config_form=config_form, files_html=files_html, user_form=user_form, template_apps=",".join(template_apps), + version=version, + update_need=update_need, ) @@ -59,3 +64,9 @@ def get_app_template(): if key not in ["id", "name"]: template += f"{key} = {value}
" return template + + +@settings_system.route("/settings/update", methods=["GET"]) +def update(): + update_dashmachine() + return "ok" diff --git a/dashmachine/static/js/settings_system/settings.js b/dashmachine/static/js/settings_system/settings.js index c6a0e85..c360334 100644 --- a/dashmachine/static/js/settings_system/settings.js +++ b/dashmachine/static/js/settings_system/settings.js @@ -66,4 +66,14 @@ $( document ).ready(function() { } }); + $("#update-btn").on('click', function(e) { + $.ajax({ + url: $(this).attr('data-url'), + type: 'GET', + success: function(data){ + M.toast({html: 'DashMachine Updated'}); + } + }); + }); + }); \ No newline at end of file diff --git a/dashmachine/templates/settings_system/settings.html b/dashmachine/templates/settings_system/settings.html index 4cf38c2..be16861 100644 --- a/dashmachine/templates/settings_system/settings.html +++ b/dashmachine/templates/settings_system/settings.html @@ -253,37 +253,56 @@
-
User
- {{ user_form.hidden_tag() }} +
+
User
+ {{ user_form.hidden_tag() }} - {{ input( - label="Username", - id="user-form-username", - size="s12", - form_obj=user_form.username, - val=current_user.username - ) }} + {{ input( + label="Username", + id="user-form-username", + size="s12", + form_obj=user_form.username, + val=current_user.username + ) }} - {{ input( - label="Password", - id="user-form-password", - form_obj=user_form.password, - size="s12" - ) }} + {{ input( + label="Password", + id="user-form-password", + form_obj=user_form.password, + size="s12" + ) }} - {{ input( - label="Confirm Password", - id="user-form-confirm_password", - form_obj=user_form.confirm_password, - required='required', - size="s12" - ) }} + {{ input( + label="Confirm Password", + id="user-form-confirm_password", + form_obj=user_form.confirm_password, + required='required', + size="s12" + ) }} + + {{ button( + icon="save", + float="left", + text="save" + ) }} +
+ +
+
DashMachine
+

version: {{ version }}

+ + {% if update_needed %} + {{ button( + float="left", + id="update-btn", + icon="system_update_alt", + data={"url": url_for('settings_system.update')}, + text="update available" + ) }} + {% endif %} + +
- {{ button( - icon="save", - float="left", - text="save" - ) }}
diff --git a/dashmachine/update.py b/dashmachine/update.py index 9f9926a..0c1d757 100644 --- a/dashmachine/update.py +++ b/dashmachine/update.py @@ -2,7 +2,32 @@ import os import subprocess from dashmachine.paths import root_folder -migrate_fn = os.path.join(root_folder, 'manage_db.py db migrate') -upgrade_fn = os.path.join(root_folder, 'manage_db.py db upgrade') -def update(): +def check_needed(): + subprocess.run("git remote update", shell=True) + out = subprocess.run( + "git status -uno", stdout=subprocess.PIPE, shell=True, encoding="utf-8" + ) + if str(out.stdout).find("Your branch is up to date") > -1: + needed = False + return needed + + elif str(out.stdout).find("Your branch is up-to-date") > -1: + needed = False + return needed + else: + needed = True + return needed + + +def update_dashmachine(): + + subprocess.run( + "git pull origin master", stdout=subprocess.PIPE, shell=True, encoding="utf-8" + ) + + migrate_cmd = "python " + os.path.join(root_folder, "manage_db.py db migrate") + subprocess.run(migrate_cmd, stderr=subprocess.PIPE, shell=True, encoding="utf-8") + + upgrade_cmd = "python " + os.path.join(root_folder, "manage_db.py db upgrade") + subprocess.run(upgrade_cmd, stderr=subprocess.PIPE, shell=True, encoding="utf-8") diff --git a/dashmachine/version.py b/dashmachine/version.py index e1191cc..4b88209 100755 --- a/dashmachine/version.py +++ b/dashmachine/version.py @@ -1 +1 @@ -tcmachine_version = "v0.0" +version = "v0.1"