async def canteen_summ(msg, class_id, food): paid = 0 free = 0 price = food[1] await write_date_in_db(food, class_id) for people_id, choice in canteen_data[class_id]['who'].items(): if choice == '+': cur.execute( '''UPDATE students SET canteen = canteen + ? WHERE user = ?''', [price, people_id]) paid += 1 elif choice == '-': free += 1 await write_choice_in_db(people_id, choice) for people_id in canteen_data[class_id]['who'].keys(): await bot.send_message(chat_id=people_id, text='⬇️Получилось⬇️' '\n-----------------------------' f'\n💵Платно: {paid}' f'\n💸Бесплатно: {free}') class_id = await student_class_id(msg) for id in await stay_people_id(class_id): await write_choice_in_db(id, '-') con.commit() try: del canteen_data[class_id] print('блюдо удалено') except KeyError: pass
def write(self): """Заносим выбранную пользователем дату в переменную data, и записываем дату и название заметки в главное окно""" data = self.calendarWidget.selectedDate() day = data.day() month = data.month() year = data.year() data = datetime(year=year, month=month, day=day) text = self.NoteText.text().strip() # Добавляем эту заметку в базу данных notes try: cur.execute("INSERT INTO notes VALUES(NULL, ?, ?, ?, ?)", ( data.strftime('%Y'), data.strftime('%m'), data.strftime('%d'), text, )).fetchall() con.commit() # Добавляем заметку в главное окно self.mainWindow.listWidget.addItem( data.strftime('%d.%m.%Y') + ' - ' + text + '\n') self.close() except Exception: create_message_window( self, 'Заметка под таким названием уже существует') self.close()
async def name(msg: Message, state: FSMContext): text = msg.text data = await state.get_data() user = await correct_user(text, msg) if not user: print( f'{msg.from_user.full_name} не смог зарегестрировать директора: не корректные данные ' ) return try: cur.execute('''INSERT INTO directors VALUES (NULL, NULL, ?)''', [user]) except Exception as e: await msg.answer(text='Такой директор уже существует') print( f'{msg.from_user.full_name} не смог зарегестрировать пользователя' f'\nОшибка: {e}') await state.finish() return cur.execute( '''UPDATE users set role = ?, school = ? WHERE user_name = ?''', [director_role, data.get('school_id'), text[1:]]) con.commit() director_id_list.append(user) print( f'{msg.from_user.full_name} зарегестрировал директора с user_name: {text}' ) await msg.answer('Пользователь добавлен', reply_markup=admin_panel) await bot.send_message(chat_id=user, text='Напишите или нажмите \nна команду: /start') await state.finish()
async def register(msg: Message, state: FSMContext): text = msg.text school_id = await check_school_id(msg.from_user.id) user = await correct_user(text, msg) if not user: print(f'{msg.from_user.full_name} не смог зарегестрировать ученика') return class_id = cur.execute('''SELECT id FROM classes WHERE bos = ?''', [msg.from_user.id]).fetchone()[0] try: cur.execute('''INSERT INTO students VALUES(NULL, ?, ?, 0)''', [class_id, user]) cur.execute( '''UPDATE users set role = ?, school = ? WHERE user_id = ?''', [student_role, school_id, user]) except Exception as e: await msg.answer(text='Такой ученик уже существует') print(f'{msg.from_user.full_name} не смог зарегестрировать ученика' f'\nОшибка: {e}') await state.finish() return con.commit() student_id_list.append(user) print(f'{msg.from_user.full_name} добавил ученика с user_name: {text}') await msg.answer('Ученик добавлен', reply_markup=teacher_panel(True)) await bot.send_message(chat_id=user, text='Напишите или нажмите \nна команду: /start') await state.finish()
async def register_teacher(text, msg, state): school_id = cur.execute('''SELECT school FROM users WHERE user_id = ?''', [msg.from_user.id]).fetchone()[0] user = await correct_user(text, msg) if not user: await state.finish() print( f'{msg.from_user.full_name} не смог зарегестрировать учителя: не корректные данные' ) return try: cur.execute('''INSERT INTO teachers VALUES(NULL, ?)''', [user]) cur.execute( '''UPDATE users set role = ?, school = ? WHERE user_id = ?''', [teacher_role, school_id, user]) except Exception as e: await msg.answer(text='Такой учитель уже существует') print(f'{msg.from_user.full_name} не смог зарегестрировать учителся' f'\nОшибка: {e}') await state.finish() return con.commit() teacher_id_list.append(user) print( f'{msg.from_user.full_name} зарегестрировал учителя с user_name: {text}' ) await msg.answer('♻️Учитель добавлен♻️') teacher_id_list.append(user) await bot.send_message(chat_id=user, text='Напишите или нажмите \nна команду: /start') await state.finish()
async def delete_school(msg: Message, state: FSMContext): data = await state.get_data() cur.execute('''DELETE FROM schools WHERE id = ?''', [data.get('school_id')]) await msg.answer(text='Школа удалена', reply_markup=admin_panel) con.commit() await state.finish() await msg.delete()
def load_data_in_list_widget(data, day_n): """Заносим данные в таблицу events""" for line in data: time = line[0].split(':') + line[1].split(':') name = line[2] event_text = line[-1].replace('\n\n', '\n') cur.execute('''INSERT INTO events VALUES(NULL, ?, ?, ?, ?, ?, ?, ?)''', (day_n, *time, name, event_text)) con.commit()
async def classroom_delete(class_name): students_id = cur.execute( '''SELECT user FROM students s LEFT JOIN classes c ON c.id = s.class WHERE c.name = ?''', [class_name]).fetchall() for student_id in students_id: await student_delete(student_id[0]) cur.execute('''DELETE FROM classes WHERE name = ?''', [class_name]) con.commit()
async def register_user(user_id, user_name, name, role): cur = con.cursor() try: cur.execute(f'''INSERT INTO users VALUES ({user_id}, '{user_name}', '{name}','{role}', NULL)''') print(f'Зарегестрировался: {name}' f'\nРоль: {role}') con.commit() except Exception as e: print('Ошибка при регистрации' f'\nОшибка: {e}')
def clear_event(self): """Удаляет выбранный ивент""" try: start, end = get_start_and_end(self.EventView.currentItem().text()) except AttributeError: create_message_window(self, 'Событие не выбрано') return cur.execute('''DELETE FROM events WHERE start_hour = ? and start_minute = ? and end_hour = ? and end_minute = ? and day = ?''', (*start, *end, self.day_n)) con.commit() self.EventView.takeItem(self.EventView.currentRow()) self.event_description.setText('')
async def write(msg: Message): user_id = msg.from_user.id print( f'{msg.from_user.full_name} роль: ученик, id: {user_id} зашел записаться' ) class_id = await student_class_id(msg) food = await take_food(msg, class_id) if not food or food == 'write': await msg.answer(text='Блюдо не добавлено') return await msg.answer(text=f'🥘Блюдо: {food[0]}' f'\n💶Цена: {food[1]}', reply_markup=food_write) con.commit()
async def delete_teacher_in_class(msg: Message, state: FSMContext): user_id = msg.from_user.id data = await state.get_data() class_name = data['class_name'] school_id = await check_school_id(user_id) user = cur.execute('''SELECT bos FROM classes WHERE name = ? and school = ?''', [class_name, school_id]).fetchone()[0] cur.execute('''UPDATE classes SET bos = NULL WHERE name = ? and school = ?''', [class_name, school_id]) print(f'{msg.from_user.full_name} убрал кл.рук. из {class_name} класса') con.commit() await msg.answer(text='♻️Кл.рук. убран♻️') await class_information(msg, school_id, class_name) del classroom_teacher_id_list[classroom_teacher_id_list.index(user)] await bot.send_message(chat_id=user, text='Напишите или нажмите \nна команду: /start')
async def register_canteen_boss(call: CallbackQuery): await call.answer(cache_time=60) print(call.data) student_id = call.data.split('_')[3] user_id = call.from_user.id cur.execute('''UPDATE classes set canteen = ? WHERE bos = ?''', [student_id, user_id]) try: await call.message.delete() except Exception as e: print(f'{call.from_user.full_name} не смог зарегестрировать главного по столовой' f'\nОшибка: {e}') print(f'{call.from_user.full_name} зарегестрировал главного по столовой в классе с user_id: {student_id} где кл.рук. с user_id: {user_id}') await call.message.answer(text='♻️Выполнено♻️') await bot.send_message(chat_id=student_id, text='Вы стали главным по столовой👨🍳') con.commit()
async def register(msg: Message, state: FSMContext): answer1 = msg.text try: cur.execute('''INSERT INTO schools VALUES (NULL, ?)''', [answer1]) except Exception as e: await msg.answer(text='Такая школа уже существует') print( f'{msg.from_user.full_name} не смог зарегестрировать пользователя: ошибка при сохранении в бд' f'\nОшибка: {e}') await state.finish() return con.commit() print( f'{msg.from_user.full_name} зарегестрировал школу с именем: {answer1}') await msg.answer('Школа добавлена' f'\nНазвание: {answer1}') await state.finish()
def create_event(self, start, end, name, event_text): """Создает ивент в EventView""" time = [start.hour, start.minute, end.hour, end.minute] t = [str(i).rjust(2, '0') for i in time] text = 'c {}:{} по {}:{} - {}'.format(*t, name) # проверка что введенный интервал времение не пересекается с временем других ивентов if self.is_normal_events(start, end): try: cur.execute('''INSERT INTO events VALUES(NULL, ?, ?, ?, ?, ?, ?, ?)''', (self.mainwindow.day_n, *time, name, event_text)) con.commit() except Exception as e: print(e) self.mainwindow.EventView.addItem(text) return True else: create_message_window(self, 'Введите другой инервал времни')
def clear_event(self): """При удалении какого либо элемента, мы делаем проверку на то, выбран ли элемент""" if self.listWidget.currentRow() == -1: # Если элемент не выбран: мы выводим окно с надписью: 'Не выбран элемент' create_message_window(self, 'Не выбран элемент') else: # Если же элемент для удаления выбран: text = self.listWidget.currentItem().text() data, name = text[:10], text[13:].strip() day, month, year = list(map(int, data.split('.'))) # Удаляем его из нашей базы данных arr = cur.execute("DELETE FROM notes WHERE (year LIKE ? AND month LIKE ?" " AND day LIKE ? AND name LIKE ?)", (int(year), int(month), int(day), name,)).fetchall() con.commit() # А также из списка заметок self.listWidget.takeItem(self.listWidget.currentRow())
async def register(msg: Message, state: FSMContext): class_name = msg.text if not await chek_correct_classroom_name(msg, class_name): return school = cur.execute('''SELECT school FROM users WHERE user_id = ?''', [msg.from_user.id]).fetchone()[0] try: cur.execute('''INSERT INTO classes VALUES (NULL, ?, NULL, ?, NULL)''', [class_name, school]) except Exception as e: await msg.answer(text='Такой класс уже существует') print(f'{msg.from_user.full_name} не смог создать класс' f'\nОшибка: {e}') await state.finish() return print(f'{msg.from_user.full_name} создал класс с названием: {class_name}') con.commit() await msg.answer('Класс добавлен' f'\nНазвание: {class_name}') await state.finish()
async def register_teacher_in_class_func(call: CallbackQuery, callback_data: dict, state: FSMContext): await call.answer(cache_time=60) data = await state.get_data() class_name = data['class_name'] teacher_id = int(callback_data.get('id')) teacher = cur.execute('''SELECT name FROM classes WHERE bos = ?''', [teacher_id]).fetchone() if teacher: print(f'{call.from_user.full_name} не смог добавить кл.рук.: Этот учитель является кл.рук. в {teacher[0]} классе') await call.message.delete() await call.message.answer(text=f'Этот учитель является кл.рук. в {teacher[0]} классе') return director_id = call.from_user.id school_id = await check_school_id(director_id) cur.execute('''UPDATE classes set bos = ? WHERE school = ? and name = ?''', [teacher_id, school_id, class_name]) con.commit() await call.message.delete() print(f'{call.from_user.full_name} добавил кл.рук с user_name: {teacher_id} в {class_name} класс') await class_information(call.message, school_id, class_name) await call.message.answer(text='♻️Кл.рук. добавлен♻️') await bot.send_message(chat_id=teacher_id, text='Напишите или нажмите \nна команду: /start') classroom_teacher_id_list.append(teacher_id)
async def canteen_zeroize_func(call: CallbackQuery, callback_data: dict): await call.answer(cache_time=60) await call.message.delete() choice = callback_data.get('choice') user_id = call.from_user.id if choice == 'zeroize': await call.message.answer(text='Подтвердите выбор', reply_markup=await confirm_choice_buttons('canteen')) print( f'{call.from_user.full_name} роль: ученик, id: {user_id} нажал обнулить суммы' ) elif choice == 'yes': cur.execute('''UPDATE students SET canteen = 0''') con.commit() print( f'{call.from_user.full_name} роль: ученик, id: {user_id} нажал обнулить суммы: подтвердил выбор' ) await call.message.answer(text='♻️Операция проведена♻️') elif choice == 'no': await call.message.answer(text='❌Операция отменена❌') print( f'{call.from_user.full_name} роль: ученик, id: {user_id} нажал обнулить суммы: отменил выбор' )
def clear_day(self): """Очищает график дня""" cur.execute('''DELETE FROM events WHERE day = ?''', (self.day_n,)) con.commit() self.event_description.setText('') self.EventView.clear()
async def student_delete(student_id): cur.execute('''DELETE FROM students WHERE user = ?''', [student_id]) con.commit() await reset_role(student_id)
async def reset_role(user_id): cur.execute('''UPDATE users SET role = ? WHERE user_id = ?''', [not_role, user_id]) con.commit()
def delete_all(self): """По нажатию на кнопку 'Очистить всё' мы опустошаем набор заметок, и удаляем все заметки из базы данных note""" self.listWidget.clear() cur.execute("DELETE FROM notes WHERE id > 0").fetchall() con.commit()