示例#1
0
 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}))
示例#2
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)
示例#3
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)
示例#4
0
文件: index.py 项目: Rorchach/py2048
    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))
示例#5
0
文件: index.py 项目: ccina/chatsrv
 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()
示例#6
0
文件: index.py 项目: Rorchach/py2048
    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))
示例#7
0
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)
示例#8
0
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)
示例#9
0
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)
示例#10
0
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)
示例#11
0
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))
示例#12
0
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)
示例#13
0
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) 
示例#14
0
文件: index.py 项目: Rorchach/py2048
    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)
示例#15
0
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))
示例#16
0
 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()
示例#17
0
文件: index.py 项目: ccina/chatsrv
 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}))
示例#18
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'
示例#19
0
 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'
示例#20
0
 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'
示例#21
0
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'
示例#22
0
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'
示例#23
0
    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'
示例#24
0
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'
示例#25
0
 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'
示例#26
0
 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'
示例#27
0
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)
示例#28
0
 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)
示例#29
0
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)
示例#30
0
    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'
示例#31
0
文件: index.py 项目: HouseWang/kpages
 def get(self):
     coll = get_context().get_async_mongo()['account']
     cursor = coll.find()
     motor.Op(cursor.to_list,callback=self.end)
示例#32
0
# -*- 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

示例#33
0
def set_token(key, token):
    r = get_context().get_redis()
    print '设置Token: ', token
    r.setex(key, token, 7000)
示例#34
0
文件: index.py 项目: Rorchach/py2048
 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))
示例#35
0
    def get(self):
        coll = get_context().get_mongoclient(name='migrant')['account']
        rs = coll.find()

        self.write(dict(data=mongo_conv(list(rs))))
        self.finish()
示例#36
0
def Tb(table,dbname=None):
    return get_context().get_mongoclient(dbname)[table]
示例#37
0
def Tb(table,dbname=None):
    return get_context().get_mongoclient(dbname)[table]
示例#38
0
文件: index.py 项目: HouseWang/kpages
 def get(self):
     coll = get_context().get_mongoclient(name='migrant')['account']
     rs = coll.find()
     
     self.write(dict(data=mongo_conv(list(rs))))
     self.finish()
示例#39
0
文件: demo.py 项目: HouseWang/kpages
def async_get():
    db = yield get_context().get_motor()
    coll = yield db['test']
    return coll.find()
示例#40
0
 def get(self):
     coll = get_context().get_async_mongo()['account']
     cursor = coll.find()
     motor.Op(cursor.to_list, callback=self.end)
示例#41
0
def put_file(body, filename, **kwargs):
    db = get_context().get_asyncmongo()
    fs = GridFS(db, FILE_GFS)
    kwargs.update(filename=filename)
    fs.put(body, **kwargs)
示例#42
0
def get_token(key):
    r = get_context().get_redis()
    token = r.get(key)
    print '从缓存获取Token: ', token
    return token
示例#43
0
# -*- 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)

示例#44
0
def put_file(body, filename, **kwargs):
    db = get_context().get_asyncmongo()
    fs = GridFS(db, FILE_GFS)
    kwargs.update(filename=filename)
    fs.put(body,**kwargs)
示例#45
0
# -*- 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)
示例#46
0
# -*- 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)