浏览代码

Исправлены функции управления
Добавлена визуализация

Vildan 2 年之前
父节点
当前提交
e57371d19a
共有 6 个文件被更改,包括 43 次插入29 次删除
  1. 23 6
      bot/functions.py
  2. 1 1
      bot/keyboards.py
  3. 7 13
      handlers/admin/manage_events.py
  4. 6 4
      handlers/user/make_events.py
  5. 5 5
      handlers/user/show_events.py
  6. 1 0
      requirements.txt

+ 23 - 6
bot/functions.py

@@ -57,12 +57,30 @@ def beauty_reg_request(data):
     return result
 
 
+def beauty_booked_time(data):
+    result = ""
+    for elem in data:
+        result += f"{elem['e_start']} - {elem['e_end']}\n"
+    return result
+
+
+def beauty_event_request(data):
+    result = (f"ID: {data['ID']}\n"
+              f"Инициатор: {data['Инициатор']}\n"
+              f"Телефон: {data['Номер телефона']}\n"
+              f"Описание: {data['Описание']}\n"
+              f"Начало в: {data['Начало в']}\n"
+              f"Конец в: {data['Конец в']}")
+    return result
+
+
 def beauty_all_events(data):
-    result = (f"******************\n"
-              f"Инициатор:\n{data['Инициатор']}\n\n"
-              f"Событие:\n{data['Описание']}\n\n"
-              f"Дата:\n{data['Дата']}\n\n"
-              )
+    result = ""
+    for elem in data:
+        result += f"<b>Инициатор:</b> {elem['name']}\n" \
+                  f"<b>Событие:</b> {elem['description']}\n" \
+                  f"<b>Дата:</b> {elem['e_date']}\n" \
+                  f"<b>Время:</b> {elem['e_start']} - {elem['e_end']}\n\n"
     return result
 
 
@@ -154,4 +172,3 @@ def parse_events(data):
         events_list.append(event)
     return events_list
 
-# [{'name': 'Шаймагсумов Вильдан Маратович', 'phone': '79539299323', 'description': 'asdasdasd', 'e_start': '13:00', 'e_end': '15:30'},

+ 1 - 1
bot/keyboards.py

@@ -90,5 +90,5 @@ def make_calendar():
     for i in range(1, days_in_month+1, 1):
         date_i = InlineKeyboardButton(text=str(i), callback_data=f"date_2022-{str(month)}-{str(i)}")
         keyboard.insert(date_i)
-    keyboard.add(button_today, button_tomorrow, button_after_tomorrow)
+    # keyboard.add(button_today, button_tomorrow, button_after_tomorrow)
     return keyboard

+ 7 - 13
handlers/admin/manage_events.py

@@ -1,7 +1,6 @@
-# TODO: Добавить управление мероприятиями
 from aiogram import types, Dispatcher
 from bot import database
-from bot.functions import parse_events
+from bot.functions import parse_events, beauty_event_request
 from bot.keyboards import register_kb,manage_kb
 from bot import sql
 
@@ -16,7 +15,7 @@ async def list_events(message: types.Message):
     if len(events) == 0:
         await message.answer("Заявки отсутствуют")
     else:
-        await message.answer(parse_events(events)[0], reply_markup=manage_kb(f"e_accept:{events[0]['id']}", f"e_deny:{events[0]['id']}", f"e_next:0",
+        await message.answer((beauty_event_request(parse_events(events)[0])), reply_markup=manage_kb(f"e_accept:{events[0]['id']}", f"e_deny:{events[0]['id']}", f"e_next:0",
                                                     f"e_prev:0", f"1/{len(events)}"))
 
 
@@ -29,10 +28,9 @@ async def next_event_page(call: types.CallbackQuery):
         await call.message.answer('Заявки отсутствуют')
     if index == len(events):
         pass
-        print("next")
     else:
         event_id = events[index]['id']
-        await call.message.edit_text(parse_events(events)[index],
+        await call.message.edit_text(beauty_event_request(parse_events(events)[index]),
                                      reply_markup=manage_kb(f"e_accept:{event_id}", f"e_deny:{event_id}", f"e_next:{index}",
                                                             f"e_prev:{index}", f"{index + 1}/{len(events)}"))
 
@@ -46,12 +44,10 @@ async def prev_event_page(call: types.CallbackQuery):
     if not events:
         await call.message.answer('Заявки отсутствуют')
     if index < 0:
-        print(events)
-        print("prev")
         pass
     else:
         event_id = events[index]['id']
-        await call.message.edit_text(parse_events(events)[index],
+        await call.message.edit_text(beauty_event_request(parse_events(events)[index]),
                                      reply_markup=manage_kb(f"e_accept:{event_id}", f"e_deny:{event_id}", f"e_next:{index}",
                                                             f"e_prev:{index}", f"{index + 1 }/{len(events)}"))
 
@@ -69,23 +65,21 @@ async def accept_event(call: types.CallbackQuery):
     elif index == 0:
         event_id = events[index]['id']
         db.sql_query_send(f"UPDATE booking.events_table SET approved='1' WHERE id={event_id}")
-        await call.message.edit_text(parse_events(events)[index+1],
+        await call.message.edit_text(beauty_event_request(parse_events(events)[index+1]),
                                      reply_markup=manage_kb(f"e_accept:{event_id}", f"e_deny:{event_id}", f"e_next:{index + 1}",
                                                             f"e_prev:{index + 1}", f"{index + 1}/{len(events) - 1}"))
     elif index == len(events)-1:
         event_id = events[index]['id']
         db.sql_query_send(f"UPDATE booking.events_table SET approved='1' WHERE id={event_id}")
-        await call.message.edit_text(parse_events(events)[index-1],
+        await call.message.edit_text(beauty_event_request(parse_events(events)[index-1]),
                                      reply_markup=manage_kb(f"e_accept:{event_id}", f"e_deny:{event_id}", f"e_next:{index - 1}",
                                                             f"e_prev:{index - 1}", f"{index}/{len(events) - 1}"))
-        print("2 " +index)
     else:
         event_id = events[index]['id']
         db.sql_query_send(f"UPDATE booking.events_table SET approved='1' WHERE id={event_id}")
-        await call.message.edit_text(parse_events(events)[index+1],
+        await call.message.edit_text(beauty_event_request(parse_events(events)[index+1]),
                                      reply_markup=manage_kb(f"e_accept:{event_id}", f"e_deny:{event_id}", f"e_next:{index}",
                                                             f"e_prev:{index}", f"{index}/{len(events) - 1}"))
-        print(event_id, index)
 
 
 def register_handlers(dp: Dispatcher):

+ 6 - 4
handlers/user/make_events.py

@@ -1,7 +1,7 @@
 from aiogram import types, Dispatcher
 from bot import database, sql
 from bot.keyboards import register_kb, make_calendar, events_kb, cancel_booking, main_kb
-from bot.functions import make_date, time_validator, normalize_time, to_quotes, check_overlap
+from bot.functions import make_date, time_validator, normalize_time, to_quotes, check_overlap, beauty_booked_time
 from handlers.user.states import BookingState
 from aiogram.dispatcher.storage import FSMContext
 from bot import messages
@@ -28,7 +28,7 @@ async def make_event(message: types.message):
 async def select_date(call: types.CallbackQuery, state: FSMContext):
     db = database.Database()
     date = call.data.split("_")[1]
-    booked = db.sql_fetchall(sql.sql_booked(date))
+    booked = db.sql_fetchall(sql.sql_booked_time(date))
     await BookingState.start.set()
     await state.update_data(date=to_quotes(date))
     await state.update_data(owner=call.from_user.id)
@@ -36,8 +36,9 @@ async def select_date(call: types.CallbackQuery, state: FSMContext):
         await call.message.edit_text(f"Вы выбрали дату: {date}\n"
                                      f"На этот день мероприятий не заплпнированно", reply_markup=events_kb())
     else:
-        await call.message.edit_text(f"Вы выбрали дату: {date}\n"
-                                     f"{sorted(booked, key=lambda t: t['e_start'], reverse=True)}",
+        await call.message.edit_text(f"Вы выбрали дату: {date}\n\n"
+                                     f"Занятое время\n\n"
+                                     f"{beauty_booked_time(sorted(booked, key=lambda t: t['e_start'], reverse=False))}",
                                      reply_markup=events_kb())
 
 
@@ -89,6 +90,7 @@ async def send_event(message: types.Message, state: FSMContext):
         data = await state.get_data()
         await message.answer("Заявка принята", reply_markup=main_kb)
         await state.finish()
+        print(data)
         db.sql_query_send(sql.sql_send_event(data))
 
 

+ 5 - 5
handlers/user/show_events.py

@@ -1,7 +1,7 @@
 from bot import database
 from aiogram import types, Dispatcher
 from bot.keyboards import register_kb, events_range_kb
-from bot.functions import date_range
+from bot.functions import date_range, beauty_all_events
 from bot import sql
 
 
@@ -17,7 +17,7 @@ async def my_events(message: types.Message):
         if len(data) == 0:
             await message.answer("Вы не планировали мероприятия")
         else:
-            await message.answer(data)
+            await message.answer(beauty_all_events(sorted(data, key=lambda d: d['e_date'])))
 
 
 async def all_events(message: types.Message):
@@ -41,7 +41,7 @@ async def select_range(call: types.CallbackQuery):
         if len(data) == 0:
             await call.message.answer("Сегодня мероприятий нет")
         else:
-            await call.message.answer(data)
+            await call.message.answer(beauty_all_events(sorted(data, key=lambda d: d['e_date'])))
 
     if call.data == "week":
         db = database.Database()
@@ -51,7 +51,7 @@ async def select_range(call: types.CallbackQuery):
         if len(data) == 0:
             await call.message.answer("На этой неделе мероприятий нет")
         else:
-            await call.message.answer(sorted(data, key=lambda d: d['e_date']))
+            await call.message.answer(beauty_all_events(sorted(data, key=lambda d: d['e_date'])))
 
     if call.data == "month":
         db = database.Database()
@@ -59,7 +59,7 @@ async def select_range(call: types.CallbackQuery):
         time = "'" + time[0] + "' " + time[1] + " '" + time[2] + "'"
         data = db.sql_fetchall(sql=sql.get_range_events(time))
 
-        await call.message.answer(sorted(data, key=lambda d: d['e_date']))
+        await call.message.answer(beauty_all_events(sorted(data, key=lambda d: d['e_date'])))
 
 
 def register(dp: Dispatcher):

+ 1 - 0
requirements.txt

@@ -1,3 +1,4 @@
+intervaltree
 mysql
 dotenv
 aiogram==2.22.2