Exemple #1
0
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
Exemple #2
0
 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()
Exemple #5
0
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()
Exemple #7
0
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()
Exemple #8
0
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()
Exemple #9
0
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}')
Exemple #10
0
 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('')
Exemple #11
0
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')
Exemple #13
0
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()
Exemple #15
0
 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)
Exemple #19
0
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} нажал обнулить суммы: отменил выбор'
        )
Exemple #20
0
 def clear_day(self):
     """Очищает график дня"""
     cur.execute('''DELETE FROM events WHERE day = ?''', (self.day_n,))
     con.commit()
     self.event_description.setText('')
     self.EventView.clear()
Exemple #21
0
async def student_delete(student_id):
    cur.execute('''DELETE FROM students WHERE user = ?''', [student_id])
    con.commit()
    await reset_role(student_id)
Exemple #22
0
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()