Coverage for /usr/lib/python3.10/site-packages/hyd/backend/util/const.py: 97%
37 statements
« prev ^ index » next coverage.py v7.0.3, created at 2023-02-05 02:26 +0000
« prev ^ index » next coverage.py v7.0.3, created at 2023-02-05 02:26 +0000
1import datetime as dt
2import os
3from pathlib import Path
4from typing import TypedDict
6import hyd
8####################################################################################################
9#### Environment variables
10####################################################################################################
13class _ReqEnvvars(TypedDict):
14 SECRET_KEY: str
15 MARIADB_PASSWORD: str
16 MARIADB_ADDRESS: str
19def _getenv_str_or_raise(key: str) -> str:
20 value = os.getenv(key)
21 if value is None:
22 raise ValueError(f"Required environment variable `{key}` not found!")
23 return value
26_req_envvars: _ReqEnvvars = {
27 key: _getenv_str_or_raise(key) for key in ("SECRET_KEY", "MARIADB_PASSWORD", "MARIADB_ADDRESS")
28}
31SECRET_KEY: str = _req_envvars["SECRET_KEY"]
32MARIADB_PASSWORD: str = _req_envvars["MARIADB_PASSWORD"]
33MARIADB_ADDRESS: str = _req_envvars["MARIADB_ADDRESS"]
36_root_path: str | None = os.getenv("ROOT_PATH") # optional
37ROOT_PATH: str = _root_path if _root_path else ""
39NAME_HOSTED_BY: str | None = os.getenv("NAME_HOSTED_BY") # optional
40LINK_HOSTED_BY: str | None = os.getenv("LINK_HOSTED_BY") # optional
41LINK_IMPRESS: str | None = os.getenv("LINK_IMPRESS") # optional
42LINK_PRIVACY: str | None = os.getenv("LINK_PRIVACY") # optional
44###################################################################################################
45#### Const values
46####################################################################################################
48LOADER_HTML_INJECTION = (
49 f'<script src="{ROOT_PATH}/footer/loader.js"><!-- Injected by HostYourDocs --></script>'
50)
52REMEMBER_ME_DURATION = dt.timedelta(days=30)
53LOGIN_DURATION_AFTER_LAST_REQUEST = dt.timedelta(minutes=10)
55PKG_PATH = os.path.dirname(hyd.__file__)
56STATIC_PATH = PKG_PATH + "/backend/static"
57TEMPLATE_PATH = PKG_PATH + "/backend/templates"
59PATH_DATA = Path("data")
60PATH_PROJECTS = PATH_DATA / "projects"
62MAX_LENGTH_STR_ID = 64
63MAX_LENGTH_STR_COMMENT = 128
64MAX_LENGTH_TOKEN_SCOPE = 16
66HEADERS = {"WWW-Authenticate": "Bearer"}
68HTML_TITLE = "HostYourDocs"