From 0b658640a4c60d3adc6fc389c88924ebb374e4ba Mon Sep 17 00:00:00 2001 From: Samir Boulahtit Date: Mon, 26 Jan 2026 23:06:37 +0100 Subject: [PATCH] fix: resolve circular import in CMS module Remove top-level import of cms_module from app/modules/cms/__init__.py to break circular import chain: models.database -> model discovery -> cms.models -> cms.__init__ -> cms.definition -> app.modules.base -> models.database (partial) Replace with lazy get_cms_module() getter function. Co-Authored-By: Claude Opus 4.5 --- app/modules/cms/__init__.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/app/modules/cms/__init__.py b/app/modules/cms/__init__.py index 5820ee98..354081b8 100644 --- a/app/modules/cms/__init__.py +++ b/app/modules/cms/__init__.py @@ -27,6 +27,20 @@ Usage: from app.modules.cms.exceptions import ContentPageNotFoundException """ -from app.modules.cms.definition import cms_module +# NOTE: Do NOT import cms_module at top level to avoid circular import. +# The circular import chain is: +# models.database -> model discovery -> app.modules.cms.models +# -> app.modules.cms.__init__ -> cms_module -> app.modules.base +# -> models.database.admin_menu_config (partial) +# +# Use lazy import instead: +# from app.modules.cms.definition import cms_module -__all__ = ["cms_module"] + +def get_cms_module(): + """Lazy getter for cms_module to avoid circular imports.""" + from app.modules.cms.definition import cms_module + return cms_module + + +__all__ = ["get_cms_module"]