12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- import io
- import os
- from Plugin import PluginManager
- from Config import config
- from Translate import Translate
- from util.Flag import flag
- plugin_dir = os.path.dirname(__file__)
- if "_" not in locals():
- _ = Translate(plugin_dir + "/languages/")
- @PluginManager.registerTo("UiRequest")
- class UiRequestPlugin(object):
- def actionWrapper(self, path, extra_headers=None):
- if path.strip("/") != "Config":
- return super(UiRequestPlugin, self).actionWrapper(path, extra_headers)
- if not extra_headers:
- extra_headers = {}
- script_nonce = self.getScriptNonce()
- self.sendHeader(extra_headers=extra_headers, script_nonce=script_nonce)
- site = self.server.site_manager.get(config.homepage)
- return iter([super(UiRequestPlugin, self).renderWrapper(
- site, path, "uimedia/plugins/uiconfig/config.html",
- "Config", extra_headers, show_loadingscreen=False, script_nonce=script_nonce
- )])
- def actionUiMedia(self, path, *args, **kwargs):
- if path.startswith("/uimedia/plugins/uiconfig/"):
- file_path = path.replace("/uimedia/plugins/uiconfig/", plugin_dir + "/media/")
- if config.debug and (file_path.endswith("all.js") or file_path.endswith("all.css")):
- # If debugging merge *.css to all.css and *.js to all.js
- from Debug import DebugMedia
- DebugMedia.merge(file_path)
- if file_path.endswith("js"):
- data = _.translateData(open(file_path).read(), mode="js").encode("utf8")
- elif file_path.endswith("html"):
- data = _.translateData(open(file_path).read(), mode="html").encode("utf8")
- else:
- data = open(file_path, "rb").read()
- return self.actionFile(file_path, file_obj=io.BytesIO(data), file_size=len(data))
- else:
- return super(UiRequestPlugin, self).actionUiMedia(path)
- @PluginManager.registerTo("UiWebsocket")
- class UiWebsocketPlugin(object):
- @flag.admin
- def actionConfigList(self, to):
- back = {}
- config_values = vars(config.arguments)
- config_values.update(config.pending_changes)
- for key, val in config_values.items():
- if key not in config.keys_api_change_allowed:
- continue
- is_pending = key in config.pending_changes
- if val is None and is_pending:
- val = config.parser.get_default(key)
- back[key] = {
- "value": val,
- "default": config.parser.get_default(key),
- "pending": is_pending
- }
- return back
|