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())
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'Ждите начала квиза.')
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({})
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} ответил неверно.')
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)
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()
def fetch_all(): return get_all_users()