Added the ability to prevent example blocks from being loaded

This commit is contained in:
SwiftyOS
2025-07-01 15:44:22 +02:00
parent b75967a9a1
commit 7f062545ba
3 changed files with 27 additions and 5 deletions

View File

@@ -205,3 +205,8 @@ ENABLE_CLOUD_LOGGING=false
ENABLE_FILE_LOGGING=false
# Use to manually set the log directory
# LOG_DIR=./logs
# Example Blocks Configuration
# Set to true to enable example blocks in development
# These blocks are disabled by default in production
ENABLE_EXAMPLE_BLOCKS=false

View File

@@ -14,14 +14,26 @@ T = TypeVar("T")
@functools.cache
def load_all_blocks() -> dict[str, type["Block"]]:
from backend.data.block import Block
from backend.util.settings import Config
# Check if example blocks should be loaded from settings
config = Config()
load_examples = config.enable_example_blocks
# Dynamically load all modules under backend.blocks
current_dir = Path(__file__).parent
modules = [
str(f.relative_to(current_dir))[:-3].replace(os.path.sep, ".")
for f in current_dir.rglob("*.py")
if f.is_file() and f.name != "__init__.py" and not f.name.startswith("test_")
]
modules = []
for f in current_dir.rglob("*.py"):
if not f.is_file() or f.name == "__init__.py" or f.name.startswith("test_"):
continue
# Skip examples directory if not enabled
relative_path = f.relative_to(current_dir)
if not load_examples and relative_path.parts[0] == "examples":
continue
module_path = str(relative_path)[:-3].replace(os.path.sep, ".")
modules.append(module_path)
for module in modules:
if not re.match("^[a-z0-9_.]+$", module):
raise ValueError(

View File

@@ -262,6 +262,11 @@ class Config(UpdateTrackingModel["Config"], BaseSettings):
default=False,
description="Whether to mark failed scans as clean or not",
)
enable_example_blocks: bool = Field(
default=False,
description="Whether to enable example blocks in production",
)
@field_validator("platform_base_url", "frontend_base_url")
@classmethod