st_request_assigned.py 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. import requests
  2. import xmpp
  3. from xmpp import cli
  4. import config
  5. from BotClass import JabberBot
  6. import json
  7. #раскомментировать, когда перейдем на разные пароли
  8. import hashlib
  9. from datetime import datetime
  10. import time
  11. import threading
  12. #test
  13. import jsonAndRequest as jsreq
  14. global tasklist
  15. botname="status_changer"
  16. JID=botname+"@"+config.JSERVER
  17. PORT=config.PORT
  18. PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
  19. #таким образом хранится список jid, от которых можно получать сообщения этому боту
  20. listen_to=["status_changer@ej.sharix-app.org"]
  21. #тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
  22. proceed_to=["numbers"]
  23. #максимальное значение попыток обработать заказ
  24. idle_value=10
  25. # обработчик входящих сообщений
  26. # def message_handler(conn, mess):
  27. # text = mess.getBody()#текст сообщения боту
  28. # user = mess.getFrom()#отправитель сообщения
  29. # if (str(user).split("/")[0]) in listen_to:
  30. # # print (str(user).split("/")[0])
  31. # if text is not None:
  32. # orderObj = jsreq.jsonToOrder(text)
  33. # tasklist.append(orderObj)
  34. # bot.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n")
  35. def status_changer_wait(period,localtask):
  36. bot.bot_log(botname+" "+str(datetime.now())+" "+"Тикет ожидает\n")
  37. time.sleep(period)
  38. bot.proceed_status(proceed_to[0],localtask)
  39. bot.bot_log(botname+" "+str(datetime.now())+" "+"Тикет подождал и возвращен в очередь\n")
  40. def status_changer_process(ticket):
  41. bot.bot_log(botname+" "+str(datetime.now())+" "+"Тикет в обработчике\n")
  42. tickets_new=jsreq.requestGetTicket_user(token, config.API_URL+f"tickets/api/ticket_list/{ticket.id}")
  43. # if ticket.id == 2103:
  44. # for ticket_new in tickets_new:
  45. # metaservice_admin(ticket_new,ticket.group)
  46. if ticket.id == 2101:
  47. for ticket_new in tickets_new:
  48. company_status(ticket_new)
  49. elif ticket.id == 2102:
  50. for ticket_new in tickets_new:
  51. company_status(ticket_new,ticket.group)
  52. elif ticket.id =='':
  53. print('should be soon')#дополнить по всем айди тикетов
  54. # if ticket_new != []:
  55. # print(ticket_new)
  56. #api/v1/platform/sharix-users/1/
  57. # bot.proceed_status(proceed_to[1], localtask)
  58. # bot.bot_log(botname + " " + str(datetime.now()) + " " + "Тикет успешно обработан и отправлен на pending\n")
  59. def company_status(ticket_new):
  60. if ticket_new.status == 141:#нужны доп проверки
  61. answer=jsreq.change_status_company(token, config.API_URL+f"dbsynce/api/client/{ticket_new.created_by}/")
  62. if answer!=200:
  63. print(f'Ошибка{answer}')
  64. else:
  65. print('Статус не ACCESS')
  66. # def company_status(ticket_new):
  67. # if ticket_new.status == 141:#нужны доп проверки
  68. # answer=jsreq.change_status_company(token, config.API_URL+f"dbsynce/api/client/{ticket_new.created_by}/",ticket_new.created_by)
  69. # if answer!=200:
  70. # print(f'Ошибка{answer}')
  71. # else:
  72. # print('Статус не ACCESS')
  73. def metaservice_admin(ticket_new,group):
  74. if ticket_new.status == 141:#нужны доп проверки
  75. answer=jsreq.change_groups(token, config.API_URL+f"api/v1/platform/sharix-users/{ticket_new.created_by}/",group)
  76. if answer!=200:
  77. print(f'Ошибка{answer}')
  78. else:
  79. print('Статус не ACCESS')
  80. def status_changer():
  81. while True:
  82. ticketlist=jsreq.requestGetList(token, config.API_URL+"tickets/api/ticket_list/")
  83. for ticket in ticketlist:
  84. bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Тикет в очереди на обработке\n")
  85. t1 = threading.Thread(target=status_changer_process, args=(ticket,))
  86. t1.start()
  87. t1.join() # Ожидаем завершения обработки тикета
  88. time.sleep(300) # Обновляем ticketlist каждые 5 минут
  89. #Авторизация и запуск бота
  90. #пустой список
  91. ticketlist = []
  92. token = jsreq.requestGetToken(config.API_URL+"api/v1/auth/token/login/")
  93. # ticketlist=jsreq.requestGetList(token, config.API_URL+"/dbsynce/api/orders/") ###Должна быть проверка между двумя
  94. # # print (len(tasklist))
  95. bot = JabberBot(JID, PASSWORD, PORT)
  96. bot.start(status_changer)