def post(self): user = self.get_argument("name") password = passhash(self.get_argument("password")) exist = yield adb(self.db["users"].find_one, {"method": "raw", "user": user}) if exist: # Пользователь с таким именем уже существует if exist.get("password", "") != password: # raise tornado.web.HTTPError(500, 'Password is incorrect') self.write("<!DOCTYPE html><html><body>Пароль неверный</body></html>") self.finish() return result = exist.get("_id", None) else: result = yield adb( self.db["users"].save, {"method": "raw", "user": user, "password": password, "nickname": user} ) if not result: raise tornado.web.HTTPError(404) else: self.set_secure_cookie("user", str(result)) try: next = unquote_plus(self.get_argument("next")) if next: self.redirect(next) else: self.redirect("/") except: # Внешний запрос - вернем 'AUTHENTICATION_SUCCESS' self.write("AUTHENTICATION_SUCCESS") self.finish()
def _on_auth(self, user): if not user: raise tornado.web.HTTPError(500, "Google auth failed") exist = yield adb(self.db["users"].find_one, {"method": "google", "user": user["email"]}) if exist: # Пользователь с таким именем уже существует result = exist.get("_id", None) else: result = yield adb( self.db["users"].save, { "method": "google", "user": user["email"], "nickname": user["name"], "email": user["email"], "name": user["name"], "locale": user["locale"], "first_name": user["first_name"], "last_name": user["last_name"], }, ) if not result: raise tornado.web.HTTPError(404) else: self.set_secure_cookie("user", str(result)) self.redirect(self.get_argument("next", "/"))
def api(self, *args, **kwargs): global api_call_counter, api_call_concurent api_call_counter += 1 api_call_concurent += 1 log(' ApiBase:api:start(args=%s, kwargs=%s)' % (args, kwargs)) self.set_header('Content-Type', 'application/json; charset=UTF-8') # callback = self.request.get('callback', None) #callback = self.request.arguments.get('callback', None) callback = self.get_argument('callback', None) # self.current_user = "******" if 'nologin' not in self.requred: log(' start: result = yield motor.Op...') #user = yield motor.Op(get_user, self.db, self.current_user) user = yield adb(users.get_user4, self.db, self.current_user) #user = yield adb(users.get_user4, self.db, "5049dbb9de72f216d3b8ec9f") if user: self.user = user.get('nickname', u'Ошибка') log(' done: result = yield motor.Op... [%s]' % repr(self.user)) answ = yield gen.Task(self.parcer, *args, **kwargs) #answ = yield motor.Op(self.parcer, *args, **kwargs) # answ = self._parcer(*args, **kwargs) # print ' ret=', repr(answ) answ['api_statistics'] = { 'call_counter': api_call_counter, 'call_concurent': api_call_concurent } answ['user'] = self.user """ res = yield adb( self.db['trash'].find({"i": {"$gt": 18, "$lt": 20}}).to_list ) print ' === res=', repr(res) answ['trash'] = [ repr(p) for p in res ] """ if callback: self.write(callback + ' = ' + self.js_pre + json.dumps(answ, indent=2) + self.js_post + "\r") else: self.write(self.js_pre + json.dumps(answ, indent=2) + self.js_post + "\r") self.finish() api_call_concurent -= 1 log(' ApiBase:api:finish')