def _execute_procedure(self, *args, **kwargs): from platypush.config import Config from platypush.procedure import Procedure logger.info('Executing procedure request: {}'.format(self.action)) procedures = Config.get_procedures() proc_name = '.'.join(self.action.split('.')[1:]) if proc_name not in procedures: proc_name = self.action.split('.')[-1] proc_config = procedures[proc_name] if is_functional_procedure(proc_config): kwargs.update(**self.args) if 'n_tries' in kwargs: del kwargs['n_tries'] return proc_config(*args, **kwargs) proc = Procedure.build(name=proc_name, requests=proc_config['actions'], _async=proc_config['_async'], args=self.args, backend=self.backend, id=self.id) return proc.execute(*args, **kwargs)
def _execute_procedure(self, *args, **kwargs): from platypush.config import Config from platypush.procedure import Procedure logger.info('Executing procedure request: {}'.format(self.action)) proc_name = self.action.split('.')[-1] proc_config = Config.get_procedures()[proc_name] proc = Procedure.build(name=proc_name, requests=proc_config['actions'], _async=proc_config['_async'], args=self.args, backend=self.backend, id=self.id) return proc.execute(*args, **kwargs)
def get_procedures(self) -> dict: """ Get the list of procedures installed on the device. """ return json.loads( json.dumps(Config.get_procedures(), cls=ProcedureEncoder))
def index(): """ Route to the main web panel """ configured_plugins = Config.get_plugins() enabled_templates = {} enabled_scripts = {} enabled_styles = {} enabled_plugins = set(request.args.get('enabled_plugins', '').split(',')) for plugin in enabled_plugins: if plugin not in configured_plugins: configured_plugins[plugin] = {} configured_plugins['execute'] = {} disabled_plugins = set(request.args.get('disabled_plugins', '').split(',')) js_folder = os.path.abspath( os.path.join(template_folder, '..', 'static', 'js')) style_folder = os.path.abspath( os.path.join(template_folder, '..', 'static', 'css', 'dist')) for plugin, conf in configured_plugins.copy().items(): if plugin in disabled_plugins: if plugin == 'execute': configured_plugins.pop('execute') continue template_file = os.path.join(template_folder, 'plugins', plugin, 'index.html') script_file = os.path.join(js_folder, 'plugins', plugin, 'index.js') style_file = os.path.join(style_folder, 'webpanel', 'plugins', plugin + '.css') if os.path.isfile(template_file): conf['_template_file'] = '/' + '/'.join( template_file.split(os.sep)[-3:]) enabled_templates[plugin] = conf if os.path.isfile(script_file): conf['_script_file'] = '/'.join(script_file.split(os.sep)[-4:]) enabled_scripts[plugin] = conf if os.path.isfile(style_file): conf['_style_file'] = 'css/dist/' + style_file[len(style_folder) + 1:] enabled_styles[plugin] = conf http_conf = Config.get('backend.http') return render_template('index.html', templates=enabled_templates, scripts=enabled_scripts, styles=enabled_styles, utils=HttpUtils, token=Config.get('token'), websocket_port=get_websocket_port(), template_folder=template_folder, static_folder=static_folder, plugins=Config.get_plugins(), backends=Config.get_backends(), procedures=json.dumps(Config.get_procedures(), cls=Message.Encoder), has_ssl=http_conf.get('ssl_cert') is not None)