from jinja2_simple_tags import StandaloneTag from .static import TreeFileApp class StaticTag(StandaloneTag): tags = {"static"} @staticmethod def get_hubapp(static_file, hubapp): h = static_file.hubapp if hubapp == "root": return h.root elif isinstance(hubapp, str): return h.root.hubapps[hubapp] elif isinstance(hubapp, TreeFileApp): return hubapp return static_file.hubapp def render( self, filename: str = "", hubapp: str | TreeFileApp | None = None ) -> str: """ If filename starts with '/', interpret the path as relative to hubapp.base_dir, otherwise assume the path is relative to the current file. """ static_file = self.context["static_file"] hubapp = self.get_hubapp(static_file, hubapp) if filename.startswith("/") or hubapp != static_file.hubapp: path = hubapp.base_dir / filename.lstrip("/") else: path = static_file.path.parent / filename return hubapp.uri(path) def get_redis_pass(redis_conf: str) -> str: """ Poor man's redis credentials: read the password from redis_conf. Requires redis being configured with a `requirepass` password set. """ prefix = "requirepass " with open(redis_conf, "rt") as fh: for line in fh: if line.startswith(prefix): return line[len(prefix) :].rstrip() return None