diff --git a/README.md b/README.md index 1eb7a7c..9a75e71 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,11 @@ # DashMachine ### Another web application bookmark dashboard, with fun features. -![screenshot](https://i.ibb.co/chbBkzk/2020-02-02-09-46.png) +![screenshot](https://i.ibb.co/HxS4SPd/2020-03-08-10-40.png) -![screenshot](https://i.ibb.co/HXbfhnp/2020-02-02-09-47.png) +![screenshot](https://i.ibb.co/7nmJR3J/2020-03-08-10-43.png) + +![screenshot](https://i.ibb.co/y8Gr4C7/2020-03-08-10-45.png) ### Features * creates a dashboard to view web pages @@ -60,6 +62,10 @@ Password: adminadmin ## Updating For python, use git. For docker, just pull the latest image and recreate the container. +**Note:** if you update DashMachine and it fails to start, it's possible something is messed up +with your database file. Backup your files in the user_data folder, delete the contents and +restart DashMachine. This will reset your user table, so log in with the default user/pass. + ## Configuration The user data folder is located at DashMachine/dashmachine/user_data. This is where the config.ini, custom backgrounds/icons, and the database file live. A reference for what can go into the config.ini file can be found on the settings page of the dashmachine by clicking the info icon next to 'Config'. @@ -67,8 +73,11 @@ The user data folder is located at DashMachine/dashmachine/user_data. This is wh If you change the config.ini file, you either have to restart the container (or python script) or click the 'save' button in the config section of settings for the config to be applied. Pictures added to the backgrounds/icons folders are available immediately. ## Want to contribute? -Check out the pull request template! -https://git.wolf-house.net/ross/DashMachine/src/branch/master/pull_request_template.md +Please use the pull request template at: +https://github.com/rmountjoy92/DashMachine/blob/master/pull_request_template.md + +See this link for how to create a pull request: +https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request ## Tech used * Flask @@ -76,4 +85,8 @@ https://git.wolf-house.net/ross/DashMachine/src/branch/master/pull_request_templ * Jinja2 * Materialize css * JavaScript/jQuery/jQueryUI -* Requests (python) \ No newline at end of file +* Requests (python) + +## FAQs +1. does not work in iframe +see https://github.com/rmountjoy92/DashMachine/issues/6 diff --git a/config_readme.md b/config_readme.md index a51e4f2..7009eab 100644 --- a/config_readme.md +++ b/config_readme.md @@ -14,6 +14,7 @@ background = None roles = admin,user,public_user home_access_groups = admin_only settings_access_groups = admin_only +custom_app_title = DashMachine ``` | Variable | Required | Description | Options | @@ -25,6 +26,7 @@ settings_access_groups = admin_only | roles | No | User roles for access groups. | comma separated string, if not defined, this is set to 'admin,user,public_user'. Note: admin, user, public_user roles are required and will be added automatically if omitted. | | home_access_groups | No | Define which access groups can access the /home page | Groups defined in your config. If not defined, default is admin_only | | settings_access_groups | No | Define which access groups can access the /settings page | Groups defined in your config. If not defined, default is admin_only | +| custom_app_title | No | Change the title of the app for browser tabs | string | ##### Apps These entries are the cards that you see one the home page, as well as the sidenav. Entries diff --git a/dashmachine/main/read_config.py b/dashmachine/main/read_config.py index 84296f3..59c5a41 100644 --- a/dashmachine/main/read_config.py +++ b/dashmachine/main/read_config.py @@ -63,6 +63,10 @@ def read_config(): ) settings.home_view_mode = config["Settings"].get("home_view_mode", "grid") + settings.custom_app_title = config["Settings"].get( + "custom_app_title", "DashMachine" + ) + db.session.add(settings) db.session.commit() @@ -143,7 +147,14 @@ def read_config(): db.session.add(tag_db) db.session.commit() else: - app.tags = None + if Tags.query.first(): + app.tags = "Untagged" + if not Tags.query.filter_by(name="Untagged").first(): + tag_db = Tags(name="Untagged") + db.session.add(tag_db) + db.session.commit() + else: + app.tags = None db.session.add(app) db.session.commit() diff --git a/dashmachine/main/utils.py b/dashmachine/main/utils.py index fe90e06..419c7fd 100755 --- a/dashmachine/main/utils.py +++ b/dashmachine/main/utils.py @@ -1,7 +1,8 @@ import os import importlib from shutil import copyfile -from dashmachine.paths import dashmachine_folder, images_folder, root_folder +from PIL import Image, ImageOps +from dashmachine.paths import dashmachine_folder, images_folder from dashmachine.main.models import Groups from dashmachine.main.read_config import read_config from dashmachine.settings_system.models import Settings @@ -26,6 +27,7 @@ def public_route(decorated_function): def dashmachine_init(): + resize_template_app_images() db.create_all() db.session.commit() @@ -100,3 +102,12 @@ def get_data_source(data_source): ) platform = module.Platform(data_source, **data_source_args) return platform.process() + + +def resize_template_app_images(): + folder = os.path.join(images_folder, "apps") + for file in os.listdir(folder): + fp = os.path.join(folder, file) + image = Image.open(fp) + image.thumbnail((64, 64)) + image.save(fp) diff --git a/dashmachine/settings_system/models.py b/dashmachine/settings_system/models.py index b686a3d..ffd4acc 100644 --- a/dashmachine/settings_system/models.py +++ b/dashmachine/settings_system/models.py @@ -10,3 +10,4 @@ class Settings(db.Model): home_access_groups = db.Column(db.String()) settings_access_groups = db.Column(db.String()) home_view_mode = db.Column(db.String()) + custom_app_title = db.Column(db.String()) diff --git a/dashmachine/static/images/apps/Syncthing.png b/dashmachine/static/images/apps/Syncthing.png index 1e9f327..60274f6 100644 Binary files a/dashmachine/static/images/apps/Syncthing.png and b/dashmachine/static/images/apps/Syncthing.png differ diff --git a/dashmachine/static/images/apps/airsonic.png b/dashmachine/static/images/apps/airsonic.png index 363f387..20f8307 100644 Binary files a/dashmachine/static/images/apps/airsonic.png and b/dashmachine/static/images/apps/airsonic.png differ diff --git a/dashmachine/static/images/apps/bazarr.png b/dashmachine/static/images/apps/bazarr.png index 9bcaa29..4296c9e 100644 Binary files a/dashmachine/static/images/apps/bazarr.png and b/dashmachine/static/images/apps/bazarr.png differ diff --git a/dashmachine/static/images/apps/bitwarden.png b/dashmachine/static/images/apps/bitwarden.png index be45706..6effe64 100644 Binary files a/dashmachine/static/images/apps/bitwarden.png and b/dashmachine/static/images/apps/bitwarden.png differ diff --git a/dashmachine/static/images/apps/bookstack.png b/dashmachine/static/images/apps/bookstack.png index fdc0a04..dbbdcd4 100644 Binary files a/dashmachine/static/images/apps/bookstack.png and b/dashmachine/static/images/apps/bookstack.png differ diff --git a/dashmachine/static/images/apps/calibre-web.png b/dashmachine/static/images/apps/calibre-web.png index e8a7f81..cb292b5 100644 Binary files a/dashmachine/static/images/apps/calibre-web.png and b/dashmachine/static/images/apps/calibre-web.png differ diff --git a/dashmachine/static/images/apps/default.png b/dashmachine/static/images/apps/default.png index d784122..0a6edfa 100644 Binary files a/dashmachine/static/images/apps/default.png and b/dashmachine/static/images/apps/default.png differ diff --git a/dashmachine/static/images/apps/deluge.png b/dashmachine/static/images/apps/deluge.png index d3ab33b..dc51dac 100644 Binary files a/dashmachine/static/images/apps/deluge.png and b/dashmachine/static/images/apps/deluge.png differ diff --git a/dashmachine/static/images/apps/emby.png b/dashmachine/static/images/apps/emby.png index 1f4a9f1..0da28de 100644 Binary files a/dashmachine/static/images/apps/emby.png and b/dashmachine/static/images/apps/emby.png differ diff --git a/dashmachine/static/images/apps/gitea.png b/dashmachine/static/images/apps/gitea.png index dd3e97c..38cddbd 100644 Binary files a/dashmachine/static/images/apps/gitea.png and b/dashmachine/static/images/apps/gitea.png differ diff --git a/dashmachine/static/images/apps/gotify.png b/dashmachine/static/images/apps/gotify.png index 5d29004..eb86229 100644 Binary files a/dashmachine/static/images/apps/gotify.png and b/dashmachine/static/images/apps/gotify.png differ diff --git a/dashmachine/static/images/apps/grafana.png b/dashmachine/static/images/apps/grafana.png index 57e5797..017a931 100644 Binary files a/dashmachine/static/images/apps/grafana.png and b/dashmachine/static/images/apps/grafana.png differ diff --git a/dashmachine/static/images/apps/handbrake.png b/dashmachine/static/images/apps/handbrake.png index 38f49b9..acf8272 100644 Binary files a/dashmachine/static/images/apps/handbrake.png and b/dashmachine/static/images/apps/handbrake.png differ diff --git a/dashmachine/static/images/apps/home-assistant.png b/dashmachine/static/images/apps/home-assistant.png index 24fdd16..d83e56f 100644 Binary files a/dashmachine/static/images/apps/home-assistant.png and b/dashmachine/static/images/apps/home-assistant.png differ diff --git a/dashmachine/static/images/apps/jackett.png b/dashmachine/static/images/apps/jackett.png index 5ada92f..c764645 100644 Binary files a/dashmachine/static/images/apps/jackett.png and b/dashmachine/static/images/apps/jackett.png differ diff --git a/dashmachine/static/images/apps/jellyfin.png b/dashmachine/static/images/apps/jellyfin.png index d30455b..5d37f89 100644 Binary files a/dashmachine/static/images/apps/jellyfin.png and b/dashmachine/static/images/apps/jellyfin.png differ diff --git a/dashmachine/static/images/apps/lidarr.png b/dashmachine/static/images/apps/lidarr.png index af06a1c..2dfdb1c 100644 Binary files a/dashmachine/static/images/apps/lidarr.png and b/dashmachine/static/images/apps/lidarr.png differ diff --git a/dashmachine/static/images/apps/mailcow.png b/dashmachine/static/images/apps/mailcow.png index 6d3873f..7bbb73f 100644 Binary files a/dashmachine/static/images/apps/mailcow.png and b/dashmachine/static/images/apps/mailcow.png differ diff --git a/dashmachine/static/images/apps/nextcloud.png b/dashmachine/static/images/apps/nextcloud.png index 00da38c..7ae6f71 100644 Binary files a/dashmachine/static/images/apps/nextcloud.png and b/dashmachine/static/images/apps/nextcloud.png differ diff --git a/dashmachine/static/images/apps/nginxproxymanager.png b/dashmachine/static/images/apps/nginxproxymanager.png index 499abf5..12c2659 100644 Binary files a/dashmachine/static/images/apps/nginxproxymanager.png and b/dashmachine/static/images/apps/nginxproxymanager.png differ diff --git a/dashmachine/static/images/apps/ombi.png b/dashmachine/static/images/apps/ombi.png index 8094bfd..a66647e 100644 Binary files a/dashmachine/static/images/apps/ombi.png and b/dashmachine/static/images/apps/ombi.png differ diff --git a/dashmachine/static/images/apps/opnsense.png b/dashmachine/static/images/apps/opnsense.png index 3e6dde9..eb1ac6c 100644 Binary files a/dashmachine/static/images/apps/opnsense.png and b/dashmachine/static/images/apps/opnsense.png differ diff --git a/dashmachine/static/images/apps/pihole.png b/dashmachine/static/images/apps/pihole.png index 9758df4..2327b43 100644 Binary files a/dashmachine/static/images/apps/pihole.png and b/dashmachine/static/images/apps/pihole.png differ diff --git a/dashmachine/static/images/apps/piwigo.png b/dashmachine/static/images/apps/piwigo.png index 65605d7..9463d06 100644 Binary files a/dashmachine/static/images/apps/piwigo.png and b/dashmachine/static/images/apps/piwigo.png differ diff --git a/dashmachine/static/images/apps/plex.png b/dashmachine/static/images/apps/plex.png index 9554e09..b72a357 100644 Binary files a/dashmachine/static/images/apps/plex.png and b/dashmachine/static/images/apps/plex.png differ diff --git a/dashmachine/static/images/apps/portainer.png b/dashmachine/static/images/apps/portainer.png index 2a4010f..449bc13 100644 Binary files a/dashmachine/static/images/apps/portainer.png and b/dashmachine/static/images/apps/portainer.png differ diff --git a/dashmachine/static/images/apps/radarr.png b/dashmachine/static/images/apps/radarr.png index 808a9c1..809bc8f 100644 Binary files a/dashmachine/static/images/apps/radarr.png and b/dashmachine/static/images/apps/radarr.png differ diff --git a/dashmachine/static/images/apps/riot.png b/dashmachine/static/images/apps/riot.png index f68d6e2..94282eb 100644 Binary files a/dashmachine/static/images/apps/riot.png and b/dashmachine/static/images/apps/riot.png differ diff --git a/dashmachine/static/images/apps/sonarr.png b/dashmachine/static/images/apps/sonarr.png index b41422f..44ea054 100644 Binary files a/dashmachine/static/images/apps/sonarr.png and b/dashmachine/static/images/apps/sonarr.png differ diff --git a/dashmachine/static/images/apps/tasmoadmin.png b/dashmachine/static/images/apps/tasmoadmin.png index df52045..f9dab9b 100644 Binary files a/dashmachine/static/images/apps/tasmoadmin.png and b/dashmachine/static/images/apps/tasmoadmin.png differ diff --git a/dashmachine/static/images/apps/tautulli.png b/dashmachine/static/images/apps/tautulli.png index 9b1b5a1..b9b54da 100644 Binary files a/dashmachine/static/images/apps/tautulli.png and b/dashmachine/static/images/apps/tautulli.png differ diff --git a/dashmachine/static/images/apps/terminal.png b/dashmachine/static/images/apps/terminal.png index 9946fd2..b008c61 100644 Binary files a/dashmachine/static/images/apps/terminal.png and b/dashmachine/static/images/apps/terminal.png differ diff --git a/dashmachine/static/images/apps/thelounge.png b/dashmachine/static/images/apps/thelounge.png index 543e7b0..700fa40 100644 Binary files a/dashmachine/static/images/apps/thelounge.png and b/dashmachine/static/images/apps/thelounge.png differ diff --git a/dashmachine/static/images/apps/traefik.png b/dashmachine/static/images/apps/traefik.png index 4778d0f..ba99834 100644 Binary files a/dashmachine/static/images/apps/traefik.png and b/dashmachine/static/images/apps/traefik.png differ diff --git a/dashmachine/static/images/apps/transmission.png b/dashmachine/static/images/apps/transmission.png index 53207f6..6c89c5a 100644 Binary files a/dashmachine/static/images/apps/transmission.png and b/dashmachine/static/images/apps/transmission.png differ diff --git a/dashmachine/static/images/apps/unifi.png b/dashmachine/static/images/apps/unifi.png index d67b811..1a3e36a 100644 Binary files a/dashmachine/static/images/apps/unifi.png and b/dashmachine/static/images/apps/unifi.png differ diff --git a/dashmachine/static/images/apps/vscode.png b/dashmachine/static/images/apps/vscode.png index ea8aefd..ea54880 100644 Binary files a/dashmachine/static/images/apps/vscode.png and b/dashmachine/static/images/apps/vscode.png differ diff --git a/dashmachine/static/images/apps/wikijs.png b/dashmachine/static/images/apps/wikijs.png index 4ef2b72..bac9be6 100644 Binary files a/dashmachine/static/images/apps/wikijs.png and b/dashmachine/static/images/apps/wikijs.png differ diff --git a/dashmachine/static/js/main/home.js b/dashmachine/static/js/main/home.js index 22d1c5a..7296550 100644 --- a/dashmachine/static/js/main/home.js +++ b/dashmachine/static/js/main/home.js @@ -14,6 +14,19 @@ $( document ).ready(function() { $(this).addClass('hide'); } }); + $(".tag-group").each(function(i, e) { + var x = 0 + $(this).find('.app-a').each(function(i, e) { + if ($(this).hasClass("hide") === false){ + x = x + 1 + } + }); + if (x === 0){ + $(this).addClass('hide'); + } else { + $(this).removeClass('hide'); + } + }); }); $(".data-source-container").each(function(e) { @@ -31,8 +44,8 @@ $( document ).ready(function() { $("#tags-select").on('change', function(e) { var value = $(this).val(); - $(".app-a").each(function(i, e) { - if ($(this).attr("data-tags").indexOf(value) > -1 || value === "All tags") { + $(".tag-group").each(function(i, e) { + if ($(this).attr("data-tag").indexOf(value) > -1 || value === "All tags") { $(this).removeClass('filtered'); } else { $(this).addClass('filtered'); diff --git a/dashmachine/static/js/main/login.js b/dashmachine/static/js/main/login.js new file mode 100644 index 0000000..3526d1b --- /dev/null +++ b/dashmachine/static/js/main/login.js @@ -0,0 +1,17 @@ +$( document ).ready(function() { + $(".login-form").on('submit', function(e) { + e.preventDefault(); + $.ajax({ + url: $(this).attr('data-url'), + type: 'POST', + data: $(this).serialize(), + success: function(data){ + if (data.data.err){ + M.toast({html: data.data.err, classes: 'theme-warning'}) + } else { + $(location).attr('href', data.data.url) + } + } + }); + }); +}); \ No newline at end of file diff --git a/dashmachine/templates/main/base.html b/dashmachine/templates/main/base.html index 68f68e8..3ae5f27 100644 --- a/dashmachine/templates/main/base.html +++ b/dashmachine/templates/main/base.html @@ -21,9 +21,9 @@ content="Another web application bookmark dashboard, with fun features."> {% if title %} - {{ title }} - DashMachine + {{ title }} - {{ settings.custom_app_title }} {% else %} - DashMachine + {{ settings.custom_app_title }} {% endif %} diff --git a/dashmachine/templates/main/home.html b/dashmachine/templates/main/home.html index b6fc1d1..a17121d 100644 --- a/dashmachine/templates/main/home.html +++ b/dashmachine/templates/main/home.html @@ -49,15 +49,71 @@
{% if apps %} + {# If tags are enabled, render the apps like this #} + {% if tags_form.tags.choices|count > 1 %} + {% if settings.home_view_mode == "list" %} + +
+
+ {% for tag in tags_form.tags.choices %} + {% if tag[0] != 'All tags' %} +
+ {{ tag[0] }} + {% for app in apps %} + {% if app.tags and tag[0] in app.tags %} + {{ ListViewApp(app) }} + {% endif %} + {% endfor %} +
+ {% endif %} + {% endfor %} +
+
+ + {% else %} + {% for tag in tags_form.tags.choices %} + {% if tag[0] != 'All tags' %} +
+
+
+
+
{{ tag[0] }}
+
+
+
+
+ {% for app in apps %} + {% if app.tags and tag[0] in app.tags %} + {{ GridViewApp(app) }} + {% endif %} + {% endfor %} +
+
+
+ {% endif %} + {% endfor %} + {% endif %} - {% if settings.home_view_mode == "list" %} - {{ ListViewApp(apps) }} {% else %} - {% for app in apps %} - {{ GridViewApp(app) }} - {% endfor %} + {# otherwise, render the apps like this #} + {% if settings.home_view_mode == "list" %} + +
+
+ {% for app in apps %} + {{ ListViewApp(app) }} + {% endfor %} +
+
+ + {% else %} + {% for app in apps %} + {{ GridViewApp(app) }} + {% endfor %} + {% endif %} {% endif %} + {% else %}
diff --git a/dashmachine/templates/main/macros.html b/dashmachine/templates/main/macros.html index bb8f615..7d45ba8 100644 --- a/dashmachine/templates/main/macros.html +++ b/dashmachine/templates/main/macros.html @@ -54,39 +54,33 @@ {# This closes AppAnchor() #} {% endmacro %} -{% macro ListViewApp(apps) %} -
-
- {% for app in apps %} - {{ AppAnchor(app, classes="collection-item") }} -
-
- - {{ app.name }} - {% if app.description %} - info - {% endif %} -
-
- {% if app.data_sources.count() > 0 %} - {{ preload_circle() }} - {% for data_source in app.data_sources %} - - - {% endfor %} - {% endif %} -
-
- - {# This closes AppAnchor() #} - {% endfor %} +{% macro ListViewApp(app) %} + {{ AppAnchor(app, classes="collection-item") }} +
+
+ + {{ app.name }} + {% if app.description %} + info + {% endif %} +
+
+ {% if app.data_sources.count() > 0 %} + {{ preload_circle() }} + {% for data_source in app.data_sources %} + + + {% endfor %} + {% endif %}
+ + {# This closes AppAnchor() #} {% endmacro %} \ No newline at end of file diff --git a/dashmachine/templates/settings_system/files.html b/dashmachine/templates/settings_system/files.html index cc059dd..704bb1f 100644 --- a/dashmachine/templates/settings_system/files.html +++ b/dashmachine/templates/settings_system/files.html @@ -12,7 +12,7 @@
- {{ tcdrop(allowed_types='jpg,jpeg,png,gif', id="images-tcdrop", max_files="30") }} + {{ tcdrop(allowed_types='apng,bmp,gif,ico,cur,jpg,jpeg,jfif,pjpeg,pjp,png,svg,tif,tiff,webp', id="images-tcdrop", max_files="30") }} {{ button(text="save", icon="save", id="save-images-btn", float="left", data={"url": url_for('settings_system.add_images')}) }}
diff --git a/dashmachine/templates/user/login.html b/dashmachine/templates/user/login.html index 0752c66..48e6985 100644 --- a/dashmachine/templates/user/login.html +++ b/dashmachine/templates/user/login.html @@ -9,7 +9,7 @@ DashMachine Logo
-
{% endblock content %} + +{% block page_lvl_js %} + {{ process_js_sources(src="main/login.js")|safe }} +{% endblock page_lvl_js %} \ No newline at end of file diff --git a/dashmachine/user_system/routes.py b/dashmachine/user_system/routes.py index 00d367e..0071bf8 100755 --- a/dashmachine/user_system/routes.py +++ b/dashmachine/user_system/routes.py @@ -1,4 +1,4 @@ -from flask import render_template, url_for, redirect, Blueprint +from flask import render_template, url_for, redirect, Blueprint, jsonify from flask_login import login_user, logout_user from dashmachine.user_system.forms import LoginForm from dashmachine.user_system.models import User @@ -14,25 +14,30 @@ user_system = Blueprint("user_system", __name__) # ------------------------------------------------------------------------------ # login page @public_route -@user_system.route("/login", methods=["GET", "POST"]) +@user_system.route("/login", methods=["GET"]) def login(): - user = User.query.first() - form = LoginForm() + return render_template("user/login.html", title="Login", form=form) + +@public_route +@user_system.route("/check_login", methods=["POST"]) +def check_login(): + form = LoginForm() if form.validate_on_submit(): user = User.query.filter_by(username=form.username.data.lower()).first() + if not user: + response = {"err": "User not found"} - if user and bcrypt.check_password_hash(user.password, form.password.data): + elif bcrypt.check_password_hash(user.password, form.password.data): login_user(user, remember=form.remember.data) - - return redirect(url_for("main.home")) - + response = {"url": url_for("main.home")} else: - print("password was wrong") - return redirect(url_for("user_system.login")) + response = {"err": "Password is wrong"} + else: + response = {"err": str(form.errors)} - return render_template("user/login.html", title="Login", form=form) + return jsonify(data=response) # this logs the user out and redirects to the login page diff --git a/dashmachine/version.py b/dashmachine/version.py index 39fbdc6..a9acad5 100755 --- a/dashmachine/version.py +++ b/dashmachine/version.py @@ -1 +1 @@ -version = "v0.34" +version = "v0.4" diff --git a/default_config.ini b/default_config.ini index 6654307..9fec2a1 100644 --- a/default_config.ini +++ b/default_config.ini @@ -4,4 +4,5 @@ accent = orange background = None roles = admin,user,public_user home_access_groups = admin_only -settings_access_groups = admin_only \ No newline at end of file +settings_access_groups = admin_only +custom_app_title = DashMachine \ No newline at end of file diff --git a/migrations/versions/ce94252d9023_.py b/migrations/versions/ce94252d9023_.py new file mode 100644 index 0000000..30020ea --- /dev/null +++ b/migrations/versions/ce94252d9023_.py @@ -0,0 +1,28 @@ +"""empty message + +Revision ID: ce94252d9023 +Revises: a36cddc6266e +Create Date: 2020-03-08 10:56:30.470619 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = "ce94252d9023" +down_revision = "a36cddc6266e" +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.add_column("settings", sa.Column("custom_app_title", sa.String(), nullable=True)) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column("settings", "custom_app_title") + # ### end Alembic commands ### diff --git a/pull_request_template.md b/pull_request_template.md index e175ebd..6b572b3 100644 --- a/pull_request_template.md +++ b/pull_request_template.md @@ -2,7 +2,8 @@ - [ ] I have added a .ini file to DashMachine with the same name used for [App Name] in the .ini file (e.g. 'App Name.ini') - [ ] My .ini has the exact format as the others in the folder, only changing the name, icon location, and description. - [ ] I used the official description and name for the app, found on their repository/website. -- [ ] I chose an icon (.png file) sized under 200px, with a transparent background, preferably the icon only version (not icon w/ text) of the app's icon. +- [ ] I chose an icon (.png file) sized over 64px, with a transparent background, square aspect ratio, preferably the icon only version (not icon w/ text) of the app's icon. +- [ ] I understand that the icon will be resized to 64px x 64px and have verified that it looks good at that size. - [ ] I have added the icon to static/images/apps with the correct name matching what's in the .ini. - [ ] I tested it to make sure it looks good in the interface diff --git a/template_apps/Wikijs.ini b/template_apps/Wikijs.ini index d8d9390..55df8ae 100644 --- a/template_apps/Wikijs.ini +++ b/template_apps/Wikijs.ini @@ -1,6 +1,6 @@ -[Wiki.js] +[Wikijs] prefix = https:// url = your-website.com icon = static/images/apps/wikijs.png description = A modern, lightweight and powerful wiki app built on Node.js -open_in = this_tab \ No newline at end of file +open_in = this_tab