def get_new_document(include_rimo: bool = True, include_skeleton: bool = False, include_normalizecss: bool = False, autoreload: Optional[bool] = None, reload_wait: int = None, log_level: int = None, log_prefix: str = None, log_console: bool = False, ws_url: str = None, document_factory: Callable[..., Document] = Document, **kwargs) -> Document: document = document_factory( autoreload=autoreload, reload_wait=reload_wait, **kwargs) if log_level is None: log_level = config.logging log_script = [] if log_level is not None: if isinstance(log_level, str): log_script.append('var RIMO_LOG_LEVEL = \'{}\''.format(log_level)) elif isinstance(log_level, int): log_script.append('var RIMO_LOG_LEVEL = {}'.format(log_level)) if log_prefix is not None: log_script.append('var RIMO_LOG_PREFIX = \'{}\''.format(log_prefix)) if log_console: log_script.append('var RIMO_LOG_CONSOLE = true') if log_script: _s = Script(parent=document.head) _s.textContent = '\n{}\n'.format('\n'.join(log_script)) if ws_url is not None: _s = Script(parent=document.head) _s.textContent = '\nvar RIMO_WS_URL = \'{}\'\n'.format(ws_url) if include_rimo: document.add_jsfile_head('_static/js/rimo/rimo.js') return document
def get_new_document( # noqa: C901 include_wdom_js: bool = True, include_skeleton: bool = False, include_normalizecss: bool = False, autoreload: bool = None, reload_wait: float = None, log_level: Union[int, str] = None, log_prefix: str = None, log_console: bool = False, ws_url: str = None, message_wait: float = None, document_factory: Callable[..., Document] = WdomDocument, **kwargs: Any) -> Document: """Create new :class:`Document` object with options. :arg bool include_wdom_js: Include wdom.js file. Usually should be True. :arg bool include_skeleton: Include skelton.css. :arg bool include_normalizecss: Include normalize.css. :arg bool autoreload: Enable autoreload flag. This flag overwrites ``--debug`` flag, which automatically enables autoreload. :arg float reload_wait: Seconds to wait until reload when autoreload is enabled. :arg str log_level: Log level string, chosen from DEBUG, INFO, WARN, ERROR. Integer values are also acceptable like ``logging.INFO``. By default use ``wdom.config.options.log_level``, which default is ``INFO``. :arg str log_prefix: Prefix of log outputs. :arg bool log_console: Flag to show wdom log on browser console. :arg str ws_url: URL string to the ws url. Default: ``ws://localhost:8888/wdom_ws``. :arg float message_wait: Duration (seconds) to send WS messages. :arg Callable document_factory: Factory function/class to create Document object. :rtype: Document """ document = document_factory(autoreload=autoreload, reload_wait=reload_wait, **kwargs) if log_level is None: log_level = config.logging if message_wait is None: message_wait = config.message_wait log_script = [] log_script.append('var WDOM_MESSAGE_WAIT = {}'.format(message_wait)) if isinstance(log_level, str): log_script.append('var WDOM_LOG_LEVEL = \'{}\''.format(log_level)) elif isinstance(log_level, int): log_script.append('var WDOM_LOG_LEVEL = {}'.format(log_level)) if log_prefix: log_script.append('var WDOM_LOG_PREFIX = \'{}\''.format(log_prefix)) if log_console: log_script.append('var WDOM_LOG_CONSOLE = true') if log_script: _s = Script(parent=document.head) _s.textContent = '\n{}\n'.format('\n'.join(log_script)) if ws_url: _s = Script(parent=document.head) _s.textContent = '\nvar WDOM_WS_URL = \'{}\'\n'.format(ws_url) if include_wdom_js: document.add_jsfile_head('_static/js/wdom.js') return document