[settings] rework settings

This commit is contained in:
2026-07-31 01:50:08 +02:00
parent b7b07b82da
commit bad4e8dd1b
2 changed files with 46 additions and 14 deletions

View File

@@ -1,29 +1,52 @@
import logging
import os
from functools import lru_cache
logger = logging.getLogger(__name__)
def verify_settings():
card_envs = [
@lru_cache(1)
def disable_cards_check():
if os.environ.get("DISABLE_CARDS", "").lower() in ("1", "true"):
return True
for env in (
"MIFARE_APP_MASTER_KEY",
"MIFARE_ACL_READ_BASE_KEY",
"MIFARE_ACL_WRITE_BASE_KEY",
]
important_envs = ["SECRET_KEY"]
other_envs = ["SQLALCHEMY_DATABASE_PATH"]
for setting in card_envs:
if (setting not in os.environ or setting == "") and not os.getenv(
"DISABLE_CARDS"
):
raise ValueError(
f"Missing environment variable for scanner start: {setting} \n Run with DISABLE_CARDS env var to disable cards" # noqa: E501
):
if not os.getenv(env):
logger.critical(
f"Missing environment variable for scanner start: {env} \n Card scanner and related funcionality is disabled!" # noqa: E501
)
return True
return False
disable_cards = disable_cards_check()
if not disable_cards:
mifare_app_master_key = os.getenv("MIFARE_APP_MASTER_KEY")
mifare_acl_read_base_key = os.getenv("MIFARE_ACL_READ_BASE_KEY")
mifare_acl_write_base_key = os.getenv("MIFARE_ACL_WRITE_BASE_KEY")
def verify_settings():
important_envs = ["SECRET_KEY"]
other_envs = ["SQLALCHEMY_DATABASE_PATH", "LOCK_PIN", "UNLOCK_PIN", "MOCK_GPIO"]
for setting in important_envs:
if setting not in os.environ or setting == "":
if not os.getenv(setting):
raise ValueError(
f"Missing critical environment variable {setting}. Stopping..."
)
for setting in other_envs:
if setting not in os.environ:
logger.warning(f"Env var {setting} not set. Continuing with defaults.")
verify_settings()
secret_key = os.getenv("SECRET_KEY")
sqlalchemy_database_path = os.getenv("SQLALCHEMY_DATABASE_PATH")
lock_pin = os.getenv("LOCK_PIN")
unlock_pin = os.getenv("UNLOCK_PIN")
mock_gpio = os.getenv("MOCK_GPIO")

View File

@@ -5,7 +5,6 @@ from fastapi.testclient import TestClient
from sqlalchemy.pool import StaticPool
from sqlmodel import Session, SQLModel, create_engine
from app.main import app
from app.model.models import (
AccessAuthorizationDB,
Card,
@@ -25,6 +24,16 @@ engine = create_engine(
)
@pytest.fixture
def app():
import os
os.environ["SECRET_KEY"] = "ff" * 16
from app.main import app
return app
@pytest.fixture(scope="function")
def db_session():
"""Create a fresh database session for each test."""
@@ -35,7 +44,7 @@ def db_session():
@pytest.fixture(scope="function")
def client(db_session):
def client(app, db_session):
"""Create a test client with a database session override."""
def override_get_session():