old_st_request_assigned.py 4.9 KB

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