-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmodels.py
More file actions
116 lines (104 loc) · 4.04 KB
/
Copy pathmodels.py
File metadata and controls
116 lines (104 loc) · 4.04 KB
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
import enum
from sqlalchemy import Column, String, Integer, Text, Numeric, DateTime, ForeignKey, Enum as SQLEnum
from sqlalchemy.orm import declarative_base, relationship
Base = declarative_base()
class ResponseEnum(str, enum.Enum):
ACCEPT = 'accept'
DECLINE = 'decline'
class RoleEnum(str, enum.Enum):
ADMIN = 'Admin'
SYSTEM = 'System'
SELLER = 'Seller'
BUYER = 'Buyer'
class StatusEnum(str, enum.Enum):
PENDING = 'PENDING'
SIGNED = 'SIGNED'
DECLINED = 'DECLINED'
EFFECTIVE = 'EFFECTIVE'
REQUESTED = 'REQUESTED'
TRANSFERRED_TO_SELLER = 'TRANSFERRED to Seller'
TRANSFERRED_TO_BUYER = 'TRANSFERRED to Buyer'
DISPUTED = 'DISPUTED'
PROCESSING_LOCKED = 'PROCESSING: Locked'
DECIDED_LOCKED = 'DECIDED: Locked'
UNDER_REVIEW_LOCKED = 'UNDER REVIEW: Locked'
DISTRIBUTED = 'DISTRIBUTED'
CLOSED_NO_ESCROW = 'CLOSED: No Escrow'
CLOSED_NO_AWARD = 'CLOSED: No Award'
CLOSED = 'CLOSED' # General closed fallback
class LabelEnum(str, enum.Enum):
SETUP = 'Setup'
DISPUTE = 'Dispute'
GENERAL = 'General'
EMAIL = 'Email'
APPEAL = 'Appeal'
REQUEST_PAYMENT = 'Request Payment'
REQUEST_REFUND = 'Request Refund'
EVIDENCE = 'Evidence'
class Case(Base):
__tablename__ = 'cases'
case_id = Column(String(50), primary_key=True)
created_at = Column(DateTime(timezone=True))
seller = Column(String(255))
buyer = Column(String(255))
seller_email = Column(String(255))
buyer_email = Column(String(255))
seller_token = Column(String(255))
buyer_token = Column(String(255))
seller_wallet = Column(String(255))
buyer_wallet = Column(String(255))
contract_text = Column(Text)
governing_law = Column(String(100))
seller_response = Column(SQLEnum(ResponseEnum))
buyer_response = Column(SQLEnum(ResponseEnum))
folder_link = Column(Text)
escrow_address = Column(String(255))
escrow_fund = Column(Numeric(38, 0))
fee = Column(Numeric(38, 0))
deposited_fund = Column(Numeric(38, 0))
payment_to_seller = Column(Numeric(38, 0))
refund_to_buyer = Column(Numeric(38, 0))
tip_to_seller = Column(Numeric(38, 0))
buyer_withdrawal = Column(Numeric(38, 0))
status = Column(SQLEnum(StatusEnum))
payment_request_time = Column(DateTime(timezone=True))
refund_request_time = Column(DateTime(timezone=True))
requested_payment_amount = Column(Numeric(38, 0))
requested_refund_amount = Column(Numeric(38, 0))
dispute_time = Column(DateTime(timezone=True))
adjudication_time = Column(DateTime(timezone=True))
determination_time = Column(DateTime(timezone=True))
decision = Column(Text)
rationale = Column(Text)
magistrate_report_json = Column(Text)
seller_award = Column(Numeric(38, 0))
buyer_award = Column(Numeric(38, 0))
seller_payout = Column(Numeric(38, 0))
buyer_payout = Column(Numeric(38, 0))
appeal_time = Column(DateTime(timezone=True))
messages = relationship("Message", back_populates="case")
files = relationship("File", back_populates="case")
class Message(Base):
__tablename__ = 'messages'
id = Column(Integer, primary_key=True, autoincrement=True)
case_id = Column(String(50), ForeignKey('cases.case_id'))
time = Column(DateTime(timezone=True))
sender = Column(SQLEnum(RoleEnum))
email = Column(String(255))
content = Column(Text)
label = Column(SQLEnum(LabelEnum))
case = relationship("Case", back_populates="messages")
files = relationship("File", back_populates="message")
class File(Base):
__tablename__ = 'files'
file_id = Column(String(255), primary_key=True)
case_id = Column(String(50), ForeignKey('cases.case_id'))
message_id = Column(Integer, ForeignKey('messages.id'))
time = Column(DateTime(timezone=True))
submitter = Column(SQLEnum(RoleEnum))
email = Column(String(255))
original_name = Column(String(500))
secure_name = Column(String(500))
hash = Column(String(255))
case = relationship("Case", back_populates="files")
message = relationship("Message", back_populates="files")