|
@@ -4,14 +4,14 @@ import config
|
|
|
import logging
|
|
|
from core.JabberBot import JabberBot
|
|
|
from slixmpp.stanza import Message
|
|
|
-import jsonAndRequest as jsreq
|
|
|
from time import sleep
|
|
|
from core.lib import run_process
|
|
|
from classes.Ticket import Ticket
|
|
|
from typing import List
|
|
|
from concurrent.futures import ThreadPoolExecutor
|
|
|
from core.SystemdKiller import SystemdKiller
|
|
|
-from core.utils import get_init_data
|
|
|
+from core.requesters import TicketRequester
|
|
|
+from config import KEYS
|
|
|
|
|
|
botname = "open_access_request_pending"
|
|
|
operating_status = 320
|
|
@@ -35,8 +35,10 @@ proceed_to = [
|
|
|
]
|
|
|
""" Список jid, кому бот может отправлять сообщения в результате обработки заявки """
|
|
|
|
|
|
+ASSIGNET_TO_ATTEMPTS = 3
|
|
|
+""" Количество пользователей, которым будет отправлено сообщение """
|
|
|
INTERVAL_ATTEMPTS = 3
|
|
|
-""" Количество попыток отправки сообщения """
|
|
|
+""" Количество сообщений, которые будут отправлены пользователю """
|
|
|
# INTERVAL_TIME = 30 * 60 # 30 минут в секундах
|
|
|
INTERVAL_TIME = 5 # Для проверки
|
|
|
""" Интервал времени между попытками отправки сообщения """
|
|
@@ -46,6 +48,8 @@ TEMP_TICKETS: List[Ticket] = []
|
|
|
ID_TICKETS_FOR_REMOVE: List[int] = []
|
|
|
""" Список id тикетов для удаления """
|
|
|
|
|
|
+ticket_requester = TicketRequester(KEYS.OPEN_ACCESS_REQUEST_PENDING)
|
|
|
+
|
|
|
def message_handler(msg: Message):
|
|
|
"""Обработчик входящих сообщений"""
|
|
|
|
|
@@ -72,7 +76,7 @@ def start_handler():
|
|
|
|
|
|
logging.info(">>>>> %s |---| %s <<<<<", JID, PASSWORD)
|
|
|
|
|
|
- tickets: List[Ticket] = get_init_data(operating_status)
|
|
|
+ tickets: List[Ticket] = ticket_requester.all({"status": 320})
|
|
|
|
|
|
with ThreadPoolExecutor() as executor:
|
|
|
killer = SystemdKiller()
|
|
@@ -92,7 +96,7 @@ def start_handler():
|
|
|
# Фильтрация тикетов
|
|
|
tickets = [t for t in processed if t is not None]
|
|
|
|
|
|
- logging.debug(tickets)
|
|
|
+ logging.debug('Кол-во тикетов:' + str(len(tickets)))
|
|
|
logging.debug("Sleep")
|
|
|
killer.exit_event.wait(timeout=INTERVAL_TIME)
|
|
|
|
|
@@ -102,7 +106,10 @@ def start_handler():
|
|
|
def interval_attempts_unlimited(ticket: Ticket) -> None:
|
|
|
logging.debug(f"Лимит попыток обработки тикета {ticket.id} исчерпан")
|
|
|
|
|
|
- # db.changestatus
|
|
|
+
|
|
|
+ response = ticket_requester.patch(ticket, {"status": 359})
|
|
|
+
|
|
|
+ # TODO: implement send ticket changed to next handler
|
|
|
# bot.send_message(JID, f"Сообщение отправлено {JID}: {datetime.now()}")
|
|
|
# bot message:
|
|
|
# {
|
|
@@ -113,12 +120,12 @@ def interval_attempts_unlimited(ticket: Ticket) -> None:
|
|
|
|
|
|
|
|
|
def processing(ticket: Ticket) -> None:
|
|
|
- logging.debug(f"Начало обработки тикета {ticket.id}")
|
|
|
+ logging.debug(f"Начало обработки тикета {ticket.id}. Лимит: {ticket.interval_attempts}")
|
|
|
|
|
|
message = f"Тикет {ticket.id} ожидает решения"
|
|
|
|
|
|
- send_notification_to_admins(ticket, message)
|
|
|
- bot.send_message(ticket.assigned_to, message)
|
|
|
+ # send_notification_to_admins(ticket, message)
|
|
|
+ # bot.send_message(ticket.assigned_to, message)
|
|
|
|
|
|
logging.debug(f"Конец обработки тикета {ticket.id}")
|
|
|
|
|
@@ -129,6 +136,19 @@ def send_notification_to_admins(ticket: Ticket, admins: List[str], message: str)
|
|
|
bot.send_message(admin, message)
|
|
|
logging.info(f"Уведомление отправлено администраторам: {ticket.id}")
|
|
|
|
|
|
+
|
|
|
+def set_assigned_to(ticket: Ticket) -> Ticket:
|
|
|
+ """Проверка, назначен ли тикет на пользователя"""
|
|
|
+ if ticket.assigned_to is None:
|
|
|
+ # TODO: add function how select user from db
|
|
|
+ # ticket.assigned_to = "username"
|
|
|
+
|
|
|
+ # assigned_to = ticket_requester.patch(ticket, {"assigned_to": "open_access_request_pending@ej.sharix-app.org"})
|
|
|
+ # ticket.assigned_to = assigned_to
|
|
|
+ None
|
|
|
+ return ticket
|
|
|
+
|
|
|
+
|
|
|
# def get_token():
|
|
|
# return jsreq.requestGetToken(botname, PASSWORD, config.API_URL + "/auth/token/login/")
|
|
|
|