X-Git-Url: https://git.mar77i.info/?a=blobdiff_plain;f=hub%2Futils.py;fp=hub%2Futils.py;h=3e91e239b6ad753beea77fcd90e22ab3e313cab1;hb=a12839ce8fe46f0c2c0e98a37deebba05ea404b5;hp=b66fd97992c224a41e37928e5b68fc997349eb0e;hpb=3c5ec422ace644d848d2f845b0f3ef8de73462ef;p=hublib diff --git a/hub/utils.py b/hub/utils.py index b66fd97..3e91e23 100644 --- a/hub/utils.py +++ b/hub/utils.py @@ -1,32 +1,38 @@ from jinja2_simple_tags import StandaloneTag -from .hubapp import TreeFileApp +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"] - h = static_file.hubapp - if isinstance(hubapp, str): - h = h.app.hubapps[hubapp] - elif isinstance(hubapp, TreeFileApp): - h = hubapp - del hubapp - if filename.startswith("/") or h != static_file.hubapp: - path = h.base_dir / filename.lstrip("/") + 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 h.uri(path) + return hubapp.uri(path) -def get_redis_pass(redis_conf): +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.