imgw.py
4.89 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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
from datetime import datetime
from sqlalchemy import (
Column,
Integer,
Float,
Text,
String,
Boolean,
DateTime,
Date,
ForeignKey,
Sequence,
func,
text,
)
from sqlalchemy.orm import relationship
from . import (
Base,
DBSession,
DefaultModel,
CommonModel,
)
class Jalur(Base, DefaultModel):
__tablename__ = 'jalur'
nama = Column(String(15), unique=True, nullable=False)
class Status(Base, DefaultModel):
__tablename__ = 'status'
__table_args__ = dict(schema='im')
ket = Column(String(100), unique=True, nullable=False)
class Antrian(Base, DefaultModel):
__tablename__ = 'antrian'
__table_args__ = dict(schema='im')
jalur = Column(
Integer, ForeignKey(Jalur.id), nullable=False, server_default='1')
kirim = Column(Boolean, nullable=False, server_default='true')
tgl = Column(
DateTime(timezone=True), server_default=func.now(), nullable=False)
tgl_operator = Column(DateTime(timezone=True))
pengirim = Column(String(64))
penerima = Column(String(64))
pesan = Column(Text, nullable=False)
jawaban = Column(Text)
parser = Column(String(64))
status = Column(
Integer, ForeignKey(Status.id), server_default='1', nullable=False)
class Selesai(Base, CommonModel):
__tablename__ = 'selesai'
__table_args__ = dict(schema='im')
id = Column(
Integer, primary_key=True,
server_default=text("nextval('im.antrian_id_seq')"))
jalur = Column(
Integer, ForeignKey(Jalur.id), nullable=False, server_default='1')
kirim = Column(Boolean, nullable=False)
tgl = Column(
DateTime(timezone=True), server_default=func.now(), nullable=False)
tgl_operator = Column(DateTime(timezone=True))
pengirim = Column(String(64))
penerima = Column(String(64))
pesan = Column(Text, nullable=False)
jawaban = Column(Text)
parser = Column(String(64))
status = Column(Integer, ForeignKey(Status.id), nullable=False)
#########
# Agent #
#########
class StatusAgent(Base, DefaultModel):
__tablename__ = 'status_agent'
__table_args__ = dict(schema='im')
ket = Column(String(100), unique=True, nullable=False)
class Agent(Base, CommonModel):
__tablename__ = 'agent'
__table_args__ = dict(schema='im')
id = Column(String(64), primary_key=True)
jalur = Column(Integer, ForeignKey(Jalur.id), nullable=False)
#jalur_ref = relationship('Jalur', foreign_keys='Agent.jalur')
jalur_ref = relationship(Jalur)
status = Column(
Integer, ForeignKey(StatusAgent.id), nullable=False,
server_default='0')
#status_ref = relationship('StatusAgent', foreign_keys='Agent.status')
status_ref = relationship(StatusAgent)
job = Column(Integer, nullable=False, server_default='0')
lastjob = Column(
DateTime(timezone=True), nullable=False, server_default=func.now())
startup = Column(
DateTime(timezone=True), nullable=False, server_default=func.now())
ket = Column(Text)
lasterr = Column(Text)
url = Column(String(64))
modem = relationship('Modem', backref='im.agent', uselist=False)
class Produk(Base, CommonModel):
__tablename__ = 'produk'
nama = Column(String(20), primary_key=True)
class MSISDN(Base, CommonModel):
__tablename__ = 'msisdn'
awalan = Column(String(10), primary_key=True)
produk = Column(String(20), ForeignKey(Produk.nama), nullable=False)
wilayah = Column(String(30))
class Modem(Base, CommonModel):
__tablename__ = 'modem'
__table_args__ = dict(schema='im')
msisdn = Column(String(64), nullable=False, primary_key=True)
imei = Column(String(64), ForeignKey(Agent.id, ondelete='cascade'), nullable=False)
device = Column(String(20))
sn = Column(String(20))
merk = Column(String(64))
signal = Column(Integer, nullable=False, server_default='0')
produk = Column(String(20), ForeignKey(Produk.nama), nullable=False)
wilayah = Column(String(30))
pulsa = relationship('Pulsa', backref='im.modem', uselist=False)
reply_for = relationship('ModemPengirim', backref='im.modem_pengirim', order_by='ModemPengirim.produk')
class Pulsa(Base, CommonModel):
__tablename__ = 'pulsa'
__table_args__ = dict(schema='im')
msisdn = Column(
String(20), ForeignKey(Modem.msisdn, ondelete='cascade'),
primary_key=True)
request = Column(String(10), nullable=False)
response = Column(Text)
tgl = Column(DateTime(timezone=True))
class ModemPengirim(Base, CommonModel):
__tablename__ = 'modem_pengirim'
__table_args__ = dict(schema='im')
produk = Column(String(20), ForeignKey(Produk.nama), primary_key=True)
msisdn = Column(String(20), ForeignKey(Modem.msisdn, ondelete='cascade'), primary_key=True)
msisdn_produk = Column(
String(20), ForeignKey(Produk.nama), nullable=False)