Beispiel #1
0
def admin():
    if not auth.is_logged_in(session):
        return redirect_to_login(STRINGS['SIGNED_OUT'])
    if not auth.is_admin(session):
        return redirect_to_home(STRINGS['NOT_AUTHORIZED'])
    return render_template("admin.html",
                           session=session,
                           users=user.get_all_users(),
                           attractions=attraction.get_all(),
                           res_info=attraction.requires_reservation_all())
    return render_template("admin.html",
                           session=session,
                           users=user.get_all_users(),
                           attractions=attraction.get_all())
Beispiel #2
0
async def stop():
    """
    Оповещяает всех пользователей об остановке квиза.
    """
    users = get_all_users()
    for user_id in users:
        await bot.send_message(user_id, 'Квиз деактивирован')
async def cmd_start(message: types.Message):
    """
    Обработчик кнопки старт. Определяет от кого пришло сообщение.

    Parameters
    ----------
    message : types.Message
        Текст сообщения
    """
    if message.from_user.id in admin_id:
        await message.answer('Хотите создать или активировать квиз?',
                             reply_markup=menu_keyboard)
    else:
        quiz_game = get_quiz()
        if isinstance(quiz_game, Quiz):
            logging.info(
                f'Пользователь {message.from_user.full_name} опоздал.')
            await message.answer(f'Вы опоздали.')
        else:
            all_users = get_all_users()
            all_users[message.from_user.id] = User(message.from_user.full_name)
            set_all_users(all_users)
            for id in admin_id:
                await bot.send_message(
                    id,
                    f'Пользователь {message.from_user.full_name} ждет начала квиза.'
                    f'Всего пользователей {len(all_users)}')
            logging.info(
                f'Пользователь {message.from_user.full_name} ждет начала квиза.'
            )
            await message.answer(f'Ждите начала квиза.')
Beispiel #4
0
 async def start_rounds(self):
     """
     Начинает отправлять вопросы пользователям. Старт викторины.
     """
     users = get_all_users()
     logging.info(f'Началась игра - {self.quiz_name}')
     for round_name, quiz_round in self.rounds.items():
         if not quiz:
             await stop()
             return
         logging.info(f'Начался раунд - {round_name}.')
         for user_id in users:
             await bot.send_message(
                 user_id,
                 f'Раунд - {round_name}.'
                 f'\n Задержка между вопросами {self.times_between_questions[round_name]} сек.'
             )
         for number, question in enumerate(quiz_round):
             if not quiz:
                 await stop()
                 return
             logging.info(f'Начался вопрос - {question.question_text}.')
             global current_question_correct_id
             current_question_correct_id = question.correct_option_id
             for user_id in users:
                 if question.media:
                     media = question.media
                     if media[0] == 'photo':
                         await bot.send_photo(user_id, media[1])
                     elif media[0] == 'video':
                         await bot.send_video(user_id, media[1])
                     elif media[0] == 'audio':
                         await bot.send_audio(user_id, media[1])
                 await bot.send_poll(chat_id=user_id,
                                     question=question.question_text,
                                     is_anonymous=False,
                                     options=question.options,
                                     type='quiz',
                                     correct_option_id=question.correct_option_id,
                                     open_period=question.open_time)
             await asyncio.sleep(self.times_between_questions[round_name])
             for user_id in users:
                 if number == len(self.rounds[round_name]):
                     await bot.send_message(user_id, f'Раунд {round_name} закончен')
         await asyncio.sleep(1)
     users_scores = {user.name: user.score for user in users.values()}
     users_scores_msg = '\n'.join([
         f'{s_user[0]} набрал {s_user[1]} очков.' for s_user
         in sorted(users_scores.items(), key=lambda us: (us[1], us[0]), reverse=True)]
     )
     for user_id in users:
         await bot.send_message(
             user_id, users_scores_msg
         )
     for id in admin_id:
         await bot.send_message(id, users_scores_msg)
     set_all_users({})
     set_quiz({})
Beispiel #5
0
async def handle_poll_answer(quiz_answer: PollAnswer):
    """
    При ответе пользователя на викторину,
    обрабатывает его вариант ответ и в зависимости от результата прибавляет балл.

    Parameters
    ----------
    quiz_answer : PollAnswer
        Вариант ответа пользователя.
    """
    if get_current_question_correct_id() == quiz_answer.option_ids[0]:
        all_users = get_all_users()
        all_users[quiz_answer.user.id].add_score()
        set_all_users(all_users)
        logging.info(f'Пользователь {quiz_answer.user.full_name} +1 балл.')
    else:
        logging.info(f'Пользователь {quiz_answer.user.full_name} ответил неверно.')
Beispiel #6
0
def get_menu(message):
    # main menu API
    if message.text == '1':
        bot.send_message(message.from_user.id, 'Как вас зовут?')
        bot.register_next_step_handler(message, set_name)
    elif message.text == '2':
        bot.send_message(message.from_user.id, 'Введите номер телефона или email')
        bot.register_next_step_handler(message, get_auth)
    elif message.text == '3':
        bot.send_message(message.from_user.id, 'Вы находитесь в форме восстановления пароля\n'
                                               'Введите email и на него будет отправлен код для восстановления пароля')
        bot.register_next_step_handler(message, get_recovery)
    elif message.text == '4':
        bot.send_message(message.from_user.id, 'Введите id, или номер телефона или email чтобы выбрать пользователя для удаления')
        bot.register_next_step_handler(message, delete_user)
    elif message.text == '5':
        text = 'id - name - number - email \n'
        result = user.get_all_users()
        for i in result:
            text += str(i) + '\n'
        bot.send_message(message.from_user.id, text)
Beispiel #7
0
params = cgi.FieldStorage()

data = session.get_session_data()
if data is None:  # tko nema sessiju nije logiran. - idi na login
    print("Location: login.py")
else:
    user_id = data.get("user_id", None)
    user_role = user.get_user_role(user_id)
    if user_role != "ADMIN":
        print("Location: index.py")
    else:
        delete_id = params.getvalue("delete_id")
        if delete_id:
            user.delete_user(delete_id)
print()
base.start_html()
print("<h1>USERS:</h1>")
users = user.get_all_users()
print("<table border=1>")
for user in users:
    print("<tr>")
    print("<td>" + user[1] + "</td>")
    print('<td><a href="edit_user_view.py?edit_id=' + str(user[0]) +
          '">edit</a></td>')
    print('<td><a href="users.py?delete_id=' + str(user[0]) +
          '">delete</a></td>')
    print("</tr>")
print('<tr><td><a href="register.py">add user</a></td></tr>')
print("</table>")
base.finish_html()
Beispiel #8
0
def fetch_all():
    return get_all_users()