# app/modules/catalog/definition.py """Catalog module definition.""" from app.modules.base import ( MenuItemDefinition, MenuSectionDefinition, ModuleDefinition, PermissionDefinition, ) from app.modules.enums import FrontendType module = ModuleDefinition( code="catalog", name="Product Catalog", description="Product catalog browsing and search for storefronts", version="1.0.0", is_self_contained=True, requires=["inventory"], # Module-driven permissions permissions=[ PermissionDefinition( id="products.view", label_key="catalog.permissions.products_view", description_key="catalog.permissions.products_view_desc", category="products", ), PermissionDefinition( id="products.create", label_key="catalog.permissions.products_create", description_key="catalog.permissions.products_create_desc", category="products", ), PermissionDefinition( id="products.edit", label_key="catalog.permissions.products_edit", description_key="catalog.permissions.products_edit_desc", category="products", ), PermissionDefinition( id="products.delete", label_key="catalog.permissions.products_delete", description_key="catalog.permissions.products_delete_desc", category="products", ), PermissionDefinition( id="products.import", label_key="catalog.permissions.products_import", description_key="catalog.permissions.products_import_desc", category="products", ), PermissionDefinition( id="products.export", label_key="catalog.permissions.products_export", description_key="catalog.permissions.products_export_desc", category="products", ), ], # Module-driven menu definitions menus={ FrontendType.VENDOR: [ MenuSectionDefinition( id="products", label_key="catalog.menu.products_inventory", icon="package", order=10, items=[ MenuItemDefinition( id="products", label_key="catalog.menu.all_products", icon="shopping-bag", route="/vendor/{vendor_code}/products", order=10, is_mandatory=True, ), ], ), ], }, )