def __init__(self, classname):
     self.classname = classname
     if not self.blacklistAuth:
         blacklistAuthHelper = ClassHelper("BlacklistAuth")
         items = blacklistAuthHelper.find({})
         if items:
             self.blacklistAuth = items
 def __init__(self, className, method, userId):
     self.className = className
     self.method = method
     self.userId = userId
     if not self.autoMessage:
         autoMessageClassHelper = ClassHelper("AutoMessage")
         items = autoMessageClassHelper.find({})
         for item in items:
             self.autoMessage[(item['classname'], item['method'])] = item
Esempio n. 3
0
 def getList(self, className, query):
     classHelper = ClassHelper(className)
     result = classHelper.find(query)
     objects = []
     for obj in result:
         mo = MeObject(className, obj, False)
         mo.overLoadGet = False
         acl = MeACL(mo['acl'])
         if not acl.readAccess(self.user):
             continue
         objects.append(mo)
     if len(objects) == 0:
         return None
     return objects
def get_specific_count(userid):
    '''
    :param userid:
    :return:{}

    followers 粉丝
    followees 关注的人
    uploaders 贡献的照片数量
    medias 拥有的照片数量
    faces 拥有的脸的数量
    assigners 有多少人贡献照片
    '''
    l = ['followers', 'followees', 'uploaders', 'medias', 'faces', 'assigners']
    result = {}
    for i in l:
        result[i] = 0
    stat_unique_helper = ClassHelper('StatCount')
    query = {
        '$or': [{
            'name': l[0] + '_' + userid
        }, {
            'name': l[1] + '_' + userid
        }, {
            'name': l[2] + '_' + userid
        }, {
            'name': l[3] + '_' + userid
        }, {
            'name': l[4] + '_' + userid
        }, {
            'name': l[5] + '_' + userid
        }]
    }
    objs = stat_unique_helper.find(query)
    # print 'objs:', objs
    if objs:
        for obj in objs:
            for i in l:
                if obj['name'] == i + '_' + userid:
                    result[i] = obj['count']
                    break
    # print 'result:', result
    return result
Esempio n. 5
0
    def get(self, userId, count, isuser=1):

        faceHelper = ClassHelper('FaceRecommend')
        isExistBackupUser = False
        field_name = 'user'
        if int(isuser) == 0:
            field_name = 'backupUser'
            isExistBackupUser = True

        oid = self.get_argument('objectId', None)
        if oid:
            query = {field_name: userId, 'read': {'$exists': False}, 'backupUser': {'$exists': isExistBackupUser},
                     '_id': {'$lt': oid}}
        else:
            query = {field_name: userId, 'read': {'$exists': False}, 'backupUser': {'$exists': isExistBackupUser}}



        sort = {'_id': -1}
        fs = faceHelper.find(query, sort=sort, limit=int(count))
        faces = []
        for face in fs:
            if face.has_key('createAt'):
                del (face['createAt'])
            del (face['updateAt'])
            del (face['acl'])
            if face.has_key('backupUser'):
                face['user'] = face['backupUser']
                del (face['backupUser'])

            face['mosaic'] = 5
            faces.append(face)

        result = deepcopy(ERR_SUCCESS.message)
        result['data'] = faces
        result['count'] = faceHelper.query_count({'user': userId})
        result['unread'] = faceHelper.query_count({'user': userId, 'read': {'$exists': False}})
        print result
        self.write(result)
    def get(self, className, objectId=None):
        # if className == "User":
        #     self.write(ERR_CLASS_PERMISSION.message)
        #     return
        if objectId:
            try:
                ObjectId(objectId)
            except Exception:
                self.write(ERR_OBJECTID_MIS.message)
                return
            obj = MeObject(className)
            if not obj.get(objectId):
                self.write(ERR_OBJECTID_MIS.message)
            else:
                mo = obj.get(objectId)
                # self.filter_field(mo)
                self.write(json.dumps(mo, cls=MeEncoder))
        else:
            classHelper = ClassHelper(className)
            query = {}
            objs = None
            if self.request.arguments.has_key('aggregate'):
                query = eval(self.get_argument('aggregate'))
                objs = classHelper.aggregate(query)
            else:
                if self.request.arguments.has_key('where'):
                    query = eval(self.get_argument('where'))
                    try:
                        if query.has_key('_id'):
                            ObjectId(query['_id'])
                        if query.has_key('$or'):
                            for item in query['$or']:
                                if "_id" in item:
                                    item["_id"] = ObjectId(item["_id"])
                    except Exception:
                        self.write(ERR_OBJECTID_MIS.message)
                        return
                if self.request.arguments.has_key('keys'):
                    keys = eval(self.get_argument('keys'))
                else:
                    keys = None

                try:
                    sort = json.loads(self.get_argument('sort', '{}'))
                    idSort = sort.get('_id', -1)
                    sort = sort or None

                except Exception, e:
                    self.write(ERR_INVALID.message)
                    print e
                    return

                skip = 0
                limit = 20
                try:
                    if self.request.arguments.has_key('skip'):
                        skip = int(self.get_argument('skip'))
                    if self.request.arguments.has_key('limit'):
                        limit = int(self.get_argument('limit'))
                except Exception:
                    self.write(ERR_INVALID.message)
                    return
                if limit > 100:
                    self.write(ERR_INVALID.message)
                    return
                objs = classHelper.find(query, keys, sort, limit, skip)

            objects = []
            for obj in objs:
                mo = MeObject(className, obj, False)
                mo.overLoadGet = False
                acl = MeACL(mo['acl'])
                # if not acl.readAccess(self.user):
                #     continue
                # self.filter_field(mo)
                objects.append(mo)
            self.write(json.dumps(objects, cls=MeEncoder))
Esempio n. 7
0
 def get(self, action):
     if action == "albumUser":  #弃用,用下面的那个
         classHelper = ClassHelper("Face")
         result = classHelper.find({
             "$and": [{
                 'createAt': {
                     '$gt': '2017-09-20 00:00:00'
                 }
             }, {
                 'createAt': {
                     '$lt': '2017-10-01 00:00:00'
                 }
             }]
         })
         print "++++++++++++++++++++++++"
         for res in result:
             print 'test', res
             break
     elif action == "albumUserTwo":
         classHelper = ClassHelper('Media')
         items = classHelper.aggregate([
             {
                 # '$match': {'uploader': "59dc3decca7143413c03a62f", 'publish': False}
                 '$match': {
                     'uploader': self.user['_id'],
                     'publish': False
                 }
             },
             {
                 '$project': {
                     'faces': 1
                 }
             },
             {
                 '$unwind': "$faces"
             },
             {
                 "$lookup": {
                     "from": "Face",
                     "localField": "faces",
                     "foreignField": "_sid",
                     "as": "faceInfo"
                 }
             },
             {
                 '$unwind': "$faceInfo"
             },
             {
                 "$project": {
                     "faces": 1,
                     "possible": "$faceInfo.possible",
                     'media': "$faceInfo.media"
                 }
             },
             {
                 "$unwind": "$possible"
             },
             {
                 '$group': {
                     "_id": {
                         'userId': "$possible.user",
                         "backupUserId": "$possible.backupUser"
                     },
                     "media": {
                         '$first': "$media"
                     },
                     "count": {
                         '$sum': 1
                     }
                 }
             },
             {
                 "$sort": {
                     "count": -1
                 }
             },
             {
                 '$lookup': {
                     "from": "UserInfo",
                     "localField": "_id.userId",
                     "foreignField": "user",
                     "as": "userInfo"
                 }
             },
             {
                 '$lookup': {
                     "from": "BackupUser",
                     "localField": "_id.backupUserId",
                     "foreignField": "_sid",
                     "as": "backupUserInfo"
                 }
             }
         ])
         userInfo = []
         for obj in items:
             try:
                 if obj['userInfo']:
                     userInfo.append({
                         'nickName':
                         obj['userInfo'][0].get('nickName', None),
                         'userId':
                         obj["_id"]['userId'],
                         'count':
                         obj['count']
                     })
                 else:
                     userInfo.append({
                         'nickName':
                         obj['backupUserInfo'][0].get('nickName', None),
                         'backupUserId':
                         obj["_id"]['backupUserId'],
                         'count':
                         obj['count']
                     })
             except Exception, e:
                 log.err(
                     "MyHandler-->get user(backup) info err for userId:%s",
                     obj['_id'])
         data = copy.deepcopy(ERR_SUCCESS)
         data.message['data'] = userInfo
         self.write(json.dumps(data.message, cls=MeEncoder))
    def get(self, className, objectId=None):
        admin = False
        if self.get_current_user() in BaseConfig.adminUser:
            admin = True
        if not admin:
            if className in BaseConfig.accessNoClass:
                self.write(ERR_CLASS_PERMISSION.message)
                return
            if className not in BaseConfig.projectClass:
                #不存在的class
                self.write(ERR_PATH_PERMISSION.message)
                return
        verify = self.verify_cookie(className)
        if not verify:
            self.write(ERR_UNAUTHORIZED.message)
            return
        if objectId:
            try:
                ObjectId(objectId)
            except Exception:
                self.write(ERR_OBJECTID_MIS.message)
                return
            obj = MeObject(className)
            if not obj.get(objectId):
                self.write(ERR_OBJECTID_MIS.message)
            else:
                mo = obj.get(objectId)
                self.filter_field(mo)
                self.write(json.dumps(mo, cls=MeEncoder))
        else:
            classHelper = ClassHelper(className)
            query = {}
            objs = None
            if self.request.arguments.has_key('aggregate'):
                query = eval(self.get_argument('aggregate'))
                objs = classHelper.aggregate(query)
            else:
                if self.request.arguments.has_key('where'):
                    query = eval(self.get_argument('where'))
                    try:
                        if query.has_key('_id'):
                            ObjectId(query['_id'])
                        if query.has_key('$or'):
                            for item in query['$or']:
                                if "_id" in item:
                                    item["_id"] = ObjectId(item["_id"])
                    except Exception:
                        self.write(ERR_OBJECTID_MIS.message)
                        return
                if self.request.arguments.has_key('keys'):
                    keys = eval(self.get_argument('keys'))
                else:
                    keys = None

                try:
                    sort = json.loads(self.get_argument('sort', '{}'))
                    idSort = sort.get('_id', -1)
                    sort = sort or None

                except Exception, e:
                    self.write(ERR_INVALID.message)
                    print e
                    return

                try:
                    if self.request.arguments.has_key('startId'):
                        startId = self.get_argument('startId')
                        if idSort == -1:
                            query["_id"] = {"$lt": ObjectId(startId)}
                        elif idSort == 1:
                            query["_id"] = {"$gt": ObjectId(startId)}
                    if self.request.arguments.has_key('limit'):
                        limit = int(self.get_argument('limit'))
                    else:
                        limit = 20
                except Exception:
                    self.write(ERR_INVALID.message)
                    return

                skip = 0
                try:
                    if self.request.arguments.has_key('skip'):
                        skip = int(self.get_argument('skip'))
                except Exception:
                    self.write(ERR_INVALID.message)
                    return

                if limit > 100:
                    self.write(ERR_INVALID.message)
                    return

                objs = classHelper.find(query, keys, sort, limit, skip)

            objects = []
            for obj in objs:
                mo = MeObject(className, obj, False)
                mo.overLoadGet = False
                if self.get_current_user() and not admin:
                    acl = MeACL(mo['acl'])
                    if not acl.readAccess(self.user):
                        continue
                self.filter_field(mo)
                objects.append(mo)
            self.write(json.dumps(objects, cls=MeEncoder))