-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
139 lines (118 loc) · 3.72 KB
/
main.py
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
from flask import Flask, request
from numpy import array
from newML import algoQueue, createTimeData, trainSubeData
from user import User
from user_sube import UserSube
app = Flask(__name__)
app.config['DEBUG'] = True
app.config['TESTING'] = True
timeClf = None
subeClf = None
users = {}
user_sube = {}
sube1 = []
sube2 = []
size = {}
size['1'] = 0
size['2'] = 0
@app.route('/user', methods=['GET'])
def get_user():
user = users[request.args.get('uid')]
return 'uid:' + user.uid + '\neta1:' + user.eta1 + '\neta2:' + user.eta2 + '\noperation:' + user.operation \
+ '\nage:' + user.age
@app.route('/user', methods=['POST'])
def add_user():
uid = request.form['uid']
eta1 = request.form['eta1']
eta2 = request.form['eta2']
operation = request.form['operation']
age = request.form['age']
user = User(uid, eta1, eta2, operation, age)
users[uid] = user
time = timeClf.predict(array([[int(age), int(operation)]]))[0]
user.time = time
sube = str(subeClf.predict(array([[int(eta1), int(eta2), int(time), sube_total_time(1), sube_total_time(2)]]))[0])
user.sube = sube
if sube == '1':
user.no = size['1']
size['1'] = size['1'] + 1
sube1.append(user)
algoQueue(sube1, '1')
printQueues()
else:
user.no = size['2']
size['2'] = size['2'] + 1
sube2.append(user)
algoQueue(sube2, '2')
printQueues()
user_sube[uid] = UserSube(uid, sube, operation)
for item in sube1:
if item.uid == uid:
return '{sube:' + sube + ",lineNo:" + str(item.no) + '}'
for item in sube2:
if item.uid == uid:
return '{sube:' + sube + ",lineNo:" + str(item.no) + '}'
return 'sube:' + sube
def sube_total_time(sube_number):
total_time = 0
if sube_number == 1:
for user in sube1:
total_time = total_time + user.time
else:
for user in sube2:
total_time = total_time + user.time
return total_time
@app.route('/eta', methods=['PUT'])
def update_eta():
old_eta = user_sube[request.form['uid']].eta
user_sube[request.form['uid']].eta = request.form['eta']
user = users[request.form['uid']]
sube = user.sube
lineNo = -1
if sube == '1':
user.eta1 = request.form['eta']
for user_in_sube in sube1:
if user_in_sube.uid == user.uid:
user_in_sube.eta1 = request.form['eta']
lineNo = user.no
algoQueue(sube1, '1')
printQueues()
else:
user.eta2 = request.form['eta']
for user_in_sube in sube2:
if user_in_sube.uid == user.uid:
user_in_sube.eta2 = request.form['eta']
lineNo = user.no
algoQueue(sube2, '2')
printQueues()
return "{lineNo:" + str(lineNo) + "}"
@app.route('/lineNo', methods=['GET'])
def get_line_no():
uid = request.args.get('uid')
for item in sube1:
if item.uid == uid:
return "lineNo:" + str(item.no)
for item in sube2:
if item.uid == uid:
return "lineNo:" + str(item.no)
@app.route('/userx', methods=['POST'])
def delete_user():
uid = request.form['uid']
del users[uid]
del user_sube[uid]
for user in sube1:
if user.uid == uid:
sube1.remove(user)
for user in sube2:
if user.uid == uid:
sube2.remove(user)
return uid
def printQueues():
for user in sube1:
print("ID: ", user.uid, " LINENO: ", user.no, " user sube no:", user.sube)
for user in sube2:
print("ID: ", user.uid, " LINENO: ", user.no, " user sube no:", user.sube)
if __name__ == '__main__':
timeClf = createTimeData()
subeClf = trainSubeData(timeClf)
app.run(host='0.0.0.0')