def on_message(self, msg): #pdb.set_trace() if hasattr(msg, "kind"): if msg.kind == 'message': self.write_message(str(msg.body)) if msg.kind == 'disconnect': self.write_message('The connection terminated ' 'due to a Redis server error.') self.close() else: msg = json.loads(msg) if msg.get("type", None) == "auth" and not self.uid: uid = msg.get("uid", None) if uid: with LogicContext(): r = get_context().get_redis() res = r.sadd("curusrs", uid) if res: self.uid = uid self.listen(uid) bc( r, json.dumps({ "type": "contactref", "uid": uid, "action": "add" })) self.write_message( json.dumps({ "type": "authstat", "stat": 1 })) bcm(r, self) return self.write_message(json.dumps({"type": "authstat", "stat": 0})) elif msg.get("type", None) == "msg" and self.uid: tousr = msg.get("to", None) msgtxt = msg.get("msg", None) if tousr and msgtxt: with LogicContext(): r = get_context().get_redis() res = r.sismember("curusrs", tousr) if res: c.publish( tousr, json.dumps({ "type": "msg", "from": self.uid, "msg": msgtxt })) self.write_message(json.dumps({"stat": 1})) return self.write_message(json.dumps({"stat": 0}))
def _save(self, data): _id = self.get_argument("id", None) db = get_context().get_mongo() if not _id: return m_add(self._name,data) else: return m_update(self._name,_id, **data)
def _save(self, data): _id = self.get_argument("id", None) db = get_context().get_mongo() if not _id: return m_add(self._name, data) else: return m_update(self._name, _id, **data)
def post(self): codename = self.get_argument('codename') password = self.get_argument('password') db = get_context().get_mongoclient('my2048')['user'] db.update({"codename": codename}, {"$set":{"password": password}}) self.write(dict(status = True))
def on_close(self): if self.client.subscribed: with LogicContext(): r = get_context().get_redis() r.srem("curusrs", self.uid) bc(r, json.dumps({"type":"contactref","uid":self.uid, "action":"rm"})) self.client.unsubscribe(self.uid) self.client.disconnect()
def post(self): codename = self.get_argument('codename') highscore = self.get_argument('highscore') db = get_context().get_mongoclient('my2048')['user'] db.update({"codename": codename}, {"$set":{"highscore": highscore}}) self.write(dict(status = True))
def del_image(fid): fid = ObjectId(fid) db = get_context().get_asyncmongo() tfs = GridFS(db, THUMBNAIL_GFS) yield gen.Task(tfs.delete, fid) fs = GridFS(db, IMG_GFS) yield gen.Task(fs.delete, fid)
def file_page(page, size=10, ftype='image', callback=None): db = get_context().get_asyncmongo() if ftype == 'image': fs = GridFS(db, THUMBNAIL_GFS) elif ftype == 'file': fs = GridFS(db, FILE_GFS) fs.find(skip=(page + 1) * size, limit=size, callback=None)
def del_image(fid): fid = ObjectId(fid) db = get_context().get_asyncmongo() tfs = GridFS(db,THUMBNAIL_GFS) yield gen.Task(tfs.delete,fid) fs = GridFS(db,IMG_GFS) yield gen.Task(fs.delete,fid)
def file_page(page,size=10,ftype='image', callback=None): db = get_context().get_asyncmongo() if ftype=='image': fs = GridFS(db,THUMBNAIL_GFS) elif ftype=='file': fs = GridFS(db,FILE_GFS) fs.find(skip=(page+1)*size,limit=size,callback=None)
def image_page(page,size=10,ftype='image',callback=None): db = get_context().get_asyncmongo() tb = db[IMG_GFS+'.files'] lst,err = yield gen.Task(tb.find,skip=page*size,limit=size,sort=[('_id',-1),]) cmd = dict(count=THUMBNAIL_GFS+'.files') rs,err = yield gen.Task(db.command,cmd) count = rs[0]['n'] raise gen.Return((lst[0],count))
def get_file(fid, ftype, callback=None): db = get_context().get_asyncmongo() if ftype == 'image': fs = GridFS(db, IMG_GFS) elif ftype == 'thumbnail': fs = GridFS(db, THUMBNAIL_GFS) elif ftype == 'file': fs = GridFS(db, FILE_GFS) fid = ObjectId(fid) fs.get(fid, callback=callback)
def get_file(fid, ftype, callback=None): db = get_context().get_asyncmongo() if ftype=='image': fs = GridFS(db, IMG_GFS) elif ftype=='thumbnail': fs = GridFS(db, THUMBNAIL_GFS) elif ftype=='file': fs = GridFS(db, FILE_GFS) fid = ObjectId(fid) fs.get(fid, callback=callback)
def get(self, *args): print args if len(args) == 0: codename = 'hooke' else: codename = args[0] db = get_context().get_mongoclient('my2048')['user'] highscore = 0 lastscore = 0 highnum = 0 password = '' lastboard = [] user = db.find_one({"codename":codename}) if user: name = user.get('name', '') highscore = user.get('highscore', 0) highnum = user.get('highnum', 0) lastscore = user.get('lastscore', highscore) password = user.get('password', '') lastboard = user.get('lastboard', '') else: db.insert({"codename":codename}) name = '' print user db = get_context().get_mongoclient('my2048')['user'] rank = list(db.find({}, {'_id': 0}).sort([('highnum', -1)]).limit(10)) self.render('index.html', name = name, codename = codename, highscore = highscore, lastscore = lastscore, password = password, highnum = highnum, lastboard = lastboard, rank = rank)
def image_page(page, size=10, ftype='image', callback=None): db = get_context().get_asyncmongo() tb = db[IMG_GFS + '.files'] lst, err = yield gen.Task(tb.find, skip=page * size, limit=size, sort=[ ('_id', -1), ]) cmd = dict(count=THUMBNAIL_GFS + '.files') rs, err = yield gen.Task(db.command, cmd) count = rs[0]['n'] raise gen.Return((lst[0], count))
def on_close(self): if self.client.subscribed: with LogicContext(): r = get_context().get_redis() r.srem("curusrs", self.uid) bc( r, json.dumps({ "type": "contactref", "uid": self.uid, "action": "rm" })) self.client.unsubscribe(self.uid) self.client.disconnect()
def on_message(self, msg): #pdb.set_trace() if hasattr(msg, "kind"): if msg.kind == 'message': self.write_message(str(msg.body)) if msg.kind == 'disconnect': self.write_message('The connection terminated ' 'due to a Redis server error.') self.close() else: msg = json.loads(msg) if msg.get("type", None) == "auth" and not self.uid: uid = msg.get("uid", None) if uid: with LogicContext(): r = get_context().get_redis() res = r.sadd("curusrs", uid) if res: self.uid = uid self.listen(uid) bc(r, json.dumps({"type":"contactref","uid":uid, "action":"add"})) self.write_message(json.dumps({"type":"authstat", "stat":1})) bcm(r, self) return self.write_message(json.dumps({"type":"authstat", "stat":0})) elif msg.get("type", None) == "msg" and self.uid: tousr = msg.get("to", None) msgtxt = msg.get("msg", None) if tousr and msgtxt: with LogicContext(): r = get_context().get_redis() res = r.sismember("curusrs", tousr) if res: c.publish(tousr, json.dumps({"type":"msg", "from":self.uid, "msg":msgtxt})) self.write_message(json.dumps({"stat":1})) return self.write_message(json.dumps({"stat":0}))
def forgot_pwd(username): try: not_empty(username) existed = m_exists(TName, username=username) if existed: key = random_key() redis = get_context().get_redis() redis.set(key, username, 60 * 60) r = send_mail([username], '找回密码', get_email_content('email_forget_password.html', key=key, username=username)) return r, 'OK' if r else 'FAIL' else: return False, 'NO_EXIST' except ValueError: return False, 'NO_EMPTY'
def active_account(self, key): try: not_empty(key) redis = get_context().get_redis() username = redis.get(key) if not username: return False, 'EXPIRED' existed = self.exists(username=username) if existed: self.update(username, key='username', status=ACTIVATED) return True, dict(username=username) else: return False, 'NO_EXIST' except ValueError: return False, 'NO_EMPTY'
def active_account(self,key): try: not_empty(key) redis = get_context().get_redis() username = redis.get(key) if not username: return False, 'EXPIRED' existed = self.exists(username=username) if existed: self.update(username,key='username',status=ACTIVATED) return True, dict(username=username) else: return False, 'NO_EXIST' except ValueError: return False, 'NO_EMPTY'
def apply_active_account(username): try: not_empty(username) existed = m_exists(TName, username=username) if existed: key = random_key() redis = get_context().get_redis() redis.set(key, username, 60 * 60) r = send_mail([username], '账号激活', get_email_content('email_active_account.html', key=key, username=username)) return r, 'OK' if r else 'FAIL' else: return False, 'NO_EXIST' except ValueError: return False, 'NO_EMPTY'
def active_account(key): try: not_empty(key) redis = get_context().get_redis() username = redis.get(key) if not username: return False, 'EXPIRED' existed = m_exists(TName, username=username) if existed: Tb().update(dict(username=username), {'$set': {'status': ACTIVATED}}) return True, dict(username=username) else: return False, 'NO_EXIST' except ValueError: return False, 'NO_EMPTY'
def reset_forgotten_password(self, key, new_password): try: not_empty(key, new_password) redis = get_context().get_redis() username = redis.get(key) if not username: return False, 'EXPIRED' existed = self.exists(username=username) if existed: self.update(username,key='username', password=hashPassword(new_password)) return True, 'OK' else: return False, 'NO_EXIST' except ValueError: return False, 'NO_EMPTY'
def reset_forgotten_password(key, new_password): try: not_empty(key, new_password) redis = get_context().get_redis() username = redis.get(key) if not username: return False, 'EXPIRED' existed = m_exists(TName, username=username) if existed: Tb().update(dict(username=username), {'$set': {'password': hashPassword(new_password)}}) return True, 'OK' else: return False, 'NO_EXIST' except ValueError: return False, 'NO_EMPTY'
def apply_active_account(self, username, host): try: not_empty(username) existed = self.exists(username=username) if existed: key = random_key() redis = get_context().get_redis() redis.set(key, username, 60 * 60) r = send_mail([username], '账号激活', get_email_content('email_active_account.html', host=host, key=key, username=username)) return r, 'OK' if r else 'FAIL' else: return False, 'NO_EXIST' except ValueError: return False, 'NO_EMPTY'
def forgot_pwd(self, username, host): try: not_empty(username) existed = self.exists(username=username) if existed: key = random_key() redis = get_context().get_redis() redis.set(key, username, 60 * 60) r = send_mail([username], '找回密码', get_email_content('email_forget_password.html', host=host, key=key, username=username)) return r, 'OK' if r else 'FAIL' else: return False, 'NO_EXIST' except ValueError: return False, 'NO_EMPTY'
def put_image(body, filename, fmt, **kwargs): db = get_context().get_asyncmongo() kwargs.update(filename=filename) fs = GridFS(db, IMG_GFS) try: body = _resize_image(body, fmt, __conf__.IMG_MAX_SIZE) fid = yield gen.Task(fs.put, body, **kwargs) thumbnail = _resize_image(body, fmt, __conf__.THUMBNAIL_SIZE) tfs = GridFS(db, THUMBNAIL_GFS) tfid = yield gen.Task(tfs.put, thumbnail, _id=fid, **kwargs) except Exception as e: yield gen.Task(fs.delete, fid) print e raise raise gen.Return(fid)
def get(self): key = self.get_argument('key', None) kwargs = { 'key': None, 'expired': False } template_file = 'action/forget_password.html' if not key: self.render(template_file, **kwargs) else: redis = get_context().get_redis() username = redis.get(key) if username: kwargs.update(key=key) self.render(template_file, **kwargs) else: kwargs.update(expired=True) self.render(template_file, **kwargs)
def put_image(body, filename, fmt,**kwargs): db = get_context().get_asyncmongo() kwargs.update(filename=filename) fs = GridFS(db, IMG_GFS) try: body = _resize_image(body,fmt,__conf__.IMG_MAX_SIZE) fid =yield gen.Task(fs.put,body,**kwargs) thumbnail = _resize_image(body,fmt,__conf__.THUMBNAIL_SIZE) tfs = GridFS(db, THUMBNAIL_GFS) tfid = yield gen.Task(tfs.put,thumbnail,_id=fid,**kwargs) except Exception as e: yield gen.Task(fs.delete,fid) print e raise raise gen.Return(fid)
def reset_forgotten_password(self, key, new_password): try: not_empty(key, new_password) redis = get_context().get_redis() username = redis.get(key) if not username: return False, 'EXPIRED' existed = self.exists(username=username) if existed: self.update(username, key='username', password=hashPassword(new_password)) return True, 'OK' else: return False, 'NO_EXIST' except ValueError: return False, 'NO_EMPTY'
def get(self): coll = get_context().get_async_mongo()['account'] cursor = coll.find() motor.Op(cursor.to_list,callback=self.end)
# -*- coding:utf-8 -*- """ author [email protected] 资讯报告管理逻辑 """ from kpages import not_empty, get_context, mongo_conv from utility import m_update, m_del, m_page, m_exists TName = 'report' Tb = lambda: get_context().get_mongo()[TName] def add(title, pid, city, body, source=None, **kwargs): ''' add report ''' try: not_empty(title, body) val = dict(title=title, pid=pid, city=city, body=body, source=source) r = m_exists(TName, title=title, pid=pid) if not r: val.update(kwargs) _id = Tb().insert(val, saft=True) val["_id"] = str(_id) else: return False, 'exists' except Exception as e: return False, e.message return True, val
def set_token(key, token): r = get_context().get_redis() print '设置Token: ', token r.setex(key, token, 7000)
def get(self): db = get_context().get_mongoclient('my2048')['user'] data = list(db.find({}, {'_id': 0}).sort([('highnum', -1)]).limit(10)) self.write(dict(status = True, data = data))
def get(self): coll = get_context().get_mongoclient(name='migrant')['account'] rs = coll.find() self.write(dict(data=mongo_conv(list(rs)))) self.finish()
def Tb(table,dbname=None): return get_context().get_mongoclient(dbname)[table]
def async_get(): db = yield get_context().get_motor() coll = yield db['test'] return coll.find()
def get(self): coll = get_context().get_async_mongo()['account'] cursor = coll.find() motor.Op(cursor.to_list, callback=self.end)
def put_file(body, filename, **kwargs): db = get_context().get_asyncmongo() fs = GridFS(db, FILE_GFS) kwargs.update(filename=filename) fs.put(body, **kwargs)
def get_token(key): r = get_context().get_redis() token = r.get(key) print '从缓存获取Token: ', token return token
# -*- coding:utf-8 -*- """ author [email protected] """ from bson.objectid import ObjectId from bson.errors import InvalidId from kpages import get_context,mongo_conv,not_empty from kpages.model import Model Tb = lambda table:get_context().get_mongo()[table] class BaseModel(Model): def _save(self, data): _id = self.get_argument("id", None) db = get_context().get_mongo() if not _id: return m_add(self._name,data) else: return m_update(self._name,_id, **data) #查询非删除状态的数据 StatusCond = {'status':{'$ne':-1}} def m_add(table,data): not_empty(table) _id = Tb(table).insert(data,saft=True) return True,str(_id)
def put_file(body, filename, **kwargs): db = get_context().get_asyncmongo() fs = GridFS(db, FILE_GFS) kwargs.update(filename=filename) fs.put(body,**kwargs)
# -*- coding:utf-8 -*- """ city logic (curd) author [email protected] """ from kpages import not_empty,get_context,mongo_conv from utility import m_update,m_del,m_page,m_exists,StatusCond TName = 'city' Tb = lambda :get_context().get_mongo()[TName] CITY_VAL = {} CITY_NAME = {} citys = {} def add(name,parent=None,level=0): try: not_empty(name) r = m_exists(TName,name=name,parent=parent,level=level) if not r: val = dict(name=name,parent=parent,level=level,status=0) _id = Tb().insert(val,saft=True) val['_id'] = str(_id) return True,val else: return False,'EXIST' except Exception as e: return False,e.message def getList(parent=None): cond = dict(parent=parent)
# -*- coding:utf-8 -*- """ author [email protected] """ from bson.objectid import ObjectId from bson.errors import InvalidId from kpages import get_context, mongo_conv, not_empty from kpages.model import Model Tb = lambda table: get_context().get_mongo()[table] class BaseModel(Model): def _save(self, data): _id = self.get_argument("id", None) db = get_context().get_mongo() if not _id: return m_add(self._name, data) else: return m_update(self._name, _id, **data) #查询非删除状态的数据 StatusCond = {'status': {'$ne': -1}} def m_add(table, data): not_empty(table) _id = Tb(table).insert(data, saft=True) return True, str(_id)