Removed dashboard configuration from HttpBackend, removed old HTTP

static files and replaced them with Vue app target dist/ directory.
This commit is contained in:
Fabio Manganiello 2020-11-26 11:54:28 +01:00
parent 887a0e5e88
commit 04cb2324aa
3 changed files with 3 additions and 135 deletions

View File

@ -1,3 +1,2 @@
recursive-include platypush/backend/http/static * recursive-include platypush/backend/http/dist *
recursive-include platypush/backend/http/templates *
include platypush/plugins/http/webpage/mercury-parser.js include platypush/plugins/http/webpage/mercury-parser.js

View File

@ -29,7 +29,7 @@ class HttpBackend(Backend):
by default available on your web root document. Any plugin that you have configured and available as a panel by default available on your web root document. Any plugin that you have configured and available as a panel
plugin will appear on the web panel as well as a tab. plugin will appear on the web panel as well as a tab.
* To display a fullscreen dashboard with your configured widgets, by default available under ``/dashboard`` * To display a fullscreen dashboard with your configured widgets, by default available under ``/dashboard/<dashboard_name>``
* To stream media over HTTP through the ``/media`` endpoint * To stream media over HTTP through the ``/media`` endpoint
@ -71,7 +71,7 @@ class HttpBackend(Backend):
def __init__(self, port=_DEFAULT_HTTP_PORT, def __init__(self, port=_DEFAULT_HTTP_PORT,
websocket_port=_DEFAULT_WEBSOCKET_PORT, websocket_port=_DEFAULT_WEBSOCKET_PORT,
disable_websocket=False, dashboard=None, resource_dirs=None, disable_websocket=False, resource_dirs=None,
ssl_cert=None, ssl_key=None, ssl_cafile=None, ssl_capath=None, ssl_cert=None, ssl_key=None, ssl_cafile=None, ssl_capath=None,
maps=None, run_externally=False, uwsgi_args=None, **kwargs): maps=None, run_externally=False, uwsgi_args=None, **kwargs):
""" """
@ -104,38 +104,6 @@ class HttpBackend(Backend):
the value is the absolute path to expose. the value is the absolute path to expose.
:type resource_dirs: dict[str, str] :type resource_dirs: dict[str, str]
:param dashboard: Set it if you want to use the dashboard service. It will contain the configuration for the
widgets to be used (look under ``platypush/backend/http/templates/widgets/`` for the available widgets).
Example configuration::
dashboard:
background_image: https://site/image.png
widgets: # Each row of the dashboard will have 6 columns
-
widget: calendar # Calendar widget
columns: 6
-
widget: music # Music widget
columns: 3
-
widget: date-time-weather # Date, time and weather widget
columns: 3
-
widget: image-carousel # Image carousel
columns: 6
# Absolute path (valid as long as it's a subdirectory of one of the available `resource_dirs`)
images_path: ~/Dropbox/Photos/carousel
refresh_seconds: 15
-
widget: rss-news # RSS feeds widget
# Requires backend.http.poll to be enabled with some RSS sources and write them to sqlite db
columns: 6
limit: 25
db: "sqlite:////home/user/.local/share/platypush/feeds/rss.db"
:type dashboard: dict
:param run_externally: If set, then the HTTP backend will not directly :param run_externally: If set, then the HTTP backend will not directly
spawn the web server. Set this option if you plan to run the webapp spawn the web server. Set this option if you plan to run the webapp
in a separate web server (recommended), like uwsgi or uwsgi+nginx. in a separate web server (recommended), like uwsgi or uwsgi+nginx.
@ -161,7 +129,6 @@ class HttpBackend(Backend):
self.port = port self.port = port
self.websocket_port = websocket_port self.websocket_port = websocket_port
self.dashboard = dashboard or {}
self.maps = maps or {} self.maps = maps or {}
self.server_proc = None self.server_proc = None
self.disable_websocket = disable_websocket self.disable_websocket = disable_websocket

View File

@ -1,83 +1,9 @@
#!/usr/bin/env python #!/usr/bin/env python
import errno
import os import os
import re
from distutils.cmd import Command
from distutils.command.build import build as _build
from distutils.command.install import install as _install
from setuptools.command.bdist_egg import bdist_egg as _bdist_egg
from setuptools import setup, find_packages from setuptools import setup, find_packages
class WebBuildCommand(Command):
"""
Custom command to build the web files
"""
description = 'Build components and styles for the web pages'
user_options = []
@classmethod
def generate_css_files(cls):
try:
# noinspection PyPackageRequirements
from scss import Compiler
except ImportError:
print('pyScss module not found: {}. You will have to generate ' +
'the CSS files manually through python setup.py build install')
return
print('Building CSS files')
base_path = path(os.path.join('platypush', 'backend', 'http', 'static', 'css'))
input_path = path(os.path.join(base_path, 'source'))
output_path = path(os.path.join(base_path, 'dist'))
for root, dirs, files in os.walk(input_path, followlinks=True):
scss_file = os.path.join(root, 'index.scss')
if os.path.isfile(scss_file):
css_path = os.path.split(scss_file[len(input_path):])[0][1:] + '.css'
css_dir = os.path.join(output_path, os.path.dirname(css_path))
css_file = os.path.join(css_dir, os.path.basename(css_path))
os.makedirs(css_dir, exist_ok=True)
print('\tGenerating CSS {scss} -> {css}'.format(scss=scss_file, css=css_file))
with open(css_file, 'w') as f:
css_content = Compiler(output_style='compressed', search_path=[root, input_path]).compile(scss_file)
css_content = cls._fix_css4_vars(css_content)
f.write(css_content)
@staticmethod
def _fix_css4_vars(css):
return re.sub(r'var\("--([^"]+)"\)', r'var(--\1)', css)
def initialize_options(self):
pass
def finalize_options(self):
pass
def run(self):
self.generate_css_files()
class install(_install):
def do_egg_install(self):
self.run_command('web_build')
_install.do_egg_install(self)
class bdist_egg(_bdist_egg):
def run(self):
self.run_command('web_build')
_bdist_egg.run(self)
class build(_build):
sub_commands = _build.sub_commands + [('web_build', None)]
def path(fname=''): def path(fname=''):
return os.path.abspath(os.path.join(os.path.dirname(__file__), fname)) return os.path.abspath(os.path.join(os.path.dirname(__file__), fname))
@ -97,23 +23,8 @@ def pkg_files(dir):
return paths return paths
def create_etc_dir():
# noinspection PyShadowingNames
path = '/etc/platypush'
try:
os.makedirs(path)
except OSError as e:
if isinstance(e, PermissionError):
print('WARNING: Could not create /etc/platypush')
elif e.errno == errno.EEXIST and os.path.isdir(path):
pass
else:
raise
plugins = pkg_files('platypush/plugins') plugins = pkg_files('platypush/plugins')
backend = pkg_files('platypush/backend') backend = pkg_files('platypush/backend')
# create_etc_dir()
setup( setup(
name="platypush", name="platypush",
@ -135,15 +46,6 @@ setup(
], ],
}, },
scripts=['bin/platyvenv'], scripts=['bin/platyvenv'],
cmdclass={
'web_build': WebBuildCommand,
'install': install,
'build': build,
'bdist_egg': bdist_egg,
},
# data_files = [
# ('/etc/platypush', ['platypush/config.example.yaml'])
# ],
long_description=readfile('README.md'), long_description=readfile('README.md'),
long_description_content_type='text/markdown', long_description_content_type='text/markdown',
classifiers=[ classifiers=[