# app/modules/enums.py """ Module system enums. This file contains enums used by the module system that need to be importable without triggering database model imports. The FrontendType enum is defined here to break a circular import: - app.modules.base imports FrontendType - Previously FrontendType was in models.database.admin_menu_config - Importing from models.database triggers model discovery - Model discovery imports module definitions - Module definitions import from app.modules.base → CIRCULAR By defining FrontendType here, we break this cycle. """ import enum class FrontendType(str, enum.Enum): """Frontend types that can have menu configuration.""" ADMIN = "admin" # Admin panel (super admins, platform admins) VENDOR = "vendor" # Vendor dashboard # Menu items that cannot be hidden - always visible regardless of config # Organized by frontend type MANDATORY_MENU_ITEMS = { FrontendType.ADMIN: frozenset({ "dashboard", # Default landing page after login "companies", "vendors", "admin-users", "settings", "my-menu", # Super admin menu config - must always be accessible }), FrontendType.VENDOR: frozenset({ "dashboard", # Default landing page after login "settings", }), } __all__ = ["FrontendType", "MANDATORY_MENU_ITEMS"]