浏览代码

Добавленна функия автоматичесой отправки календаря по времени

Vildan 2 年之前
父节点
当前提交
913450e121
共有 4 个文件被更改,包括 113 次插入0 次删除
  1. 34 0
      Moodle/calendar.ics
  2. 41 0
      Moodle/make_calendar.py
  3. 21 0
      Moodle/scheduler.py
  4. 17 0
      Moodle/send_calendar.py

+ 34 - 0
Moodle/calendar.ics

@@ -0,0 +1,34 @@
+START:VCALENDAR
+BEGIN:VEVENT
+UID:43@moodle.tomtit-tomsk.ru
+SUMMARY:Шаймагсумов Вильдан Маратович
+DESCRIPTION:Шаймагсумов Вильдан Маратович\n123
+LOCATION:405
+DTSTART;TZID=US-Eastern:20221029T080000
+DTEND;TZID=US-Eastern:20221029T090000
+END:VEVENT
+BEGIN:VEVENT
+UID:45@moodle.tomtit-tomsk.ru
+SUMMARY:Шаймагсумов Вильдан Маратович
+DESCRIPTION:Шаймагсумов Вильдан Маратович\n2345
+LOCATION:405
+DTSTART;TZID=US-Eastern:20221029T130000
+DTEND;TZID=US-Eastern:20221029T153000
+END:VEVENT
+BEGIN:VEVENT
+UID:47@moodle.tomtit-tomsk.ru
+SUMMARY:Шаймагсумов Вильдан Маратович
+DESCRIPTION:Шаймагсумов Вильдан Маратович\n456
+LOCATION:405
+DTSTART;TZID=US-Eastern:20221030T080000
+DTEND;TZID=US-Eastern:20221030T090000
+END:VEVENT
+BEGIN:VEVENT
+UID:48@moodle.tomtit-tomsk.ru
+SUMMARY:Шаймагсумов Вильдан Маратович
+DESCRIPTION:Шаймагсумов Вильдан Маратович\n567
+LOCATION:405
+DTSTART;TZID=US-Eastern:20221024T080000
+DTEND;TZID=US-Eastern:20221024T090000
+END:VEVENT
+END:VCALENDAR

+ 41 - 0
Moodle/make_calendar.py

@@ -0,0 +1,41 @@
+from bot import database
+from bot.sql import sql_all_events
+
+
+file_name = "calendar.ics"
+
+
+async def make(file):
+    # # Собираем мероприятия с базы
+    db = database.Database()
+    data = db.sql_fetchall(sql_all_events())
+    event_list = []
+    for i in range(0, len(data)):
+        e_id = data[i]['id']
+        owner = data[i]['name']
+        description = data[i]['description']
+        date = data[i]['e_date']
+        start = data[i]['e_start']
+        end = data[i]['e_end']
+
+        start = start.replace(":", "") + "00"
+        end = end.replace(":", "") + "00"
+        n_start = f"{date.strftime('%Y%m%d')}T{start}"
+        n_end = f"{date.strftime('%Y%m%d')}T{end}"
+        event = {f"BEGIN:VEVENT\n"
+                f"UID:{e_id}@moodle.tomtit-tomsk.ru\n"
+                f"SUMMARY:{owner}\n"
+                f"DESCRIPTION:{owner}\\n{description}\n"
+                f"LOCATION:405\n"
+                f"DTSTART;TZID=US-Eastern:{n_start}\n"
+                f"DTEND;TZID=US-Eastern:{n_end}\n"
+                f"END:VEVENT\n"}
+        event_list.append(event)
+
+    with open(file, 'w',encoding="utf-8") as f:
+        f.write("START:VCALENDAR\n")
+        for elem in event_list:
+            f.write("".join(elem))
+        f.write("END:VCALENDAR")
+        f.close()
+    return True

+ 21 - 0
Moodle/scheduler.py

@@ -0,0 +1,21 @@
+import asyncio
+import aioschedule
+from Moodle import make_calendar, send_calendar
+
+file_name = "calendar.ics"
+
+
+async def updater():
+    if await make_calendar.make(file_name):
+        await send_calendar.send()
+
+
+async def scheduler():
+    aioschedule.every().minute.do(updater)
+    while True:
+        await aioschedule.run_pending()
+        await asyncio.sleep(1)
+
+
+async def on_start(_):
+    asyncio.create_task(scheduler())

+ 17 - 0
Moodle/send_calendar.py

@@ -0,0 +1,17 @@
+# TODO: Отправляем календарь на сервер
+#
+import paramiko
+import bot.config as cnf
+
+file = 'calendar.ics'
+
+
+async def send():
+    with paramiko.SSHClient() as ssh:
+        ssh.load_system_host_keys()
+        ssh.connect(hostname=cnf.SSH_HOST, username=cnf.SSH_USER, password=cnf.SSH_PASS)
+
+        sftp = ssh.open_sftp()
+
+        sftp.chdir('/var/www/vmshay')
+        sftp.put(file, file)