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",
]