|
@@ -6,7 +6,7 @@ from BotClass import JabberBot
|
|
|
import json
|
|
|
#раскомментировать, когда перейдем на разные пароли
|
|
|
import hashlib
|
|
|
-from datetime import datetime
|
|
|
+from datetime import datetime, timedelta
|
|
|
|
|
|
import time
|
|
|
import threading
|
|
@@ -62,12 +62,103 @@ def open_student_handler_wait(period,localtask):
|
|
|
bot.proceed_status(proceed_to[0],localtask)
|
|
|
bot.bot_log(botname+" "+str(datetime.now())+" "+"Тикет подождал и возвращен в очередь\n")
|
|
|
|
|
|
-def oopen_student_handler_process(localtask):
|
|
|
+def open_student_handler_process(localtask):
|
|
|
bot.bot_log(botname + " " + str(datetime.now()) + " " + "Тикет в обработчике\n")
|
|
|
|
|
|
ticket = jsreq.jsonToTicket(localtask)
|
|
|
+
|
|
|
+ if ticket.status == "Accepted":
|
|
|
+ all_systems_registered = True
|
|
|
+
|
|
|
+ if all_systems_registered:
|
|
|
+ user = ticket.created_by
|
|
|
+ if register_user_in_group():
|
|
|
+ send_successful_registration_notification(ticket)
|
|
|
+ else:
|
|
|
+ all_systems_registered = False
|
|
|
+ continue
|
|
|
+
|
|
|
+ # Проверяем, прошла ли неделя с момента создания заявки
|
|
|
+ if datetime.now() - ticket.created_at >= timedelta(weeks=1):
|
|
|
+ # Если неделя прошла и не все галочки стоят, отправляем уведомление о частичной регистрации
|
|
|
+ if not all_systems_registered:
|
|
|
+ send_partial_registration_notification(ticket)
|
|
|
+ # Закрываем заявку
|
|
|
+ close_ticket(ticket)
|
|
|
+
|
|
|
+ # Если все галочки стоят, отправляем уведомление об успешной регистрации во всех системах
|
|
|
+ if all_systems_registered():
|
|
|
+ send_all_systems_success_notification(ticket)
|
|
|
+
|
|
|
+ elif ticket.status == "Declined":
|
|
|
+ # Отправляем уведомление о том, что заявка отклонена
|
|
|
+ send_declined_notification(ticket):
|
|
|
+ # Удаляем запись в таблице Practice
|
|
|
+ remove_from_practice(ticket):
|
|
|
+
|
|
|
+ # Заявка уходит в архив через неделю
|
|
|
+ if datetime.now() - ticket.created_at >= timedelta(weeks=1):
|
|
|
+ archive_ticket(ticket)
|
|
|
+
|
|
|
print(ticket)
|
|
|
|
|
|
+def register_user_in_group(user_id):
|
|
|
+ url = config.url+f"api/v1/platform/sharix-users/{user_id}/"
|
|
|
+
|
|
|
+ payload = {
|
|
|
+ "groups": [101]
|
|
|
+ }
|
|
|
+
|
|
|
+ headers = {
|
|
|
+ "Content-Type": "application/json",
|
|
|
+ }
|
|
|
+
|
|
|
+ try:
|
|
|
+ response = requests.put(url, data=json.dumps(payload), headers=headers)
|
|
|
+
|
|
|
+ if response.status_code == 200:
|
|
|
+ print("Группа успешно добавлена пользователю.")
|
|
|
+ return True
|
|
|
+ else:
|
|
|
+ print(f"Ошибка: {response.status_code} - {response.text}")
|
|
|
+ return False
|
|
|
+
|
|
|
+ except requests.exceptions.RequestException as e:
|
|
|
+ print(f"Ошибка запроса: {e}")
|
|
|
+ return False
|
|
|
+
|
|
|
+
|
|
|
+def send_all_systems_success_notification(ticket):
|
|
|
+
|
|
|
+def send_successful_registration_notification(ticket):
|
|
|
+
|
|
|
+def send_partial_registration_notification(ticket):
|
|
|
+
|
|
|
+def send_declined_notification(ticket):
|
|
|
+
|
|
|
+
|
|
|
+def close_ticket(ticket):
|
|
|
+
|
|
|
+def archive_ticket(ticket):
|
|
|
+
|
|
|
+def remove_from_practice(ticket):
|
|
|
+ url = config.url+f"/{ticket.id}/"
|
|
|
+
|
|
|
+ headers = {
|
|
|
+ "Content-Type": "application/json",
|
|
|
+ }
|
|
|
+
|
|
|
+ try:
|
|
|
+ response = requests.delete(url, headers=headers)
|
|
|
+
|
|
|
+ if response.status_code == 204:
|
|
|
+ print(f"Тикет с ID {ticket.id} успешно удалён.")
|
|
|
+ else:
|
|
|
+ print(f"Ошибка: {response.status_code} - {response.text}")
|
|
|
+
|
|
|
+ except requests.exceptions.RequestException as e:
|
|
|
+ print(f"Ошибка запроса: {e}")
|
|
|
+
|
|
|
|
|
|
def open_student_handler_assigned(localtask):
|
|
|
bot.proceed_status(proceed_to[1],localtask)
|