Files
orion/app/modules/marketplace/definition.py
Samir Boulahtit 9d0dc51de0 feat: extract inventory, orders, and marketplace modules (Phase 4)
Extract three additional modules following the billing module pattern:

Inventory Module (app/modules/inventory/):
- Stock management and tracking
- Inventory locations
- Low stock alerts
- Admin and vendor routes with module access control

Orders Module (app/modules/orders/):
- Order management and fulfillment
- Order item exceptions
- Bulk operations and export
- Admin and vendor routes with module access control

Marketplace Module (app/modules/marketplace/):
- Letzshop integration
- Product sync
- Marketplace import
- Depends on inventory module
- Admin and vendor routes with module access control

Admin router updated:
- Uses module routers with require_module_access dependency
- Legacy router includes commented out
- Routes verified: 15 inventory, 16 orders, 42 marketplace

All 31 module tests passing.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 22:02:24 +01:00

71 lines
2.1 KiB
Python

# app/modules/marketplace/definition.py
"""
Marketplace module definition.
Defines the marketplace module including its features, menu items,
dependencies, and route configurations.
Note: This module requires the inventory module to be enabled.
"""
from app.modules.base import ModuleDefinition
from models.database.admin_menu_config import FrontendType
def _get_admin_router():
"""Lazy import of admin router to avoid circular imports."""
from app.modules.marketplace.routes.admin import admin_router
return admin_router
def _get_vendor_router():
"""Lazy import of vendor router to avoid circular imports."""
from app.modules.marketplace.routes.vendor import vendor_router
return vendor_router
# Marketplace module definition
marketplace_module = ModuleDefinition(
code="marketplace",
name="Marketplace (Letzshop)",
description=(
"Letzshop marketplace integration for product sync, order import, "
"and catalog synchronization."
),
requires=["inventory"], # Depends on inventory module
features=[
"letzshop_sync", # Sync products with Letzshop
"marketplace_import", # Import products from marketplace
"product_sync", # Bidirectional product sync
"order_import", # Import orders from marketplace
"marketplace_analytics", # Marketplace performance metrics
],
menu_items={
FrontendType.ADMIN: [
"marketplace-letzshop", # Marketplace monitoring
],
FrontendType.VENDOR: [
"marketplace", # Vendor marketplace settings
"letzshop", # Letzshop integration
],
},
is_core=False,
)
def get_marketplace_module_with_routers() -> ModuleDefinition:
"""
Get marketplace module with routers attached.
This function attaches the routers lazily to avoid circular imports
during module initialization.
"""
marketplace_module.admin_router = _get_admin_router()
marketplace_module.vendor_router = _get_vendor_router()
return marketplace_module
__all__ = ["marketplace_module", "get_marketplace_module_with_routers"]