Пример #1
0
 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)
Пример #2
0
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.')
Пример #3
0
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
Пример #4
0
 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()
Пример #5
0
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
Пример #6
0
 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)
Пример #7
0
 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)
Пример #8
0
 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
Пример #9
0
 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)
Пример #10
0
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)
Пример #11
0
 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))
Пример #12
0
 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())
Пример #13
0
 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()
Пример #14
0
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})
Пример #15
0
def load_user(userid):
    return User.get(userid)
Пример #16
0
 def check_name(self):
     name = unicode(self.q["name"])
     return User.check_name(name)   
Пример #17
0
 def user(name):
     res = User.get(str(db().user.find_one({'login': name.lower()})['_id']))
     to_save.append(res)
     return res