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/templates *
recursive-include platypush/backend/http/dist *
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
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
@ -71,7 +71,7 @@ class HttpBackend(Backend):
def __init__(self, port=_DEFAULT_HTTP_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,
maps=None, run_externally=False, uwsgi_args=None, **kwargs):
"""
@ -104,38 +104,6 @@ class HttpBackend(Backend):
the value is the absolute path to expose.
: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
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.
@ -161,7 +129,6 @@ class HttpBackend(Backend):
self.port = port
self.websocket_port = websocket_port
self.dashboard = dashboard or {}
self.maps = maps or {}
self.server_proc = None
self.disable_websocket = disable_websocket

View file

@ -1,83 +1,9 @@
#!/usr/bin/env python
import errno
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
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=''):
return os.path.abspath(os.path.join(os.path.dirname(__file__), fname))
@ -97,23 +23,8 @@ def pkg_files(dir):
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')
backend = pkg_files('platypush/backend')
# create_etc_dir()
setup(
name="platypush",
@ -135,15 +46,6 @@ setup(
],
},
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_content_type='text/markdown',
classifiers=[