from core.registry import ( register_dashboard_collector, register_feature, register_portal_nav, register_public_nav, ) def register() -> None: register_feature("shop") register_public_nav(section="shop", label="Shop", url_name="shop:list", order=30) register_portal_nav( section="shop_sales", label="Sales", url_name="shop_portal:sales", group="Retail", order=5, ) register_portal_nav( section="shop_products", label="Products", url_name="shop_portal:product_list", group="Retail", order=10, ) register_portal_nav( section="shop_orders", label="Orders", url_name="shop_portal:order_list", group="Retail", order=20, ) register_dashboard_collector(_dashboard) def _dashboard(request) -> dict: from django.db.models import Q from shop.models import Order, Product from shop.stats import sales_summary sales = sales_summary() return { "open_shop_orders": Order.objects.filter( status__in=[Order.Status.OPEN, Order.Status.PAID] ).count(), "low_stock_products": Product.objects.filter( is_published=True, track_inventory=True, fulfillment=Product.Fulfillment.STOCKED, ) .filter(Q(colors__stock_qty__lte=3) | Q(colors__isnull=True, stock_qty__lte=3)) .distinct() .count(), "shop_sales_30d": sales["order_count"], "shop_revenue_30d": sales["revenue"], }