bfc0050580
Phase L: Dashboard widget system - Migration 046: dashboard_configs table (user/tenant/role fallback cascade) - DashboardConfig model + dashboard_service with get/upsert per-user and tenant-default - API router: GET/PUT /api/dashboard/config, GET/PUT /api/dashboard/tenant-default - Frontend: 5 widget components (ProductionStats, QueueStatus, RecentRenders, CostOverview, WorkerStatus) - DashboardGrid with API-backed config, DashboardCustomizeModal (checkbox selection, save/cancel) - Dashboard.tsx: widget grid + analytics section (privileged users) - Admin.tsx: restructured with new section order and Maintenance 2-col grid Phase M: Test framework - Backend: pytest-asyncio + pytest-cov + factory-boy in pyproject.toml - conftest.py: excel_dir fixtures + async DB fixtures + mock storage/celery stubs - Domain tests: billing_service, cache_service, notifications_service, imports_sanity - Integration: test_api_health.py smoke test (requires running backend) - Frontend: vitest + @testing-library/react + msw added to package.json - vite.config.ts: test block (jsdom + globals + setupFiles) - tsconfig.json: exclude src/__tests__ from main tsc (test runner handles its own types) - MSW handlers for /api/auth/me, Billing.test.tsx, formatters.test.ts Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
28 lines
1.3 KiB
Python
28 lines
1.3 KiB
Python
"""Re-export all models from domain locations.
|
|
|
|
This file ensures that `from app.models import X` continues to work.
|
|
The canonical definitions live in app/domains/*/models.py.
|
|
"""
|
|
from app.domains.tenants.models import Tenant
|
|
from app.domains.auth.models import User
|
|
from app.domains.imports.models import Template
|
|
from app.domains.products.models import CadFile, Product
|
|
from app.domains.orders.models import Order, OrderItem, OrderLine
|
|
from app.domains.notifications.models import AuditLog
|
|
from app.domains.billing.models import PricingTier
|
|
from app.domains.rendering.models import OutputType, RenderTemplate, ProductRenderPosition, WorkflowDefinition, WorkflowRun, WorkflowNodeResult
|
|
from app.domains.materials.models import Material, MaterialAlias, AssetLibrary
|
|
from app.domains.media.models import MediaAsset, MediaAssetType
|
|
from app.domains.admin.models import DashboardConfig
|
|
|
|
# Also re-export SystemSetting (no domain assigned — stays as-is)
|
|
from app.models.system_setting import SystemSetting
|
|
|
|
__all__ = [
|
|
"Tenant", "User", "Template", "CadFile", "Product", "Order", "OrderItem", "OrderLine",
|
|
"AuditLog", "PricingTier", "OutputType", "RenderTemplate", "ProductRenderPosition",
|
|
"WorkflowDefinition", "WorkflowRun", "WorkflowNodeResult",
|
|
"Material", "MaterialAlias", "AssetLibrary", "MediaAsset", "MediaAssetType", "SystemSetting",
|
|
"DashboardConfig",
|
|
]
|