Browse Source

pipe for saving handlers

david.berlinskiy 3 weeks ago
parent
commit
a79b64f709

+ 1 - 1
handlers/config.py

@@ -1,5 +1,5 @@
 #rename this file to config.py
-BOTLIST=["open_basic_bot",'status_changer']
+BOTLIST=["open_basic_bot",'status_changer','st_request_done','st_request_wontfix','st_request_assigned','st_request_new']
 JSERVER="ej.sharix-app.org"
 PASSWORD="12345"
 PORT=5222

+ 25 - 7
handlers/jsonAndRequest.py

@@ -38,14 +38,12 @@ def createUser(username, phone, password, url) -> str:
 
     
 
-def requestGetListUser():
-    auth_token=requestGetToken()
-    print(auth_token)
-    headers = {'Authorization': f'Token {auth_token}'}
-    url = 'https://user.sharix-app.org/platform/api/sharix-users/'
+def requestGetListUser(token):
+    headers = {'Authorization': f'Token {token}'}
+    url = 'http://testopen.sharix-app.org/api/v1/platform/sharix-users/'
     response = requests.get(url, headers=headers)
-    print(response)
-    print(response.json())
+
+    return response
     
     
 class Ticket(object):
@@ -121,6 +119,12 @@ def requestGetTicket_user(auth_token, url):
     print (startlist)
     return startlist
 
+def requestPatchTicketUser(token,url, data):
+    headers = {'Authorization': f'Token {token}'}
+    response = requests.patch(url, json=data, headers=headers)
+    return response
+
+
 
 def change_groups(auth_token, url,group):
     headers = {
@@ -136,4 +140,18 @@ def change_groups(auth_token, url,group):
     response = requests.put(url, json=data, headers=headers)
     print(url)
     print(user_data)
+    return response
+
+
+
+def change_status_company(auth_token, url,id_metaservice):
+    headers = {
+    'Content-Type': 'application/json',
+    'Authorization': f'Token {auth_token}'
+    }
+    response = requests.get(url, headers=headers)
+    user_data = response.json()
+    print(user_data)
+    current_metaservice = user_data.get('id_metaservice', [])
+    repsonse = requests.put(config.API_URL+f"dbsynce/api/company/{id_metaservice}", json=data, headers=headers)
     return response

+ 128 - 0
handlers/st_request_assigned.py

@@ -0,0 +1,128 @@
+import requests
+import xmpp
+from xmpp import cli
+import config
+from BotClass import JabberBot
+import json
+#раскомментировать, когда перейдем на разные пароли
+import hashlib
+from datetime import datetime
+
+import time
+import threading
+
+#test
+import jsonAndRequest as jsreq
+
+global tasklist
+
+botname="status_changer"
+
+JID=botname+"@"+config.JSERVER
+PORT=config.PORT
+
+PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
+
+
+#таким образом хранится список jid, от которых можно получать сообщения этому боту
+listen_to=["status_changer@ej.sharix-app.org"]
+
+#тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
+proceed_to=["numbers"]
+
+#максимальное значение попыток обработать заказ
+idle_value=10
+
+# обработчик входящих сообщений
+# def message_handler(conn, mess):
+#     text = mess.getBody()#текст сообщения боту
+#     user = mess.getFrom()#отправитель сообщения
+#     if (str(user).split("/")[0]) in listen_to:
+#         # print (str(user).split("/")[0])
+#         if text is not None:
+#             orderObj = jsreq.jsonToOrder(text)
+#             tasklist.append(orderObj)
+#             bot.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n")
+
+def status_changer_wait(period,localtask):
+    bot.bot_log(botname+" "+str(datetime.now())+" "+"Тикет ожидает\n")
+    time.sleep(period)
+
+    bot.proceed_status(proceed_to[0],localtask)
+    bot.bot_log(botname+" "+str(datetime.now())+" "+"Тикет подождал и возвращен в очередь\n")
+
+def status_changer_process(ticket):
+    bot.bot_log(botname+" "+str(datetime.now())+" "+"Тикет в обработчике\n")
+    tickets_new=jsreq.requestGetTicket_user(token, config.API_URL+f"tickets/api/ticket_list/{ticket.id}")
+    # if ticket.id == 2103:
+    #     for ticket_new in tickets_new:
+    #         metaservice_admin(ticket_new,ticket.group)
+    if ticket.id == 2101:
+        for ticket_new in tickets_new:
+            company_status(ticket_new)
+    elif ticket.id == 2102:
+        for ticket_new in tickets_new:
+            company_status(ticket_new,ticket.group)
+    elif ticket.id =='':
+        print('should be soon')#дополнить по всем айди тикетов
+    # if ticket_new != []:
+    #     print(ticket_new)
+    #api/v1/platform/sharix-users/1/
+    
+    # bot.proceed_status(proceed_to[1], localtask)
+    # bot.bot_log(botname + " " + str(datetime.now()) + " " + "Тикет успешно обработан и отправлен на pending\n")
+
+
+def company_status(ticket_new):
+    if ticket_new.status == 141:#нужны доп проверки
+        answer=jsreq.change_status_company(token, config.API_URL+f"dbsynce/api/client/{ticket_new.created_by}/")
+        if answer!=200:
+            print(f'Ошибка{answer}')
+    else:   
+        print('Статус не ACCESS')
+
+# def company_status(ticket_new):
+#     if ticket_new.status == 141:#нужны доп проверки
+#         answer=jsreq.change_status_company(token, config.API_URL+f"dbsynce/api/client/{ticket_new.created_by}/",ticket_new.created_by)
+#         if answer!=200:
+#             print(f'Ошибка{answer}')
+#     else:   
+#         print('Статус не ACCESS')
+
+
+def metaservice_admin(ticket_new,group):
+    if ticket_new.status == 141:#нужны доп проверки
+        answer=jsreq.change_groups(token, config.API_URL+f"api/v1/platform/sharix-users/{ticket_new.created_by}/",group)
+        if answer!=200:
+            print(f'Ошибка{answer}')
+    else:   
+        print('Статус не ACCESS')
+
+
+def status_changer():
+    while True:
+        ticketlist=jsreq.requestGetList(token, config.API_URL+"tickets/api/ticket_list/")
+        for ticket in ticketlist:
+            bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Тикет в очереди на обработке\n")
+            t1 = threading.Thread(target=status_changer_process, args=(ticket,))
+            t1.start()
+            t1.join()  # Ожидаем завершения обработки тикета
+        time.sleep(300)  # Обновляем ticketlist каждые 5 минут
+
+
+#Авторизация и запуск бота
+
+#пустой список
+ticketlist = []
+
+token = jsreq.requestGetToken(config.API_URL+"api/v1/auth/token/login/")
+# ticketlist=jsreq.requestGetList(token, config.API_URL+"/dbsynce/api/orders/") ###Должна быть проверка между двумя
+
+# # print (len(tasklist))
+
+bot = JabberBot(JID, PASSWORD, PORT)
+
+
+
+bot.start(status_changer)
+

+ 128 - 0
handlers/st_request_done.py

@@ -0,0 +1,128 @@
+import requests
+import xmpp
+from xmpp import cli
+import config
+from BotClass import JabberBot
+import json
+#раскомментировать, когда перейдем на разные пароли
+import hashlib
+from datetime import datetime
+
+import time
+import threading
+
+#test
+import jsonAndRequest as jsreq
+
+global tasklist
+
+botname="status_changer"
+
+JID=botname+"@"+config.JSERVER
+PORT=config.PORT
+
+PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
+
+
+#таким образом хранится список jid, от которых можно получать сообщения этому боту
+listen_to=["status_changer@ej.sharix-app.org"]
+
+#тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
+proceed_to=["numbers"]
+
+#максимальное значение попыток обработать заказ
+idle_value=10
+
+# обработчик входящих сообщений
+# def message_handler(conn, mess):
+#     text = mess.getBody()#текст сообщения боту
+#     user = mess.getFrom()#отправитель сообщения
+#     if (str(user).split("/")[0]) in listen_to:
+#         # print (str(user).split("/")[0])
+#         if text is not None:
+#             orderObj = jsreq.jsonToOrder(text)
+#             tasklist.append(orderObj)
+#             bot.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n")
+
+def status_changer_wait(period,localtask):
+    bot.bot_log(botname+" "+str(datetime.now())+" "+"Тикет ожидает\n")
+    time.sleep(period)
+
+    bot.proceed_status(proceed_to[0],localtask)
+    bot.bot_log(botname+" "+str(datetime.now())+" "+"Тикет подождал и возвращен в очередь\n")
+
+def status_changer_process(ticket):
+    bot.bot_log(botname+" "+str(datetime.now())+" "+"Тикет в обработчике\n")
+    tickets_new=jsreq.requestGetTicket_user(token, config.API_URL+f"tickets/api/ticket_list/{ticket.id}")
+    # if ticket.id == 2103:
+    #     for ticket_new in tickets_new:
+    #         metaservice_admin(ticket_new,ticket.group)
+    if ticket.id == 2101:
+        for ticket_new in tickets_new:
+            company_status(ticket_new)
+    elif ticket.id == 2102:
+        for ticket_new in tickets_new:
+            company_status(ticket_new,ticket.group)
+    elif ticket.id =='':
+        print('should be soon')#дополнить по всем айди тикетов
+    # if ticket_new != []:
+    #     print(ticket_new)
+    #api/v1/platform/sharix-users/1/
+    
+    # bot.proceed_status(proceed_to[1], localtask)
+    # bot.bot_log(botname + " " + str(datetime.now()) + " " + "Тикет успешно обработан и отправлен на pending\n")
+
+
+def company_status(ticket_new):
+    if ticket_new.status == 141:#нужны доп проверки
+        answer=jsreq.change_status_company(token, config.API_URL+f"dbsynce/api/client/{ticket_new.created_by}/")
+        if answer!=200:
+            print(f'Ошибка{answer}')
+    else:   
+        print('Статус не ACCESS')
+
+# def company_status(ticket_new):
+#     if ticket_new.status == 141:#нужны доп проверки
+#         answer=jsreq.change_status_company(token, config.API_URL+f"dbsynce/api/client/{ticket_new.created_by}/",ticket_new.created_by)
+#         if answer!=200:
+#             print(f'Ошибка{answer}')
+#     else:   
+#         print('Статус не ACCESS')
+
+
+def metaservice_admin(ticket_new,group):
+    if ticket_new.status == 141:#нужны доп проверки
+        answer=jsreq.change_groups(token, config.API_URL+f"api/v1/platform/sharix-users/{ticket_new.created_by}/",group)
+        if answer!=200:
+            print(f'Ошибка{answer}')
+    else:   
+        print('Статус не ACCESS')
+
+
+def status_changer():
+    while True:
+        ticketlist=jsreq.requestGetList(token, config.API_URL+"tickets/api/ticket_list/")
+        for ticket in ticketlist:
+            bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Тикет в очереди на обработке\n")
+            t1 = threading.Thread(target=status_changer_process, args=(ticket,))
+            t1.start()
+            t1.join()  # Ожидаем завершения обработки тикета
+        time.sleep(300)  # Обновляем ticketlist каждые 5 минут
+
+
+#Авторизация и запуск бота
+
+#пустой список
+ticketlist = []
+
+token = jsreq.requestGetToken(config.API_URL+"api/v1/auth/token/login/")
+# ticketlist=jsreq.requestGetList(token, config.API_URL+"/dbsynce/api/orders/") ###Должна быть проверка между двумя
+
+# # print (len(tasklist))
+
+bot = JabberBot(JID, PASSWORD, PORT)
+
+
+
+bot.start(status_changer)
+

+ 98 - 0
handlers/st_request_new.py

@@ -0,0 +1,98 @@
+import requests
+import xmpp
+from xmpp import cli
+import config
+from BotClass import JabberBot
+import json
+#раскомментировать, когда перейдем на разные пароли
+import hashlib
+from datetime import datetime
+
+import time
+import threading
+
+#test
+import jsonAndRequest as jsreq
+
+global tasklist
+
+botname="st_request_new"
+
+JID=botname+"@"+config.JSERVER
+PORT=config.PORT
+
+PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
+
+
+#таким образом хранится список jid, от которых можно получать сообщения этому боту
+listen_to=["st_request_new@ej.sharix-app.org"]
+
+#тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
+proceed_to=["numbers"]
+
+#максимальное значение попыток обработать заказ
+idle_value=10
+
+# обработчик входящих сообщений
+# def message_handler(conn, mess):
+#     text = mess.getBody()#текст сообщения боту
+#     user = mess.getFrom()#отправитель сообщения
+#     if (str(user).split("/")[0]) in listen_to:
+#         # print (str(user).split("/")[0])
+#         if text is not None:
+#             orderObj = jsreq.jsonToOrder(text)
+#             tasklist.append(orderObj)
+#             bot.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n")
+
+
+
+def status_new_process(ticket):
+    
+    tickets_new=jsreq.requestGetTicket_user(token, config.API_URL+f"tickets/api/ticket_list/{ticket.id}")
+    for ticket_new in tickets_new:
+        send_to_user(ticket_new)
+
+
+def send_to_user(ticket_new):
+    user = jsreq.requestGetListUser(token)
+    print(user.json()[0]['id'])
+    headers = {'Authorization': f'Token {token}'}
+    url =  config.API_URL+f"tickets/api/ticket_list/{ticket_new.id}"
+    if ticket_new.assigned_to == None:
+        ticket_new.assigned_to = user.json()[0]['id']
+        user = 'test@ej.sharix-app.org' 
+        print({'id':ticket_new.id, 'assigned_to' :ticket_new.assigned_to })
+        response = requests.put(url, json={'id':ticket_new.id, 'assigned_to' :ticket_new.assigned_to }, headers=headers)
+        print(response)
+        if response:
+            bot.send_notification(user,ticket_new)   
+
+
+
+def status_new():
+    while True:
+        ticketlist=jsreq.requestGetList(token, config.API_URL+"tickets/api/ticket_list/")
+        for ticket in ticketlist:
+            bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Тикет отправлен в очередь на обработку\n")
+            t1 = threading.Thread(target=status_new_process, args=(ticket,))
+            t1.start()
+            t1.join()  # Ожидаем завершения обработки тикета
+        time.sleep(300)  # Обновляем ticketlist каждые 5 минут
+
+
+#Авторизация и запуск бота
+
+#пустой список
+ticketlist = []
+
+token = jsreq.requestGetToken(config.API_URL+"api/v1/auth/token/login/")
+# ticketlist=jsreq.requestGetList(token, config.API_URL+"/dbsynce/api/orders/") ###Должна быть проверка между двумя
+
+# # print (len(tasklist))
+
+bot = JabberBot(JID, PASSWORD, PORT)
+
+
+
+bot.start(status_new)
+

+ 128 - 0
handlers/st_request_wontfix.py

@@ -0,0 +1,128 @@
+import requests
+import xmpp
+from xmpp import cli
+import config
+from BotClass import JabberBot
+import json
+#раскомментировать, когда перейдем на разные пароли
+import hashlib
+from datetime import datetime
+
+import time
+import threading
+
+#test
+import jsonAndRequest as jsreq
+
+global tasklist
+
+botname="st_request_wontfix"
+
+JID=botname+"@"+config.JSERVER
+PORT=config.PORT
+
+PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
+
+
+#таким образом хранится список jid, от которых можно получать сообщения этому боту
+listen_to=["st_request_wontfix@ej.sharix-app.org"]
+
+#тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
+proceed_to=["numbers"]
+
+#максимальное значение попыток обработать заказ
+idle_value=10
+
+# обработчик входящих сообщений
+# def message_handler(conn, mess):
+#     text = mess.getBody()#текст сообщения боту
+#     user = mess.getFrom()#отправитель сообщения
+#     if (str(user).split("/")[0]) in listen_to:
+#         # print (str(user).split("/")[0])
+#         if text is not None:
+#             orderObj = jsreq.jsonToOrder(text)
+#             tasklist.append(orderObj)
+#             bot.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n")
+
+def status_changer_wait(period,localtask):
+    bot.bot_log(botname+" "+str(datetime.now())+" "+"Тикет ожидает\n")
+    time.sleep(period)
+
+    bot.proceed_status(proceed_to[0],localtask)
+    bot.bot_log(botname+" "+str(datetime.now())+" "+"Тикет подождал и возвращен в очередь\n")
+
+def status_changer_process(ticket):
+    bot.bot_log(botname+" "+str(datetime.now())+" "+"Тикет в обработчике\n")
+    tickets_new=jsreq.requestGetTicket_user(token, config.API_URL+f"tickets/api/ticket_list/{ticket.id}")
+    # if ticket.id == 2103:
+    #     for ticket_new in tickets_new:
+    #         metaservice_admin(ticket_new,ticket.group)
+    if ticket.id == 2101:
+        for ticket_new in tickets_new:
+            company_status(ticket_new)
+    elif ticket.id == 2102:
+        for ticket_new in tickets_new:
+            company_status(ticket_new,ticket.group)
+    elif ticket.id =='':
+        print('should be soon')#дополнить по всем айди тикетов
+    # if ticket_new != []:
+    #     print(ticket_new)
+    #api/v1/platform/sharix-users/1/
+    
+    # bot.proceed_status(proceed_to[1], localtask)
+    # bot.bot_log(botname + " " + str(datetime.now()) + " " + "Тикет успешно обработан и отправлен на pending\n")
+
+
+def company_status(ticket_new):
+    if ticket_new.status == 141:#нужны доп проверки
+        answer=jsreq.change_status_company(token, config.API_URL+f"dbsynce/api/client/{ticket_new.created_by}/")
+        if answer!=200:
+            print(f'Ошибка{answer}')
+    else:   
+        print('Статус не ACCESS')
+
+# def company_status(ticket_new):
+#     if ticket_new.status == 141:#нужны доп проверки
+#         answer=jsreq.change_status_company(token, config.API_URL+f"dbsynce/api/client/{ticket_new.created_by}/",ticket_new.created_by)
+#         if answer!=200:
+#             print(f'Ошибка{answer}')
+#     else:   
+#         print('Статус не ACCESS')
+
+
+def metaservice_admin(ticket_new,group):
+    if ticket_new.status == 141:#нужны доп проверки
+        answer=jsreq.change_groups(token, config.API_URL+f"api/v1/platform/sharix-users/{ticket_new.created_by}/",group)
+        if answer!=200:
+            print(f'Ошибка{answer}')
+    else:   
+        print('Статус не ACCESS')
+
+
+def status_changer():
+    while True:
+        ticketlist=jsreq.requestGetList(token, config.API_URL+"tickets/api/ticket_list/")
+        for ticket in ticketlist:
+            bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Тикет в очереди на обработке\n")
+            t1 = threading.Thread(target=status_changer_process, args=(ticket,))
+            t1.start()
+            t1.join()  # Ожидаем завершения обработки тикета
+        time.sleep(300)  # Обновляем ticketlist каждые 5 минут
+
+
+#Авторизация и запуск бота
+
+#пустой список
+ticketlist = []
+
+token = jsreq.requestGetToken(config.API_URL+"api/v1/auth/token/login/")
+# ticketlist=jsreq.requestGetList(token, config.API_URL+"/dbsynce/api/orders/") ###Должна быть проверка между двумя
+
+# # print (len(tasklist))
+
+bot = JabberBot(JID, PASSWORD, PORT)
+
+
+
+bot.start(status_changer)
+