def test_user(self): user = utils.User() with pytest.raises(AssertionError): user.user_id() user = utils.User(data={ "id": u"ID", u"locale": u"ja" }, provider="google") assert user._provider is None assert user.nickname() is None assert user.email() is None assert user.user_id() == u"ID" user._provider = "test" assert user.user_id() == u"test:ID" assert user.locale == u"ja" with pytest.raises(AttributeError): user.gender with pytest.raises(AttributeError): del user.gender user.gender = "female" assert user.gender == "female" del user.gender with pytest.raises(AttributeError): user.gender del user._id
def determine_user(self): if self.callee is None: # If callee is now known and we have unsecure connection user = self.user try: self.callee = utils.User(name=user) except Exception: # self.log.debug("Can't switch to user %s" % user, exc_info=True) self.callee = utils.User(name='nobody') assert self.callee is not None
def load(path): if not os.path.ispath(path): raise OSError("path '{}' is not a file.".format(path)) with serializer_lock: with open(path, 'r') as f: reader = csv.DictReader(f) for row in reader: user = utils.User(ip=row[FIELD_NAMES[0]], id=row[FIELD_NAMES[1]]) if user not in users: users.append(user)
def new_player(): """ Get player name and confirm not already in loadfile. Output: user - the new User object created for the player. """ print("Who is playing? \n") player_name = input('>') print() with shelve.open('myfile') as loadfile: try: ################ ## FIX THIS ## ################ if loadfile[player_name] == None: pass # return User(player_name) else: print("I already have a player with that name.") print("Please try a different name:\n") return new_player() except KeyError: return utils.User(player_name)
return False def m_play_again(user, deck): """ Ask user to play again, then restart or quit. This function asks the user if they want to play again if yes, restart memory, if no then exit. Name is such to distinguish from play_again normally run through menu.py. Input: User: user Output: No output, but can restart the game """ print(f"{user.name},\n\tWould you like to play again?") print("Enter 'y' or 'n'") if input('>')[0].lower() != 'n': memory(user, deck) if __name__ == '__main__': # user = mu.get_player() user = utils.User('Player') deck_prompt = "What deck would you like to play?" deck = utils.choose_list(utils.DECKLIST, deck_prompt) os.system('clear') memory(user, deck) m_play_again(user, deck)
def post(self): assert utils.User.load_from_session(self.session) is None user = utils.User(data={"id": u"ID", u"locale": u"ja"}) assert user is not None user.set_to_session(self.session)
def handle_text(message): uid = message.from_user.id if message.from_user.id not in USERS: USERS[message.from_user.id] = u.User() if message.text == "Отмена" and uid in ADMINS: if uid in INADMINMENU: if INADMINMENU[uid] != '': INADMINMENU[uid] = '' markup = u.get_keyboard(["Существующие вопросы", "Добавить вопрос", "Отмена"]) bot.send_message(message.from_user.id, "Меню администратора \n" "(Визуальное представление меню, " "логика и способы взаимодействия c ботом являются " "демо-вариантами и могут быть изменены)", reply_markup=markup) return bot.send_message(message.from_user.id, "Чтобы начать " "опрос введите команду /start", reply_markup=u.get_keyboard([])) return if message.text == "Существующие вопросы" and uid in ADMINS: msg = "Текущие вопросы в боте: \n\n" print(Questions) for i in range(0, len(Questions)): q = Questions[i] msg += "(№ {}) ".format(i) msg += '{} \n Ответы: {}\n\n'.format(q.text, ", ".join(q.answers)) msg += "Для удаления вопроса отправьте его номер." INADMINMENU[uid] = "Существующие вопросы" markup = u.get_keyboard(["Отмена"]) print(msg) bot.send_message(uid, msg, reply_markup=markup) return if message.text == "Добавить вопрос" and uid in ADMINS: INADMINMENU[uid] = "Добавить вопрос" msg = "Для добавления вопроса введите текст нового вопроса, " \ "затем в скобках варианты через запятую, если требуется. \n\n" \ "Пример: Введите ваш возраст (12 лет, 21 год, 45, более 50-ти)\n\n" \ "(строгие требования к написанию вопроса относятся лишь к существующему "\ "прототипу и в дальнейшем ввод вопросов будет упрощен)" markup = u.get_keyboard(["Отмена"]) print(msg) bot.send_message(uid, msg, reply_markup=markup) return if uid in INADMINMENU: if INADMINMENU[uid] == "Существующие вопросы": if u.isint(message.text): id = int(message.text) Questions.remove(Questions[id]) msg = "Вопрос удален" bot.send_message(uid, msg) # markup = u.get_keyboard(["/start"]) # bot.send_message(message.from_user.id, "Нажмите на кнопку старт чтоб начать " # "опрос или введите команду /start", reply_markup=markup) markup = u.get_keyboard(["Существующие вопросы", "Добавить вопрос", "Отмена"]) bot.send_message(message.from_user.id, "Меню администратора \n" "(Визуальное представление меню, " "логика и способы взаимодействия c ботом являются " "демо-вариантами и могут быть изменены)", reply_markup=markup) # INADMINMENU[uid] = "" return else: msg = "Для удаления вопроса отправьте его номер." bot.send_message(uid, msg) return if INADMINMENU[uid] == "Добавить вопрос": try: t = message.text tq = t.split(' (')[0] if len(t.split(' (')) > 1: ta = t.split(' (')[1][:-1] ta_arr = ta.split(', ') if len(ta_arr[0]) > 0: Questions.append(u.Question(tq, ta_arr)) else: Questions.append(u.Question(tq)) else: Questions.append(u.Question(tq)) markup = u.get_keyboard(["/start"]) bot.send_message(uid, "Вопрос добавлен", reply_markup=markup) INADMINMENU[uid] = "" except Exception: bot.send_message(uid, "Пожалуйста следуйте требованиям при написании вопроса " "(строгие требования относятся лишь к существующему " "прототипу и в дальнейшем ввод вопросов будет упрощен)") return if message.text.lower() == "да": if len(Questions) > 0: USERS[message.from_user.id].question = Questions[0] markup = u.get_keyboard(USERS[uid].question.answers) bot.send_message(uid, USERS[uid].question.text, reply_markup=markup) else: markup = u.get_keyboard([]) bot.send_message(uid, "В боте еще не заданы вопросы", reply_markup=markup) if len(Questions) > 1: USERS[uid].question = Questions[1] USERS[uid].q_index = 1 else: USERS[uid].is_last_quest = True return if not USERS[uid].is_last_quest and USERS[message.from_user.id].question is not None: USERS[uid].answs.append(message.text) # if USERS[uid].question is None: # USERS[uid].question = Questions[0] # USERS[uid].q_index = 0 markup = u.get_keyboard(USERS[uid].question.answers) bot.send_message(uid, USERS[uid].question.text, reply_markup=markup) if len(Questions) > USERS[uid].q_index + 1: USERS[uid].q_index += 1 USERS[uid].question = Questions[USERS[uid].q_index] else: USERS[uid].is_last_quest = True return if USERS[uid].is_last_quest: USERS[uid].answs.append(message.text) # markup = u.get_keyboard(["/start"]) markup = types.ReplyKeyboardRemove(selective=False) bot.send_message(message.from_user.id, "Спасибо, за пройденный опрос", reply_markup=u.get_keyboard([])) send_to_admins(USERS[message.from_user.id]) USERS[message.from_user.id] = u.User() if message.text.lower() == "нет": markup = u.get_keyboard(["/start"]) bot.send_message(message.from_user.id, "Нажмите на кнопку старт чтоб начать " "опрос или введите команду /start", reply_markup=markup) return
def handle_start_help(message): bot.send_message(message.from_user.id, "Здравствуйте, вас приветствует тестовый бот, " "который поможет вам опросить клиентов. ") markup = u.get_keyboard(["Да", "Нет"]) bot.send_message(message.from_user.id, "Вам будет задан ряд вопросов, вы готовы?", reply_markup=markup) USERS[message.from_user.id] = u.User()