/
mainFlow.py
279 lines (210 loc) · 8.87 KB
/
mainFlow.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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
#30.07.2019
#Main Flow
###Tieto dodac/skopiowac!! dzis!!!
import OF #opusflow module, a set of functions to communication with opusflow.
import log
import DRIVER
import YTJ_Module
import IADDRESS_Module
import OPERATORS, iAddressOperators
import time
import datetime
import ChangeExisting
import AddNew
def data(date):
now = datetime.datetime.now()
month = int(date[5:7])
day = int(date[8:10])
if now.month == month:
if now.day - day < -1:
return True
else:
return False
elif now.month > month:
return False
elif now.month < month:
return True
def zmodyfikuj_date(data):
t= data.split('-')
new_data= t[2]+'.'+t[1]+'.'+t[0]+' 00:00'
return new_data
def operator_number(op):
temp = OPERATORS.op.get(op,'')
nr = iAddressOperators.op.get(temp,'')
return nr
def getData(l, ticket):
d = dict()
for element in l:
if 'enable' in element['status'].lower():
d.update({'site_link':element['site_link']})
if 'TE' in element['electronic_adr']: ###tieto operator!!!! drugi w ChangeExisting.py
adr = element['electronic_adr'][2:]
else:
adr = element['electronic_adr']
d.update({'electronic_adr':adr})
d.update({'lmc':element['lmc']})
d.update({'number':ticket['number']})
d.update({'sys_id':ticket['sys_id']})
d.update({'operator':ticket['operator']})
d.update({'date':ticket['date']})
d.update({'busines_id':ticket['busines_id']}) #company receiving id
d.update({'address_tbc':ticket['address_tbc']}) #company electronic address
return d
######stare nowe, co na co zmieniamy, dokonczyc jesli czegos zabraknie
def ocRouting(l):
for element in l:
if ('BEL' in element['lmc'] or 'BEL' in element['electronic_adr']) and 'enable' in element['status'].lower():
return True
return False
def twoRoutings(l):
n=0
for element in l:
if 'enable' in element['status'].lower():
n=n+1
if n > 1:
return 2
elif n==1:
return 1
elif n==0:
return 0
def mainFlow():
driver = DRIVER.start()
lista = OF.getCasesFromQueue() #create list of tasks
if lista:
temp = OF.checkLogs(lista) #check remove previously processed task
lista = temp
else:
print('no tasks in queue exit program')
#exit() ##no tasks in queue exit program, czy to potrzebne?
###buduje liste slownikow do dalszej analizy
###tu tez moze byc oddany task do cs, z informacja
###albo zamkniety z infrmacja dla klienta, musi to byc zalogowane
###w tym momencie odbywa sie tez walidacja danych z taska
main_lista=list()
for ticket in lista:
temp = OF.getDataFromTask(ticket)
if temp!='ERROR':
main_lista.append(temp)
###ytj validation
print('ilosc tixow przed ytj check:'+len(main_lista))
temp = main_lista
for ticket in main_lista:
cn = ticket.get('company_name','')
bi = ticket.get('busines_id','')
bi.strip(' ')
if bi :
ytj_d = YTJ_Module.ytjCheck(driver,bi, cn)
error = ytj_d.get('ytj_error','')
if error == 'OK':
ticket.update({'ytj_name':ytj_d.get('ytj_company_name','')})
else:
OF.informCustomer(ticket['sys_id'],'2') #inform customer
OF.returnToCS(ticket['sys_id'],ytj_d.get('ytj_error','')+' - please inform customer, scenario 2') ##send to CS
log.add_log(ticket['sys_id']+':'+ticket['number']+':'+ytj_d.get('ytj_error','')+':customer informed - scenario 2, ticket send to CS')
temp.remove(ticket)
main_lista=temp
print('ilosc tixow po ytj check:'+len(main_lista))
###iAddress validation, and actions
###return to CS if OC routing, 2 enables, exist as requested
###create "Add new" list of dictionaries
###create "change existing" list of dict
###create "all disabled" list of dictionaries
addNew=list()
changeExisting=list()
allDisabled=list()
DRIVER.logToiAddress(driver)
temp=main_lista
for ticket in main_lista:
bi = ticket.get('busines_id','')
bi.strip(' ')
l=IADDRESS_Module.getData(bi,driver)
if l == '':
d=dict()
d = ticket
addNew.append(d)
temp.remove(ticket)
continue
if ocRouting(l):
OF.returnToCS(ticket['sys_id'],'OC routing enabled') ##poten przesylac do klienta
log.add_log(ticket['sys_id']+':'+ticket['number']+':'+'OC routing enabled')
temp.remove(ticket)
continue
numberOfEnabled = twoRoutings(l) ##count number of enabled routings
if numberOfEnabled == 2:
OF.returnToCS(ticket['sys_id'],'2 routing enabled') ##poten przesylac do klienta
log.add_log(ticket['sys_id']+':'+ticket['number']+':'+'2 routing enabled')
temp.remove(ticket)
continue
if numberOfEnabled == 0:
###co potrzebne mi przy dodawaniu nowego situ ?
d=dict()
d=ticket
d.update({'org_link':l[0].get('org_link','')})
allDisabled.append(d)
temp.remove(ticket)
continue
d = dict()
d= getData(l,ticket)
if d:
changeExisting.append(d)
temp.remove(ticket)
continue
###na koncu sprawdz co nigdzie nie wpadlo.
main_lista = temp
print("\n\n kompletnie nowe\n")
print(addNew)
if addNew:
potwierdzenie = input("is it correct? y/n ")
if potwierdzenie == 'y':
####funkcja w petli
for element in addNew:
link = AddNew.addNewOrg(driver,element.get('ytj_name'),element.get('number'))
#operator = operator_number(element.get('operator'))
operator = element.get('operator')
AddNew.addNewSite(driver,link,operator,element.get('busines_id'),element.get('address_tbc'),element.get('number'))
time.sleep(10)
##zalogowac
log.add_log(element['sys_id']+':'+element['number']+':'+'New routing has been added')
OF.returnToCS(element['sys_id'],'New routing has been added, please inform customer')
##oddac do CS/ponformowac klienta
print("\n\n do zmiany \n\n")
print(changeExisting)
if changeExisting:
potwierdzenie = input("is it correct? y/n ")
if potwierdzenie == 'y':
for element in changeExisting:
##porownanie operatorow i addresow, czy w ogole wchodzic w funkcje, jak nie to wyjsc z logiem odpowiednim
##rozbicie, zmien operator, zmien address, zmien operator i adress z data??
#decyzja o dacie
if_date = data(element.get('date'))
if if_date:
data_ = zmodyfikuj_date(element.get('date'))
else:
data_=''
if element.get('electronic_adr') == element.get('address_tbc') and element.get('lmc')== OPERATORS.op.get(element.get('operator')):
log.add_log(element['sys_id']+':'+element['number']+':'+'Routing exist')
OF.returnToCS(element['sys_id'],'Routing exist')
continue
odp = ChangeExisting.changeSite(driver,element.get('site_link'),element.get('operator'),element.get('address_tbc'),data_,element.get('number'))
time.sleep(10)
if odp == 'OK':
log.add_log(element['sys_id']+':'+element['number']+':'+'Routing has been changed')
OF.returnToCS(element['sys_id'],'Routing has been changed, please inform customer')
elif odp == 'ERROR':
log.add_log(element['sys_id']+':'+element['number']+':'+'2 Receiving Identifiers please check')
OF.returnToCS(element['sys_id'],'2 Receiving Identifiers please check')
print("\n\n wszystko disabled \n\n")
print(allDisabled)
if allDisabled:
potwierdzenie = input("is it correct? y/n ")
if potwierdzenie == 'y':
for element in allDisabled:
addSite.addNewSite(driver,element.get('site_link'),element.get('operator'),element.get('address_tbc'),element.get('number'))
time.sleep(10)
log.add_log(element['sys_id']+':'+element['number']+':'+'Routing has been added')
OF.returnToCS(element['sys_id'],'Routing has been changed, please inform customer')
print("\n\nbez akcji \n\n") #oddac do CS
print(main_lista)
if main_lista:
print('wywolaj jeszcze raz narazie, trzeba sprawdzic dlaczego wszystkie sie nie lapia do akcji!!!i i dopisz tieto')
mainFlow()