From 382e81d72786f2b320c4251e5c5b9570d7a7855d Mon Sep 17 00:00:00 2001 From: Simon Date: Sun, 8 Feb 2026 17:03:50 +0700 Subject: [PATCH] simplify env file logic --- backend/common/src/env_settings.py | 24 +++++++++---------- .../config/management/commands/ta_envcheck.py | 22 ++++++++++------- 2 files changed, 26 insertions(+), 20 deletions(-) diff --git a/backend/common/src/env_settings.py b/backend/common/src/env_settings.py index f0ef0c98..db4c86c5 100644 --- a/backend/common/src/env_settings.py +++ b/backend/common/src/env_settings.py @@ -4,8 +4,7 @@ Functionality: - encapsulate persistence of application properties """ -import os.path -from os import environ +from os import environ, path try: from dotenv import load_dotenv @@ -27,18 +26,19 @@ def get_password_from_file(env_var_name) -> str: if env_var_name_val is not None: return str(env_var_name_val) - elif env_var_path_val is not None: - if os.path.isfile(str(env_var_path_val)): - with open( - file=str(env_var_path_val), mode="r", encoding="utf-8" - ) as file: - return file.read() - else: - print(f"{env_var_file} file: {env_var_path_val} does not exist") - else: + if env_var_path_val is None: print(f"either {env_var_name} or {env_var_file} must be set") + return "" - return "" + is_path = path.isfile(env_var_path_val) + if not is_path: + print(f"{env_var_path_val} is not a path") + return "" + + with open(env_var_path_val, "r", encoding="utf-8") as f: + file_content = f.read().strip() + + return file_content class EnvironmentSettings: diff --git a/backend/config/management/commands/ta_envcheck.py b/backend/config/management/commands/ta_envcheck.py index 1ddba328..245bb9c1 100644 --- a/backend/config/management/commands/ta_envcheck.py +++ b/backend/config/management/commands/ta_envcheck.py @@ -61,6 +61,10 @@ EXPECTED_ENV_VARS = [ "ES_URL", "TA_HOST", ] +FILE_FALLBACK = [ + "ELASTIC_PASSWORD", + "TA_PASSWORD", +] UNEXPECTED_ENV_VARS = { "TA_UWSGI_PORT": "Has been replaced with 'TA_BACKEND_PORT'", "REDIS_HOST": "Has been replaced with 'REDIS_CON' connection string", @@ -139,14 +143,16 @@ class Command(BaseCommand): self.stdout.write("[1] checking expected env vars") env = os.environ for var in EXPECTED_ENV_VARS: - if not env.get(var): - if not (var.endswith("_PASSWORD") and env.get(var + "_FILE")): - message = ( - f" 🗙 expected env var {var} not set\n {INST}" - ) - self.stdout.write(self.style.ERROR(message)) - sleep(60) - raise CommandError(message) + if var in env: + continue + + if var in FILE_FALLBACK and f"{var}_FILE" in env: + continue + + message = f" 🗙 expected env var {var} not set\n {INST}" + self.stdout.write(self.style.ERROR(message)) + sleep(60) + raise CommandError(message) message = " ✓ all expected env vars are set" self.stdout.write(self.style.SUCCESS(message))