Browse Source

add interval processing

blezz-tech 1 month ago
parent
commit
8885c960b8
2 changed files with 72 additions and 3 deletions
  1. 67 3
      handlers/handlers/open_access_request_pending.py
  2. 5 0
      handlers/lib.py

+ 67 - 3
handlers/handlers/open_access_request_pending.py

@@ -5,6 +5,8 @@ import logging
 from EchoBot import JabberBot
 from slixmpp.stanza import Message
 import jsonAndRequest as jsreq
+from time import sleep
+from lib import filter_interval_tickets
 
 botname = "open_access_request_pending"
 operating_status = 320
@@ -32,7 +34,7 @@ INTERVAL_COUNT = 3
 # INTERVAL_TIME = 30 * 60  # 30 минут в секундах
 INTERVAL_TIME = 30 # Для проверки
 
-global tasklist
+global ticket_list
 
 def message_handler(msg: Message):
     """Обработчик входящих сообщений"""
@@ -50,13 +52,75 @@ def start_handler():
 
     logging.info(">>>>>  %s  |---| %s  <<<<<", JID, PASSWORD)
 
-    logging.info("Сообщение отправлено")
+    global tickets
+    tickets = get_fake_data()
 
-    bot.send_message(JID, f"Сообщение отправлено {JID}: {datetime.now()}")
+    while(True):
+        if tickets == []:
+            sleep(INTERVAL_TIME)
+        else:
+            for ticket in tickets:
+                ticket['interval_count'] -= 1
+                if ticket <= 0:
+                    processing_interval_unlimited(ticket)
+                else:
+                    processing(ticket)
+            tickets = filter_interval_tickets(tickets)
+            sleep(INTERVAL_TIME)
 
 
 # START CUSTOM FUNCTIONS
 
+def processing_interval_unlimited(ticket):
+    logging.debug(f"Лимит попыток обработки тикета {ticket.id} исчерпан")
+    
+    # db.changestatus
+    # bot.send_message(JID, f"Сообщение отправлено {JID}: {datetime.now()}")
+    # bot message:
+    # {
+    #   "action": "add_ticket"
+    #   "ticket_id":      0
+    #   "ticket_list_id": 0
+    # }
+
+
+def processing(ticket):
+    logging.debug(f"Начало обработки тикета {ticket.id}")
+
+    # Do something
+
+    logging.debug(f"Конец обработки тикета {ticket.id}")
+
+
+def get_fake_data():
+    return [
+        {
+            "ticket_id": 0,
+            "ticket_list_id": 0,
+            "interval_count": INTERVAL_COUNT
+        },
+        {
+            "ticket_id": 1,
+            "ticket_list_id": 0,
+            "interval_count": INTERVAL_COUNT
+        },
+        {
+            "ticket_id": 2,
+            "ticket_list_id": 0,
+            "interval_count": INTERVAL_COUNT
+        },
+        {
+            "ticket_id": 3,
+            "ticket_list_id": 0,
+            "interval_count": INTERVAL_COUNT
+        },
+        {
+            "ticket_id": 4,
+            "ticket_list_id": 0,
+            "interval_count": INTERVAL_COUNT
+        },
+    ]
+
 # def get_token():
 #     return jsreq.requestGetToken(botname, PASSWORD, config.API_URL + "/auth/token/login/")
 

+ 5 - 0
handlers/lib.py

@@ -0,0 +1,5 @@
+
+def filter_interval_tickets(tickets):
+    """ Очистка тикетов, у которых закончились попытки """
+    return filter(lambda ticket: ticket['interval_count'] > 0, tickets)
+