Răsfoiți Sursa

proceeding improved for less code before call

Dev Server 1 an în urmă
părinte
comite
ce0dc7ca41
2 a modificat fișierele cu 12 adăugiri și 34 ștergeri
  1. 8 15
      BotClass.py
  2. 4 19
      open_template_bot.py

+ 8 - 15
BotClass.py

@@ -1,6 +1,7 @@
 import sys, xmpp
 from xmpp import cli
 from datetime import datetime
+import json
 
 import jsonAndRequest as jsreq
 
@@ -10,14 +11,12 @@ class JabberBot:
         self.jidd = jid
         jid = xmpp.JID(jid)
         self.user, self.server, self.password, self.port = jid.getNode(), jid.getDomain(), password, port
-        #self.user, self.server, self.password = jid.getNode(), jid.getDomain(), password
         self.connect()
         self.auth()
 
     #Метод проверки подключения к серверу xmpp
     def connect(self): 
         self.conn = xmpp.Client(self.server, self.port,debug = [])
-        #self.conn = xmpp.Client(self.server,debug = [])
         conn_result = self.conn.connect()
         if not conn_result:
             print("Can't connect to server!\n")
@@ -40,29 +39,23 @@ class JabberBot:
         except KeyboardInterrupt: return 0
         return 1
 
-    def fake_api_call(self, message):        
-        #HTTP запрос
-        #jsreq.requestGetListUser()
-        #cli.send_message(self.user, self.password, "test@ej.sharix-app.org", message)
-        print('fake_api_call: ', message)
-
     def bot_log(self, message):
         #надо строчку лога сделать более информативной
         logfile = open(datetime.now().strftime('%Y-%m-%d') + "-" + self.user + ".log", "a")
         logfile.write(message)
         logfile.close()
         print (message)
-        #cli.send_message(self.user, self.password, "test@ej.sharix-app.org", message)
+
+    def send_notification(self, recipient, message):
+        self.conn.send(xmpp.Message(recipient, message))
+        self.bot_log("Message sent successfully"+" "+recipient+" "+message)
 
     # recipient - это конкретный jid следующего обработчика заявки, ticket - json с заявкой.
     def proceed_status(self, recipient, ticket):
         #тут могут быть различные проверки дополнительные, а так вообще эта функция нужна для передачи заявки на обработку следующему
-        #TODO - почему-то тут валится, пока заменено на затычку
-        #cli.send_message(self.user, self.password, recipient, ticket)
-        #jsonTicket = json.dumps(ticket.__dict__)
-        self.conn.send(xmpp.Message(recipient, ticket))
-        self.bot_log("Message sent successfully"+" "+recipient+" "+ticket)
-        #print ("Message sent successfully", recipient, ticket)
+        jsonTicket = json.dumps(ticket.__dict__)
+        self.conn.send(xmpp.Message(recipient, jsonTicket))
+        self.bot_log("Message sent successfully"+" "+recipient+" "+jsonTicket)
 
     #сюда можно как параметры передавать переменную для значения Process в вызываемой функции, а также передавать информацию о том, какой из обработчиков ввызывать в бесконечном цикле
     def start(self, handler, *args):

+ 4 - 19
open_template_bot.py

@@ -14,7 +14,6 @@ import threading
 import jsonAndRequest as jsreq
 
 global tasklist
-global process_status
 
 #В этом файле содержится только то, что запускает конкретный обработчик
 
@@ -54,7 +53,6 @@ def message_handler(conn, mess):
             orderObj = jsreq.jsonToOrderTicket(text)
             print (orderObj)
             tasklist.append(orderObj)
-            #process_status.append(0)
             bot.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n")
 
 def open_bot_template_wait(period, i,localtask):
@@ -65,8 +63,7 @@ def open_bot_template_wait(period, i,localtask):
     localtask.title=localtask.title+"1"
 
     #обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
-    jsonTicket = json.dumps(localtask.__dict__)
-    bot.proceed_status(proceed_to[0],jsonTicket)
+    bot.proceed_status(proceed_to[0],localtask)
     bot.bot_log(botname+" "+str(datetime.now())+" "+str(i)+" "+"Заказ подождал и возвращен в очередь\n")
 
 def open_bot_template_process(localtask):
@@ -75,8 +72,7 @@ def open_bot_template_process(localtask):
     #ВАЖНО! Надо через API редактировать заказ, иначе возможна потеря данных
     #localtask.title +=1
 
-    jsonTicket = json.dumps(localtask.__dict__)
-    bot.proceed_status(proceed_to[1],jsonTicket)
+    bot.proceed_status(proceed_to[1],localtask)
     bot.bot_log(botname+" "+str(datetime.now())+" "+str(i)+" "+"Заказ успешно обработан\n")
 
 
@@ -86,13 +82,11 @@ def open_bot_template():
         #проверяем элемент tasklist[i]
         bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " " + str(i) + " " + "Заказ в очереди на обработке\n")
         print ("EACH TASKLIST", tasklist[i])
-        #print ("EACH TASKLIST", tasklist[i], process_status[i])
         localtask=tasklist.pop(i)
         
         #если боту почему-то пришла не его заявка - это явно ошибка движения процессов и отдаем в форсмажор - этот обработчик указывать стоит всегда последним
         if (localtask.status!=operating_status):
-            jsonTicket = json.dumps(localtask.__dict__)
-            bot.proceed_status(proceed_to[-1],jsonTicket)
+            bot.proceed_status(proceed_to[-1],localtask)
             bot.bot_log(botname+" "+str(datetime.now())+" "+str(i)+" "+"Заказ не по адресу, перенаправляем на форсмажор\n")
             continue
 
@@ -105,8 +99,7 @@ def open_bot_template():
             t1.start()
 
         #если никакие обработчики не подошли - отправляем обратно в очередь
-        jsonTicket = json.dumps(localtask.__dict__)
-        bot.proceed_status(proceed_to[0],jsonTicket)
+        bot.proceed_status(proceed_to[0],localtask)
         print("Заказ возвращен в очередь\n")
         print (tasklist)
 
@@ -126,17 +119,9 @@ tasklist=jsreq.requestGetList(token, config.API_URL+"/tickets/api/tickets/?list_
 #print ("TASKLIST ", tasklist)
 print (len(tasklist))
 
-#список статусов обработки заказов
-#process_status = []
-#while len(process_status)<len(tasklist):
-#    process_status.append(0)
-
 
 bot = JabberBot(JID, PASSWORD, PORT)
 
-#загружаем список заказов для обработки из базы (по идее, сюда попадаем в случае первого запуска или перезапуска)
-bot.fake_api_call("Получаем список заказов по названию бота-обработчика")
-
 bot.register_handler('message', message_handler)
 bot.start(open_bot_template)