Exemplo n.º 1
0
def get_group_headman_assign(message):
    group = message.text
    group_id = Group.get_id_by_group(group)

    if group_id is False:
        bot.clear_step_handler_by_chat_id(message.from_user.id)
        bot.send_message(
            chat_id=message.from_user.id,
            text='Вибери пункт меню:',
            reply_markup=make_role_replykeyboard(studdekan_buttons))
    else:
        if not Headman.get_headman_by_group(group_id):
            student_keyboard = make_keyboard(
                keyboard_type='student',
                elem_list=Student.get_students_by_group(group_id),
                marker=f'headman_{Group.get_group_by_id(group_id)}_')

            bot.send_message(chat_id=message.from_user.id,
                             text='Вибери старосту:',
                             reply_markup=student_keyboard)
        else:
            keyboard = InlineKeyboardMarkup()
            keyboard.add(
                InlineKeyboardButton(
                    text=
                    f'Змінити старосту {emojize(":repeat:", use_aliases=True)}',
                    callback_data='change_headman'))

            bot.send_message(
                chat_id=message.from_user.id,
                text='Цій групі вже призначено старосту.\n'
                'Якщо потрібно його змінити, скористайся командою '
                f'{emojize(":point_down:", use_aliases=True)}',
                reply_markup=keyboard)
Exemplo n.º 2
0
def get_group_for_grade(call):
    subject_id = call.data.split('_')[1]
    grade_type_id = call.data.split('_')[2]
    group_id = call.data.split('_')[3]

    students = (student for student in Student.get_students_by_group(group_id))

    ask_grade(call, students, grade_type_id, subject_id, group_id)
Exemplo n.º 3
0
def send_message_or_file(message, subject_id):
    if message.text == '/cancel':
        bot.send_message(chat_id=message.from_user.id,
                         text=f'Дія була скасована {emojize(":white_check_mark:", use_aliases=True)}')
        bot.clear_step_handler_by_chat_id(chat_id=message.from_user.id)
    elif message.content_type not in ['text', 'photo', 'document']:
        bot.send_message(chat_id=message.from_user.id,
                         text=f'Файл/повідомлення не відправлено {emojize(":x:", use_aliases=True)}\n'
                              'Некорректний формат\n\n'
                              'Відправте файл/повідомлення боту і він його передасть всім студентам цього предмету\n\n'
                              'Щоб скасувати дію можна скористатися командою /cancel')

        bot.register_next_step_handler(message, send_message_or_file, subject_id)
    else:
        subject = Subject.get_subject_fullname_by_id(subject_id)
        students = []

        for group in Group.get_groups():
            for student in Student.get_students_by_group(group.id):
                students.append(student)

        caption = '' if message.caption is None else message.caption

        if message.content_type == 'text':
            for student in students:
                try:
                    bot.send_message(chat_id=student.id,
                                     text=f'Повідомлення по предмету {subject}:\n\n{message.text}')
                except ApiException:
                    continue
            bot.send_message(chat_id=message.from_user.id,
                             text=f'Повідомлення було відправлено '
                                  f'{emojize(":white_check_mark:", use_aliases=True)}')
        elif message.content_type == 'document':
            for student in students:
                try:
                    bot.send_document(chat_id=student.id,
                                      data=message.document.file_id,
                                      caption=f'Методичний матеріал з предмету {subject} '
                                              f'\n\n{caption}')
                except ApiException:
                    continue
            bot.send_message(chat_id=message.from_user.id,
                             text=f'Файл було відправлено {emojize(":white_check_mark:", use_aliases=True)}')
            save_file_to_local(message.document.file_id, subject)
        elif message.content_type == 'photo':
            for student in students:
                try:
                    bot.send_photo(chat_id=student.id,
                                   photo=message.photo[-1].file_id,
                                   caption=f'Методичний матеріал з предмету {subject} '
                                           f'\n\n{caption}')

                except ApiException:
                    continue
            bot.send_message(chat_id=message.from_user.id,
                             text=f'Фото було відправлено {emojize(":white_check_mark:", use_aliases=True)}')
            save_file_to_local(message.photo[-1].file_id, subject)
Exemplo n.º 4
0
def get_group_for_profcomdebt(message):
    group = message.text
    group_id = Group.get_id_by_group(group)

    if group_id is False:
        bot.clear_step_handler_by_chat_id(message.from_user.id)
        bot.send_message(chat_id=message.from_user.id,
                         text='Вибери пункт меню:',
                         reply_markup=make_role_replykeyboard(studdekan_buttons))
    else:
        student_keyboard = make_keyboard(keyboard_type='student',
                                         elem_list=[student for student in Student.get_students_by_group(group_id)],
                                         marker=f'debtor_{Group.get_group_by_id(group_id)}_')

        bot.send_message(chat_id=message.from_user.id,
                         text='Вибери студента:', reply_markup=student_keyboard)
Exemplo n.º 5
0
    def add_grades():
        if len(session.query(Grade).all()) > 0:
            return
        else:
            random.seed(5)

            for group in Group.get_groups()[:4]:
                for student in Student.get_students_by_group(group.id):
                    grade = random.randint(75, 100)
                    session.add(Grade(grade=grade,
                                      ects=Grade.convert_to_ects(grade),
                                      date=date.today().strftime("%m/%d/%Y"),
                                      gradetype_id=5,
                                      student_id=student.id,
                                      subject_id=1))
                    grade = random.randint(75, 100)
                    session.add(Grade(grade=grade,
                                      ects=Grade.convert_to_ects(grade),
                                      date=date.today().strftime("%m/%d/%Y"),
                                      gradetype_id=4,
                                      student_id=student.id,
                                      subject_id=2))
                    grade = random.randint(75, 100)
                    session.add(Grade(grade=grade,
                                      ects=Grade.convert_to_ects(grade),
                                      date=date.today().strftime("%m/%d/%Y"),
                                      gradetype_id=3,
                                      student_id=student.id,
                                      subject_id=3))
                    grade = random.randint(75, 100)
                    session.add(Grade(grade=grade,
                                      ects=Grade.convert_to_ects(grade),
                                      date=date.today().strftime("%m/%d/%Y"),
                                      gradetype_id=5,
                                      student_id=student.id,
                                      subject_id=4))
                    grade = random.randint(75, 100)
                    session.add(Grade(grade=grade,
                                      ects=Grade.convert_to_ects(grade),
                                      date=date.today().strftime("%m/%d/%Y"),
                                      gradetype_id=5,
                                      student_id=student.id,
                                      subject_id=5))
                    session.commit()

            print("grades added")
Exemplo n.º 6
0
def get_group_headman_change(message):
    group = message.text
    group_id = Group.get_id_by_group(group)

    if group_id is False:
        bot.clear_step_handler_by_chat_id(message.from_user.id)
        bot.send_message(
            chat_id=message.from_user.id,
            text='Вибери пункт меню:',
            reply_markup=make_role_replykeyboard(studdekan_buttons))
    else:
        student_keyboard = make_keyboard(
            keyboard_type='student',
            elem_list=Student.get_students_by_group(group_id),
            marker=f'chheadman_{Group.get_group_by_id(group_id)}_')

        bot.send_message(chat_id=message.from_user.id,
                         text='Вибери нового старосту:',
                         reply_markup=student_keyboard)