forked from platypush/platypush
53 lines
1.6 KiB
Python
53 lines
1.6 KiB
Python
|
import os
|
||
|
|
||
|
from flask import Blueprint, request, render_template
|
||
|
|
||
|
from platypush.backend.http.app import template_folder
|
||
|
from platypush.backend.http.app.utils import authenticate, authentication_ok, \
|
||
|
get_websocket_port
|
||
|
|
||
|
from platypush.backend.http.utils import HttpUtils
|
||
|
from platypush.config import Config
|
||
|
|
||
|
|
||
|
index = Blueprint('index', __name__, template_folder=template_folder)
|
||
|
|
||
|
# Declare routes list
|
||
|
__routes__ = [
|
||
|
index,
|
||
|
]
|
||
|
|
||
|
@index.route('/')
|
||
|
def index():
|
||
|
""" Route to the main web panel """
|
||
|
if not authentication_ok(request): return authenticate()
|
||
|
|
||
|
# These plugins have their own template file but won't be shown as a tab in
|
||
|
# the web panel. This is usually the case for plugins that only include JS
|
||
|
# code but no template content.
|
||
|
_hidden_plugins = {
|
||
|
'assistant.google'
|
||
|
}
|
||
|
|
||
|
configured_plugins = Config.get_plugins()
|
||
|
enabled_plugins = {}
|
||
|
hidden_plugins = {}
|
||
|
|
||
|
for plugin, conf in configured_plugins.items():
|
||
|
template_file = os.path.join('plugins', plugin + '.html')
|
||
|
if os.path.isfile(os.path.join(template_folder, template_file)):
|
||
|
if plugin in _hidden_plugins:
|
||
|
hidden_plugins[plugin] = conf
|
||
|
else:
|
||
|
enabled_plugins[plugin] = conf
|
||
|
|
||
|
http_conf = Config.get('backend.http')
|
||
|
return render_template('index.html', plugins=enabled_plugins,
|
||
|
hidden_plugins=hidden_plugins, utils=HttpUtils,
|
||
|
token=Config.get('token'),
|
||
|
websocket_port=get_websocket_port(),
|
||
|
has_ssl=http_conf.get('ssl_cert') is not None)
|
||
|
|
||
|
|
||
|
# vim:sw=4:ts=4:et:
|