def encounter_helpme(self): self._checkloc("encounter") if self.user['encounter_help'] == None: self.user['encounter_help'] = [] self.user.update() users_here = db().user.find({'data.zone': self.user['zone'], 'online': True, 'loc': 'default', '_id': {'$ne': self.user.src['_id']}}, ['name']) for u in users_here: chat.Chat.addsys("{u:u} зовет на помощь!", chat.Chat.private_channel(u['name']), {'u': self.user.js_link()}) User.need_update_id(str(u['_id']), True)
def drop_offline_users(): try: time_limit = now() - LAST_ACTION_TIME_LIMIT for u in db().user.find({"online": True, "last_action": {"$lt": time_limit}}): try: user = User(u) user.do_logout() except: log_exception() log_warning('Error trying to log out user %s. Forcing logout...' % u.get('name')) db().user.update({"_id": u["_id"]}, {"$set": {"online": False}}) add_timeout("drop_offline_users", LAST_ACTION_TIME_LIMIT) except: log_exception() log_error('Error in task drop_offline_users.')
def get_top_players(): res = app.get_cache("top_players") if res == None: top = User.get_top_players() res = "".join("<li>%s [%s]</li>" % p for p in top) app.set_cache("top_players", res) return res
def encounter_help_cancel(self): self._checkloc("encounter_help") other = User.get(self.user['help_for']) if other['encounter_help'] != None: other['encounter_help'] = [id for id in other['encounter_help'] if id != self.user.id] self.user.go('default') other.update()
def signup(uuid, name): """Attempts to create user and then return the UUID of the newly signed up user Args: uuid (str): user id generated by facebook javascript SDK Returns: 404 if user already exists, 201 if sign up is successful """ db = mongo.db.users db_user_entry = db.find_one({'UUID': uuid}) # User already exists if not (db_user_entry is None): print('USER EXISTS') return jsonify({"code": 404}), 404 new_user = User(name, uuid) active_users[uuid] = new_user serialized_user_obj = pickle.dumps(new_user) db_user_entry = {"UUID": uuid, "serialized_user_obj": serialized_user_obj} db.insert_one(db_user_entry) return jsonify({"code": 201}), 201
def duel_cancel(self): ' Отменить дуэль ' self._checkloc("default") id = str(self.q["id"]) other = User.get(id) if other == None or self.user.id == id: self._error("Invalid other") self.user.duel_cancel(other)
def duel(self): ' Вызвать на дуэль игрока ' self._checkloc("default") id = str(self.q["id"]) other = User.get(id) if other == None or self.user.id == id: self._error("Invalid other") if not other.online: self._reject(u"Пользователь вышел из игры") self.user.duel_invite(other)
def get_current_user(self): try: context.current = self context.cache = {} context.save_users = set() context.save_fights = set() u = User.get(self.get_secure_cookie("user"), False) u.update_activity() return u except: return None
def duel_accept(self): ' Принять вызов на дуэль ' self._checkloc("default") id = str(self.q["id"]) other = User.get(id) if other == None or self.user.id == id: self._error("Invalid other") if not other.online: self._reject(u"Пользователь вышел из игры") try: self.user.duel_accept(other) except MyException as e: self._reject(e.message)
def login(): form = forms.LoginForm() if form.validate_on_submit(): admintable = all_table['admin'] user = db.session.query(admintable).filter_by(id=form.id.data).first() if user is not None: user = User(user._mapping) if user.password == md5( form.password.data.encode('ascii')).digest(): login_user(user) return redirect(url_for('index')) flash('用户名或密码不正确') return render_template('login.html', form=form)
def post(self): try: name = self.arg("name") password = self.arg("pass") if User.check_name(name) != "ok": msg = u"Недопустимое имя персонажа." raise MyException() charclass = self.arg("charclass") if charclass not in constants.char_class.keys(): msg = u"Неверный класс персонажа." raise MyException() user = User.create(name, password, charclass) if user: self.set_secure_cookie("user", str(user.id)) self.redirect("/") else: msg = u"Ошибка при создании персонажа." raise MyException() except MyException: self.render("templates/create.html", err=msg, name=xhtml_escape(name)) except: log_exception() self.render("templates/create.html", err=u"Произошла ошибка при создании персонажа. Попробуйте еще раз через несколько минут.", name=xhtml_escape(name))
def post(self): try: name = self.arg("name") password = self.arg("pass") user = User.authenticate(name, password) if user: self.set_secure_cookie("user", str(user.id)) self.redirect("/") else: msg = u"Не удалось войти в игру. Проверьте имя и пароль." raise MyException() except MyException: self.render("templates/login.html", err=msg, name=xhtml_escape(name), top_players = get_top_players(), news = news.render()) except: log_exception() self.render("templates/login.html", err=u"Произошла ошибка при входе в игру. Попробуйте еще раз через несколько минут.", name=xhtml_escape(name), top_players = get_top_players(), news = news.render())
def encounter_help(self): self._checkloc("default") id = str(self.q["id"]) other = User.get(id) if other == None or self.user.id == id: self._error("Invalid other") if not other.online: self._reject(u"Пользователь вышел из игры") if other['loc'] != 'encounter': self._reject(u"Вы опоздали, битва уже началась!") if other['encounter_help'] == None: self._reject(u"Игрок не звал на помощь.") if other['zone'] != self.user['zone']: self._reject(u"Игрок находится в другой локации.") if self.user.id in other['encounter_help']: self._error(u"Already in encounter_help list.") other['encounter_help'].append(self.user.id) self.user['help_for'] = other.id self.user.go('encounter_help') other.update() for u in other.get_encounter_helpers(): u.update()
def create_test_dummy(): uuid = 666 name = "Test Dummy" db = mongo.db.users db_user_entry = db.find_one({'UUID': uuid}) # User already exists if not (db_user_entry is None): print('USER EXISTS') return jsonify({"code": 404}), 404 current_user = User(name, uuid) current_user.upload_data("tests/html/dummy_messages2.csv") current_user.process_data() active_users[uuid] = current_user serialized_user_obj = pickle.dumps(current_user) db_user_entry = {"UUID": uuid, "serialized_user_obj": serialized_user_obj} db.insert_one(db_user_entry) return jsonify({"code": 201})
def load_user(userid): return User.get(userid)
def check_name(self): name = unicode(self.q["name"]) return User.check_name(name)
def user(name): res = User.get(str(db().user.find_one({'login': name.lower()})['_id'])) to_save.append(res) return res