Browse Source

new fixes for services

david.berlinskiy 1 year ago
parent
commit
1c3c7ae454

+ 10 - 0
config.py

@@ -0,0 +1,10 @@
+#Подключение к базе данных
+host = "host"
+SSH_H = "46.138.247.90"
+user = "user"
+password = "password"
+port = 334
+db_name = "db_name"
+#Подключение к боту
+jid = "test@msg.sharix-app.org"
+jidpassword = "test1234@"

+ 0 - 8
handlers/config_template.py

@@ -1,8 +0,0 @@
-#rename this file to config.py
-BOTLIST=["open_template_bot","open_strequest_assigned","open_strequest_inprocess","open_strequest_new","open_strequest_reopened","open_strequest_wontfix","open_strequest_done","open_strequest_duplicate","open_strequest_closed","open_accessrequest_pending","open_accessrequest_accepted","open_accessrequest_declined","open_negrequest_pending","open_negrequest_accepted","open_negrequest_declined","open_servicerequest_template","open_servicerequest_booked","open_servicerequest_assigned","open_servicerequest_accepted","open_servicerequest_pending","open_servicerequest_declined","open_servicerequest_prestart","open_servicerequest_process","open_servicerequest_forcemajeure","open_servicerequest_forcemajeurecancelled","open_servicerequest_done","open_servicerequest_cancelled","open_servicerequest_closed"]
-JSERVER="ej.sharix-app.org"
-PASSWORD="12345"
-PORT=5222
-API_URL = "https://testopen.sharix-app.org"
-
-

+ 90 - 14
handlers/jsonAndRequest.py

@@ -60,16 +60,70 @@ https://wiki.sharix-app.org/doku.php/open/tech/dev/sharix_open_-_primery_json
 }
 '''
 #надо адаптировать класс к новому формату JSON
-class Order(object):
-    def __init__(self, order_synced, ticket, status, title, note, due_date, id_metaservice, is_global, is_visible, service, service_type, status_changed_date, time_placed, time_start=None, time_start_predicted=None, time_finish_predicted=None, time_start_real=None, time_finish_real=None, order_place_type=None, order_place_start=None, order_place_start_gps=None, order_place_start_real=None, order_place_start_real_gps=None, order_place_finish_predicted=None, order_place_finish_predicted_gps=None, order_place_finish_real=None, order_place_finish_real_gps=None, predicted_price=None, real_price=None, payment_transaction_id=None, rating_id=None, provider=None, provider_screen_name=None, receiver=None, receiver_screen_name=None, client_id=None, resource_id=None, attempts=None, asap=None):
-        self.order_synced = order_synced
+# class Order(object):
+#     def __init__(self, id,order_synced, ticket, status, title, note, due_date, id_metaservice, is_global, is_visible, service, service_type, status_changed_date,time_created, time_placed, time_start=None, time_start_predicted=None, time_finish_predicted=None, time_start_real=None, time_finish_real=None, order_place_type=None, order_place_start=None, order_place_start_gps=None, order_place_start_real=None, order_place_start_real_gps=None, order_place_finish_predicted=None, order_place_finish_predicted_gps=None, order_place_finish_real=None, order_place_finish_real_gps=None, predicted_price=None, real_price=None, payment_transaction_id=None, rating_id=None, provider=None, provider_screen_name=None, receiver=None, receiver_screen_name=None, client_id=None, resource_id=None, attempts=None, asap=None):
+#         self.order_synced = order_synced
+#         self.id = id
+#         self.ticket = ticket
+#         self.status = status
+
+#         self.title = title
+#         self.note = note
+#         self.due_date = due_date
+
+#         self.id_metaservice = id_metaservice
+#         self.is_global = is_global
+#         self.is_visible = is_visible
+#         self.service = service
+#         self.service_type = service_type
+
+#         self.status_changed_date = status_changed_date
+#         self.time_created = time_created
+#         self.time_placed = time_placed
+#         self.time_start = time_start
+#         self.time_start_predicted = time_start_predicted
+#         self.time_finish_predicted = time_finish_predicted
+#         self.time_start_real = time_start_real
+#         self.time_finish_real = time_finish_real
+
+#         self.order_place_type =order_place_type
+#         self.order_place_start = order_place_start
+#         self.order_place_start_gps = order_place_start_gps
+#         self.order_place_start_real = order_place_start_real
+#         self.order_place_start_real_gps = order_place_start_real_gps
+#         self.order_place_finish_predicted = order_place_finish_predicted
+#         self.order_place_finish_predicted_gps = order_place_finish_predicted_gps
+#         self.order_place_finish_real = order_place_finish_real
+#         self.order_place_finish_real_gps = order_place_finish_real_gps
+
+#         self.predicted_price = predicted_price
+#         self.real_price = real_price
+
+#         self.payment_transaction_id = payment_transaction_id
+#         self.rating_id = rating_id
+
+#         self.provider = provider
+#         self.provider_screen_name = provider_screen_name
+#         self.receiver = receiver
+#         self.receiver_screen_name = receiver_screen_name
+#         self.client_id = client_id
+#         self.resource_id = resource_id
+#         self.attempts = attempts
+#         self.asap = asap
+#         #доделать до конца по аналогии с закоммиченным json
+#     def __str__(self):
+#         return "{0}, {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}".format(self.order_synced, self.id, self.ticket, self.status, self.title, self.note, self.due_date, self.id_metaservice, self.is_global, self.is_visible, self.service, self.service_type, self.status_changed_date, self.time_created,self.time_placed, self.time_start, self.time_start_predicted, self.time_finish_predicted, self.time_start_real, self.time_finish_real, self.order_place_type, self.order_place_start, self.order_place_start_gps, self.order_place_start_real, self.order_place_start_real_gps, self.order_place_finish_predicted, self.order_place_finish_predicted_gps, self.order_place_finish_real, self.order_place_finish_real_gps, self.predicted_price, self.real_price, self.payment_transaction_id, self.rating_id, self.provider, self.provider_screen_name, self.receiver, self.receiver_screen_name, self.client_id, self.resource_id, self.attempts, self.asap)
 
+        #\n добавляете в местах с пустой строкой в шаблоне
+        
+class Order(object):
+    def __init__(self, id, ticket, status, title, note, id_metaservice, is_global, is_visible, service, service_type,time_created, time_placed, time_start=None, time_start_predicted=None, time_finish_predicted=None, time_start_real=None, time_finish_real=None, order_place_type=None, order_place_start=None, order_place_start_gps=None, order_place_start_real=None, order_place_start_real_gps=None, order_place_finish_predicted=None, order_place_finish_predicted_gps=None, order_place_finish_real=None, order_place_finish_real_gps=None, predicted_price=None, real_price=None, payment_transaction_id=None, rating_id=None, provider=None, provider_screen_name=None, receiver=None, receiver_screen_name=None, client_id=None, resource_id=None, attempts=None, asap=None):
+        self.id = id
         self.ticket = ticket
         self.status = status
 
         self.title = title
         self.note = note
-        self.due_date = due_date
 
         self.id_metaservice = id_metaservice
         self.is_global = is_global
@@ -77,7 +131,7 @@ class Order(object):
         self.service = service
         self.service_type = service_type
 
-        self.status_changed_date = status_changed_date
+        self.time_created = time_created
         self.time_placed = time_placed
         self.time_start = time_start
         self.time_start_predicted = time_start_predicted
@@ -111,10 +165,11 @@ class Order(object):
         self.asap = asap
         #доделать до конца по аналогии с закоммиченным json
     def __str__(self):
-        return "{0}, {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}".format(self.order_synced, self.ticket, self.status, self.title, self.note, self.due_date, self.id_metaservice, self.is_global, self.is_visible, self.service, self.service_type, self.status_changed_date, self.time_placed, self.time_start, self.time_start_predicted, self.time_finish_predicted, self.time_start_real, self.time_finish_real, self.order_place_type, self.order_place_start, self.order_place_start_gps, self.order_place_start_real, self.order_place_start_real_gps, self.order_place_finish_predicted, self.order_place_finish_predicted_gps, self.order_place_finish_real, self.order_place_finish_real_gps, self.predicted_price, self.real_price, self.payment_transaction_id, self.rating_id, self.provider, self.provider_screen_name, self.receiver, self.receiver_screen_name, self.client_id, self.resource_id, self.attempts, self.asap)
+        return "{0}, {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}".format( self.id, self.ticket, self.status, self.title, self.note, self.id_metaservice, self.is_global, self.is_visible, self.service, self.service_type, self.time_created,self.time_placed, self.time_start, self.time_start_predicted, self.time_finish_predicted, self.time_start_real, self.time_finish_real, self.order_place_type, self.order_place_start, self.order_place_start_gps, self.order_place_start_real, self.order_place_start_real_gps, self.order_place_finish_predicted, self.order_place_finish_predicted_gps, self.order_place_finish_real, self.order_place_finish_real_gps, self.predicted_price, self.real_price, self.payment_transaction_id, self.rating_id, self.provider, self.provider_screen_name, self.receiver, self.receiver_screen_name, self.client_id, self.resource_id, self.attempts, self.asap)
+
+
+
 
-        #\n добавляете в местах с пустой строкой в шаблоне
-        
 
 #ticket json example
 '''
@@ -219,8 +274,8 @@ def jsonToOrderTicket(jsonstring) -> OrderTicket:
 
 #Функция обращения к апи и получение токена
 def requestGetToken(login, password, url) -> str:
-    login = "11111111111"
-    password = "Sharix!"
+    login = "79999999999"
+    password = "12345"
     #url = "https://user.sharix-app.org/auth/token/login/"
     data = {
         "password":password,
@@ -254,6 +309,28 @@ def requestGetListUser():
     print(response.json())
 
 
+# def requestGetList(auth_token, url):
+#     headers = {'Authorization': f'Token {auth_token}'}
+#     response = requests.get(url, headers=headers)
+#     #response = requests.get(config.API_URL+"/dbsynce/api/orders/", headers=headers)
+#     ordertext=response.json()
+#     startlist = []
+    
+#     if not ordertext:
+#         print("Empty array")
+#     else:
+#         for i in ordertext:
+#             print (i, "PROCESSING")
+#             try:
+#                 orderticket = OrderTicket(**i)
+#                 print(i, "ORDER ", orderticket)
+#                 startlist.append(orderticket)
+#             except Exception as ex:
+#                 print(ex)
+#     print (startlist)
+#     return startlist
+
+
 def requestGetList(auth_token, url):
     headers = {'Authorization': f'Token {auth_token}'}
     response = requests.get(url, headers=headers)
@@ -267,11 +344,10 @@ def requestGetList(auth_token, url):
         for i in ordertext:
             print (i, "PROCESSING")
             try:
-                orderticket = OrderTicket(**i)
-                print(i, "ORDER ", orderticket)
-                startlist.append(orderticket)
+                order = Order(**i)
+                print(i, "ORDER ", order)
+                startlist.append(order)
             except Exception as ex:
                 print(ex)
     print (startlist)
     return startlist
-

+ 15 - 14
handlers/open_servicerequest_booked.py

@@ -30,7 +30,7 @@ print(JID, PASSWORD)
 listen_to=["9090@ej.sharix-app.org","test@ej.sharix-app.org", "open_template_bot@ej.sharix-app.org","799999999990@ej.sharix-app.org"]
 
 #тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
-proceed_to=["open_servicerequest_assigned@ej.sharix-app.org", "open_servicerequest_pending@ej.sharix-app.org", "open_servicerequest_forcemajeure@ej.sharix-app.org"]
+proceed_to=["open_servicerequest_assigned@ej.sharix-app.org","open_servicerequest_process@ej.sharix-app.org", "open_servicerequest_pending@ej.sharix-app.org", "open_servicerequest_forcemajeure@ej.sharix-app.org"]
 
 #максимальное значение попыток обработать заказ
 idle_value=10
@@ -59,7 +59,7 @@ def open_servicerequest_booked_wait(period,localtask):
 
 def open_servicerequest_booked_process(localtask):
     bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ в обработчике\n")
-
+    
     order = jsreq.jsonToOrder(localtask)
     #Пока заглушка
     balance = get_balance(order.client_id)
@@ -104,7 +104,7 @@ def get_balance(client):
             return balance
         except Exception as ex:
             print(ex)
-
+#set provider?
 def set_provider(ticket, provider):
     headers = {'Authorization': f'Token {token}'}
     data = {'ticket': ticket,
@@ -129,22 +129,23 @@ def open_servicerequest_booked():
         bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Заказ в очереди на обработке\n")
         print("EACH TASKLIST", tasklist)
 
-        # if (localtask.status!=operating_status):
-        #     bot.proceed_status(proceed_to[-1],localtask)
-        #     bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ не по адресу, перенаправляем на форсмажор\n")
-        #     continue
+        if (localtask.status!=operating_status):
+            # bot.proceed_status(proceed_to[-1],localtask) #временная проверка отправки
+            bot.proceed_status(listen_to[-1],localtask)
+            bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ не по адресу, перенаправляем на форсмажор\n")
+            continue
 
-        # if (localtask.title!="10"):
+        # elif (localtask.provider==T):
         #     t1=threading.Thread(target=open_servicerequest_booked_wait, args=(5,localtask))
         #     t1.start()
 
         # if (localtask.title=="101"):
         #     t1=threading.Thread(target=open_servicerequest_booked_process, args=(10,localtask))
         #     t1.start()
-
-        t1=threading.Thread(target=open_servicerequest_booked_process, args=(localtask))
-        t1.start()
-
+        else:
+            t1=threading.Thread(target=open_servicerequest_booked_process, args=(localtask))
+            t1.start()
+        
         #если никакие обработчики не подошли - отправляем обратно в очередь
         bot.proceed_status(proceed_to[0],localtask)
         print("Заказ возвращен в очередь\n")
@@ -156,11 +157,11 @@ def open_servicerequest_booked():
 tasklist = []
 
 #надо инициализировать tasklist при запуске из API
-token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL+"/api/v1/auth/token/login/")
+token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL+"my/api/v1/auth/token/login/")
 #ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
 tasklist=jsreq.requestGetList(token, config.API_URL+"/dbsynce/api/orders/")
 
-print (len(tasklist))
+# print (len(tasklist))
 
 bot = JabberBot(JID, PASSWORD, PORT)
 

+ 3 - 3
handlers/open_servicerequest_pending.py

@@ -27,7 +27,7 @@ PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
 print(JID, PASSWORD)
 
 #таким образом хранится список jid, от которых можно получать сообщения этому боту
-listen_to=["test@ej.sharix-app.org", "open_template_bot@ej.sharix-app.org"]
+listen_to=["test@ej.sharix-app.org", "open_template_bot@ej.sharix-app.org","open_servicerequest_booked@ej.sharix-app.org"]
 
 #тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
 proceed_to=[botname, "open_servicerequest_prestart@ej.sharix-app.org", "open_servicerequest_prestart@ej.sharix-app.org", "open_servicerequest_forcemajeure@ej.sharix-app.org"]
@@ -123,10 +123,10 @@ def open_servicerequest_pending():
 tasklist = []
 
 #надо инициализировать tasklist при запуске из API
-token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL+"/auth/token/login/")
+token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL+"my/api/v1/auth/token/login/")
 
 #ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
-tasklist=jsreq.requestGetList(token, config.API_URL+"/tickets/api/tickets/?list_id=10")
+tasklist=jsreq.requestGetList(token, config.API_URL+"/webservice/api/webservice/")
 print (len(tasklist))
 
 bot = JabberBot(JID, PASSWORD, PORT)