Пример #1
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)
Пример #2
0
 def getCountUser(self, userId, isUser=1):
     item = profile(userId, isUser)
     obj = copy.deepcopy(item)
     item['assignersCount'] = item.get('assigners', 0)
     item['followersCount'] = item.get('followers', 0)
     item['imageCount'] = item.get('medias', 0)
     faceHelper = ClassHelper('Face')
     toClaimCount = faceHelper.query_count({
         'assign.user': userId,
         'assign.status': 0
     }) or 0
     item['toClaimCount'] = toClaimCount
     if item['assignersCount'] and item['followersCount'] and item[
             'imageCount'] and item['toClaimCount']:
         return item
     return obj
Пример #3
0
def get_follow_ount(userId, isUser=1):
    '''
    # 粉丝数:Followee (backup)followee, 照片数(认领的照片):Face assign.user,贡献者个数:Face assign.assigner uploader
    :param userId: 注册用户Id
    :return:
    '''

    # classHelper = ClassHelper( 'StatCount' )
    # try:
    #     if is_mine:
    #         result = classHelper.find( {'name': {
    #             '$in': ['albumMost_' + userId, 'albumAnimal_' + userId, 'albumBaby_' + userId,
    #                     'albumChowhound_' + userId, 'followers_' + userId, 'medias_' + userId, 'followees_' + userId,
    #                     'uploaders_' + userId, 'faces_' + userId, 'assigners_' + userId]}}, {"_id": 0} )
    #     else:
    #         result = classHelper.find( {'name': {
    #             '$in': ['followers_' + userId, 'medias_' + userId, 'followees_' + userId, 'assigners_' + userId]}},
    #                                    {"_id": 0} )
    # except Exception, e:
    #     log.err( "%s find StatCount error", userId )
    # if result:
    #     return result
    # else:
    #     return None
    #
    obj = {}
    try:
        followeeHelper = ClassHelper('Followee')
        faceHelper = ClassHelper('Face')
        if isUser:
            # 关注数
            followeesCount = followeeHelper.query_count({
                'user': userId,
                "effect": {
                    "$gt": 0
                }
            }) or 0
            obj['followees'] = followeesCount
            mediasCount = faceHelper.query_count({
                'assign.user': userId,
                'assign.status': 1
            }) or 0
            obj['medias'] = mediasCount
            # 粉丝数
            followersCount = followeeHelper.query_count({
                'followee': userId,
                "effect": {
                    "$gt": 0
                }
            }) or 0
            obj['followers'] = followersCount
        else:
            mediaHelper = ClassHelper('Media')
            mediasCount = mediaHelper.query_count({'backupUser': userId})
            obj['medias'] = mediasCount
            # 粉丝数
            followersCount = followeeHelper.query_count({
                'backupFollowee': userId,
                "effect": {
                    "$gt": 0
                }
            }) or 0
            obj['followers'] = followersCount

        # 贡献者数
        assignersCount = faceHelper.distinct(
            {
                'assign.user': userId,
                'assign.status': 1
            }, "assign.assigner") or []
        obj['assigners'] = len(assignersCount.cursor)

    except Exception, ex:
        log.err(ex.message)
        return None
Пример #4
0
def getIFCCount(userId=None, backupUser=None, keys=None):
    '''
    # 粉丝数:Followee (backup)followee, 照片数(认领的照片):Face assign.user,贡献者个数:Face assign.assigner uploader
    :param userId: 注册用户Id
    :param backupUser: 非注册用户Id
    :param keys: 查询某一个Count
    :return: 
    '''
    uid = userId or backupUser
    isUser = bool(userId)
    condition = {
        'imageCount': {
            'classname': 'Face',
            'key': 'imageCount',
            'condition': {
                'assign.status': 1,
                'assign.user': uid
            },
            'method': 1
        },
        'fansCount': {
            'classname': 'Followee',
            'key': 'fansCount',
            'condition': {
                'followee': uid,
                'effect': 1
            },
            'method': 1
        },
        'contributeCount': {
            'classname': 'Face',
            'distinct': 'assign.assigner',
            'key': 'contributeCount',
            'condition': {
                'assign.status': 1,
                'assign.user': uid
            },
            'method': 2
        }
    }
    where = []
    if not keys:
        if isUser:
            keys = {'imageCount': 1, 'fansCount': 1, 'contributeCount': 1}
        else:
            keys = {'fansCount': 1}
    for key in keys:
        where.append(condition[key])

    result = {}
    for item in where:  # 获取三种个数
        className = item['classname']
        query = item["condition"]
        try:
            if item['method'] == 1:
                classHelper = ClassHelper(className)
                result[item['key']] = classHelper.query_count(query)
            elif item['method'] == 2:
                classHelper = ClassHelper(className)
                obj = classHelper.distinct(query, item['distinct'])
                result[item['key']] = len(obj)
        except Exception, e:
            log.err("%s param error", item['key'])
Пример #5
0
def profile(userId, isUser=1):  # isUser:1真实用户,0backupUser
    obj = {
        'followees': 0,
        'relationStatus': 0,
        'blackStatus': 0,
        'isUser': isUser  # 1为user,0为backupUser
    }
    try:
        followeeHelper = ClassHelper('Followee')
        faceHelper = ClassHelper('Face')
        if isUser:
            userInfoHelper = ClassHelper('UserInfo')
            item = userInfoHelper.find_one({"user": userId})
            obj['user'] = item['user']
            # 关注数
            followeesCount = followeeHelper.query_count({
                'user': userId,
                "effect": {
                    "$gt": 0
                }
            }) or 0
            obj['followees'] = followeesCount
            # 照片数
            mediasCount = faceHelper.query_count({
                'assign.user': userId,
                'assign.status': 1
            }) or 0
            obj['medias'] = mediasCount
            # 粉丝数
            followersCount = followeeHelper.query_count({
                'followee': userId,
                "effect": {
                    "$gt": 0
                }
            }) or 0
            obj['followers'] = followersCount
        else:
            backupUserHelper = ClassHelper('BackupUser')
            item = backupUserHelper.find_one({"_id": userId})
            # 照片数
            mediaHelper = ClassHelper('Media')
            mediasCount = mediaHelper.query_count({'backupUser': userId})

            # 粉丝数
            followersCount = followeeHelper.query_count({
                'backupFollowee': userId,
                "effect": {
                    "$gt": 0
                }
            }) or 0
            obj['followers'] = followersCount

            obj['medias'] = mediasCount
            obj['user'] = item['_id']

        if item:
            obj["nickname"] = item.get("nickName", None)
            obj["avatar"] = item.get("editAvatar", None) or item.get(
                "avatar", None)
            obj["age"] = item.get("age", 0)
            obj["address"] = item.get("address", None)
            obj["gender"] = item.get("gender", None)
            rect = item.get("editRect", None) or item.get("rect", None)
            if rect:
                rect = [int(i) for i in rect]
            obj['rect'] = rect
            obj["_id"] = item['_id']

        # 贡献者数
        assignersCount = faceHelper.distinct(
            {
                'assign.user': userId,
                'assign.status': 1
            }, "assign.assigner") or []
        obj['assigners'] = len(assignersCount.cursor)

    except Exception, ex:
        log.err(ex.message)
        return ERR_INVALID.message
Пример #6
0
 def getCount(self, className, query):
     classHelper = ClassHelper(className)
     result = classHelper.query_count(query)
     return result
Пример #7
0
    def userCountTwo(self, userId, isUser=1):  #isUser:1真实用户,0backupUser
        obj = {
            'followeesCount': 0,
            'followeeStatus': 0,
            'blackStatus': 0,
            'isUser': isUser  #1为user,0为backupUser
        }
        try:
            followeeHelper = ClassHelper('Followee')
            faceHelper = ClassHelper('Face')
            if isUser:
                userInfoHelper = ClassHelper('UserInfo')
                item = userInfoHelper.find_one({"user": userId})
                obj['user'] = item['user']
                # obj["nickName"] = item.get("nickName",None)
                # obj["avatar"] = item.get("avatar", None)
                # 关注数
                followeesCount = followeeHelper.query_count({
                    'user': userId,
                    "effect": {
                        "$gt": 0
                    }
                }) or 0
                obj['followeesCount'] = followeesCount
            else:
                backupUserHelper = ClassHelper('BackupUser')
                item = backupUserHelper.find_one({"_id": userId})
                obj['user'] = item['_id']

            if item:
                obj["nickName"] = item.get("nickName", None)
                obj["avatar"] = item.get("avatar", None)
                obj["age"] = item.get("age", 0)
                obj["address"] = item.get("address", None)
                obj['rect'] = item.get("rect", None)
                obj["_id"] = item['_id']
            #粉丝数
            followersCount = followeeHelper.query_count({
                'followee': userId,
                "effect": {
                    "$gt": 0
                }
            }) or 0
            obj['followersCount'] = followersCount
            #贡献者数
            assignersCount = faceHelper.distinct({'assign.user': userId},
                                                 "assign.assigner") or []
            obj['assignersCount'] = len(assignersCount.cursor)
            #照片数
            mediasCount = faceHelper.query_count({'assign.user': userId}) or 0
            obj['mediasCount'] = mediasCount
            if self.user["_id"] != userId:
                #关注状态

                item = followeeHelper.find_one({
                    "user": self.user['_id'],
                    "followee": userId,
                    "effect": {
                        "$gt": 0
                    }
                })
                if item:  #0 没有关系 1 关注 2 相互关注 3 粉丝关系
                    obj['followeeStatus'] = item['effect']
                else:
                    item = followeeHelper.find_one({
                        "followee": self.user['_id'],
                        "user": userId
                    })
                    if item:
                        obj['followeeStatus'] = 3
                #拉黑状态
                blackHelper = ClassHelper('Blacklist')
                item = blackHelper.find_one({
                    "user": self.user['_id'],
                    "blacker": userId,
                    "effect": {
                        "$gt": 0
                    }
                })
                if item:
                    obj['blackStatus'] = 1
        except Exception, ex:
            log.err(ex.message)
            return ERR_INVALID.message