This commit is contained in:
HotSwapp
2025-08-09 16:37:57 -05:00
parent 5f74243c8c
commit c2f3c4411d
35 changed files with 9209 additions and 4633 deletions

View File

@@ -8,7 +8,7 @@ from .files import File
from .ledger import Ledger
from .qdro import QDRO
from .audit import AuditLog, LoginAttempt
from .additional import Deposit, Payment, FileNote, FormVariable, ReportVariable
from .additional import Deposit, Payment, FileNote, FormVariable, ReportVariable, Document
from .support import SupportTicket, TicketResponse, TicketStatus, TicketPriority, TicketCategory
from .pensions import (
Pension, PensionSchedule, MarriageHistory, DeathBenefit,
@@ -23,7 +23,7 @@ from .lookups import (
__all__ = [
"BaseModel", "User", "Rolodex", "Phone", "File", "Ledger", "QDRO",
"AuditLog", "LoginAttempt",
"Deposit", "Payment", "FileNote", "FormVariable", "ReportVariable",
"Deposit", "Payment", "FileNote", "FormVariable", "ReportVariable", "Document",
"SupportTicket", "TicketResponse", "TicketStatus", "TicketPriority", "TicketCategory",
"Pension", "PensionSchedule", "MarriageHistory", "DeathBenefit",
"SeparationAgreement", "LifeTable", "NumberTable",

View File

@@ -1,7 +1,7 @@
"""
Additional models for complete legacy system coverage
"""
from sqlalchemy import Column, Integer, String, Text, Date, Float, ForeignKey
from sqlalchemy import Column, Integer, String, Text, Date, Float, ForeignKey, func, DateTime
from sqlalchemy.orm import relationship
from app.models.base import BaseModel
@@ -95,4 +95,25 @@ class ReportVariable(BaseModel):
active = Column(Integer, default=1) # Legacy system uses integer for boolean
def __repr__(self):
return f"<ReportVariable(identifier='{self.identifier}')>"
return f"<ReportVariable(identifier='{self.identifier}')>"
class Document(BaseModel):
__tablename__ = "documents"
id = Column(Integer, primary_key=True, index=True)
file_no = Column(String(45), ForeignKey("files.file_no"), nullable=False, index=True)
filename = Column(String(255), nullable=False)
path = Column(String(512), nullable=False)
description = Column(Text)
type = Column(String(50))
size = Column(Integer)
uploaded_by = Column(String, ForeignKey("users.username"))
upload_date = Column(DateTime, default=func.now())
# Relationships
file = relationship("File", back_populates="documents")
user = relationship("User")
def __repr__(self):
return f"<Document(id={self.id}, filename='{self.filename}', file_no='{self.file_no}')>"

View File

@@ -64,4 +64,5 @@ class File(BaseModel):
death_benefits = relationship("DeathBenefit", back_populates="file", cascade="all, delete-orphan")
separation_agreements = relationship("SeparationAgreement", back_populates="file", cascade="all, delete-orphan")
payments = relationship("Payment", back_populates="file", cascade="all, delete-orphan")
notes = relationship("FileNote", back_populates="file", cascade="all, delete-orphan")
notes = relationship("FileNote", back_populates="file", cascade="all, delete-orphan")
documents = relationship("Document", back_populates="file", cascade="all, delete-orphan")

View File

@@ -25,6 +25,9 @@ class User(BaseModel):
is_active = Column(Boolean, default=True)
is_admin = Column(Boolean, default=False)
# User Preferences
theme_preference = Column(String(10), default='light') # 'light', 'dark'
# Activity tracking
last_login = Column(DateTime(timezone=True))
created_at = Column(DateTime(timezone=True), server_default=func.now())