Spaces:
Sleeping
Sleeping
File size: 3,713 Bytes
3f30780 dad7dc2 0f127a7 3f30780 dad7dc2 0f127a7 3f30780 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 | """
Models Package - SQLAlchemy ORM Models
Import order is CRITICAL to avoid circular dependencies and mapper initialization errors.
Base models and independent models first, then dependent models.
IMPORTANT:
- CustomerCommunication MUST be imported BEFORE Customer to resolve the relationship
- Models must be imported in dependency order to avoid mapper initialization failures
"""
# Base and Enums (no dependencies)
from app.models.base import BaseModel
from app.models.enums import *
# Core independent models (minimal dependencies)
from app.models.user import User
from app.models.notification import Notification, NotificationChannel, NotificationStatus
from app.models.audit_log import AuditLog
from app.models.document import Document
# Organization models
from app.models.client import Client
from app.models.contractor import Contractor
# Project structure models (must come before projects)
from app.models.project import ProjectRegion, ProjectRole, ProjectSubcontractor, Project
from app.models.project_team import ProjectTeam
# Customer and related (CustomerCommunication MUST come before Customer!)
from app.models.customer_communication import CustomerCommunication
from app.models.customer import Customer
# Sales and subscriptions
from app.models.sales_order import SalesOrder
from app.models.subscription import Subscription
# Tasks
from app.models.task import Task
# Tickets and related (import in dependency order)
from app.models.ticket_comment import TicketComment
from app.models.ticket_expense import TicketExpense
from app.models.ticket_image import TicketImage
from app.models.ticket_progress_report import TicketProgressReport
from app.models.ticket_incident_report import TicketIncidentReport
from app.models.ticket_status_history import TicketStatusHistory
from app.models.ticket import Ticket
from app.models.ticket_assignment import TicketAssignment
# Incidents
from app.models.incident import Incident
# Finance models
from app.models.contractor_invoice import ContractorInvoice
from app.models.timesheet import Timesheet
from app.models.finance import ProjectFinance, PaymentLog
# User-related association tables
from app.models.user_payroll import UserPayroll
from app.models.user_financial_account import UserFinancialAccount
from app.models.user_document_link import UserDocumentLink
from app.models.user_asset_assignment import UserAssetAssignment
# Inventory models
from app.models.inventory import ProjectInventory, ProjectInventoryDistribution, InventoryAssignment
# Auth models
from app.models.invitation import UserInvitation
__all__ = [
# Base
"BaseModel",
# Users & Auth
"User",
"UserInvitation",
"UserPayroll",
"UserFinancialAccount",
"UserDocumentLink",
"UserAssetAssignment",
# Organizations
"Client",
"Contractor",
# Customers
"Customer",
"CustomerCommunication",
# Projects & Structure
"Project",
"ProjectRegion",
"ProjectRole",
"ProjectSubcontractor",
"ProjectTeam",
# Sales & Subscriptions
"SalesOrder",
"Subscription",
# Tasks
"Task",
# Tickets
"Ticket",
"TicketAssignment",
"TicketComment",
"TicketExpense",
"TicketImage",
"TicketProgressReport",
"TicketIncidentReport",
"TicketStatusHistory",
# Incidents
"Incident",
# Finance
"ContractorInvoice",
"Timesheet",
"ProjectFinance",
"PaymentLog",
# Inventory
"ProjectInventory",
"ProjectInventoryDistribution",
"InventoryAssignment",
# System
"Notification",
"NotificationChannel",
"NotificationStatus",
"AuditLog",
"Document",
]
|