Пример #1
0
    def readAccess(self, user):
        if self.has_key('*') and self['*'].has_key(
                'read') and self['*']['read']:
            return True
        # 如果user不为*,那么必须有为MeUser
        # if not (type(user) is MeUser):
        #    return False

        # 如果明确指定了某个用户的权限,则不再检查Role
        if self.has_key(user.objectId) and self[user.objectId].has_key(
                'read') and self[user.objectId]['read']:
            return True
        # 检查role

        for k in self:
            if k.startswith('role:'):
                roleQuery = ClassHelper('Role')
                role = roleQuery.find_one({
                    'name': k[5:],
                    'user': user.objectId
                })
                # 如果有一个角色有读权限,那么就有读权限
                if role is not None and self[k].has_key(
                        'read') and self[k]['read']:
                    return True
        return False
Пример #2
0
 def fetch(self):
     roleClass = ClassHelper(self.className)
     role = roleClass.find_one({'name': self['name']})
     if role == None:
         return False
     self.dirty.clear()
     self.objectId = obj['_id']
     for k in obj:
         dict.__setitem__(self, k, obj[k])
     return True
Пример #3
0
 def __init__(self, sentence, level=None):
     global sensitiveWord
     global df
     self.sentence = sentence
     self.sentenceCut = list(jieba.cut(self.sentence))
     if not sensitiveWord:
         sensitiveWordHelper = ClassHelper("SensitiveWord")
         items = sensitiveWordHelper.find({})
         for item in items:
             sensitiveWord[item['word']] = item
         df = cDfa(sensitiveWord.keys())
Пример #4
0
 def login(self, username, password):
     userHelper = ClassHelper(self.className)
     user = userHelper.find_one({
         'username': username,
         'password': password
     })
     if user != None:
         self.copySelf(user)
         del (user['username'])
         del (user['password'])
         return True
     else:
         return False
Пример #5
0
    def filterWord(self, userId):
        # print self.sentenceCut
        # localSentence = self.sentence
        # print self.sentenceCut
        # for word in self.sensitiveWord:
        #     # for cutWord in self.sentenceCut:
        #     #     if len(cutWord) < 2:#两个字
        #     #         continue
        #     item = self.sensitiveWord[word]
        #     if word in self.sentenceCut:
        #         # localSentence = self.sentence.replace(word['word'],"666666")
        #         self.sentence = self.replaceWord
        #         if item['level'] in [1,2,3]:
        #             classHelper = ClassHelper("Violations")
        #             classHelper.create({
        #                 "party":userId,
        #                 "informer":"system",
        #                 "from":1,
        #                 "type":item['type'],
        #                 "detail":item["word"],
        #                 "acl":{"*":{'read':True}}
        #             })
        #         return self.sentence
        # return self.sentence

        word = df.filter(self.sentence)
        if word:
            self.sentence = self.replaceWord
            item = sensitiveWord[word]
            if item['level'] in [1, 2, 3]:
                classHelper = ClassHelper("Violations")
                classHelper.create({
                    "party": userId,
                    "informer": "system",
                    "from": 1,
                    "type": item['type'],
                    "detail": item["word"],
                    "acl": {
                        "*": {
                            'read': True
                        }
                    }
                })
        return self.sentence
Пример #6
0
    def loginWithoutPwd(self):
        appUserHelper = ClassHelper('develop', "AppUser")
        appUser = appUserHelper.find_one({'username': self['username']})
        obj = copy.deepcopy(self.dirty)
        if appUser == None:
            # 涉及到不同的应用,所以AppUser不存储bundleId和package
            if obj.has_key('bundleId'):
                del (obj['bundleId'])
            elif obj.has_key('package'):
                del (obj['package'])
            appUser = MeObject('develop', 'AppUser', obj)
            appUser.save()
        # 如果用户发生系统更新
        else:
            appUser = MeObject('develop', 'AppUser', appUser)
            if obj['system'] != appUser['system']:
                appUser['system'] = obj['system']
                appUser.save()

        userHelper = ClassHelper(self.appDb, 'User')
        user = userHelper.find_one({'username': obj['username']})
        if user == None or (not user.has_key('appUserId')):
            self['appUserId'] = appUser.objectId
            self.save()
        else:
            self.copySelf(user)
            self.dirty.clear()
Пример #7
0
    def get(self, followType):
        try:
            if self.request.arguments.has_key('userId'):
                userId = self.get_argument('userId')
        except Exception:
            self.write(ERR_NOPARA.message)
            return

        try:
            lastTime = None
            count = 10
            is_user = True
            if self.request.arguments.has_key('lastTime'):
                lastTime = self.get_argument('lastTime')

            if followType == "followee":  # == & is
                count = 100
                if self.request.arguments.has_key('count'):
                    count = int(self.get_argument('count'))
                    count = min(count, 100)
            elif followType == "follower":
                count = 20
                if self.request.arguments.has_key('count'):
                    count = int(self.get_argument('count'))
                    count = min(count, 20)

            if self.request.arguments.has_key('isUser'):
                if int(self.get_argument('isUser')) == 0:
                    is_user = False

            if followType == "followee":  # 关注   # == & is
                followList = FollowHelper.getFollowees(userId, lastTime, count)
            elif followType == "follower":  # 粉丝
                followList = FollowHelper.getFollowers(userId, lastTime, count, is_user)
            else:
                self.write(ERR_PATH_PERMISSION.message)
                return

            if followList is not None:
                for num in range(len(followList)):
                    try:
                        if followList[num]["UserInfo"]:
                            followList[num]['isUser'] = 1
                            userInput = followList[num]["UserInfo"]["user"]
                            cia = get_follow_ount(userInput, 1)
                            if cia:
                                followList[num]['countInfo'] = cia
                            if followType == "follower":
                                blacked = ClassHelper('Blacklist').find_one( {'user': userId, 'blacker': userInput})
                                if blacked:
                                    followList[num]['blackStatus'] = 1
                        else:
                            followList[num]["UserInfo"] = {}
                            followList[num]['isUser'] = 0
                        if "backupInfo" in followList[num] and followList[num]["backupInfo"]:
                            userInput = followList[num]["backupInfo"]["_id"]
                            cia = get_follow_ount(userInput, 0)
                            if cia:
                                followList[num]['countInfo'] = cia
                            if followType == "follower":
                                blacked = ClassHelper( 'Blacklist' ).find_one( {'user': userId, 'blacker': userInput} )
                                if blacked:
                                    followList[num]['blackStatus'] = 1
                        else:
                            followList[num]["backupInfo"] = {}
                    except Exception, ex:
                        log.err("FollowerHandler Err: %s", ex)

                for num in range(len(followList)):
                    del followList[num]["user"]
                    del followList[num]["_id"]
                    if followList[num].has_key( "followee" ):
                        del followList[num]["followee"]
                    if followList[num].has_key( "backupFollowee" ):
                        del followList[num]["backupFollowee"]

                    if followList[num].has_key( "UserInfo" ):
                        if followList[num]["UserInfo"]:
                            if followList[num]["UserInfo"].has_key( "nickName" ):
                                followList[num]["nickName"] = followList[num]["UserInfo"]["nickName"]
                            if followList[num]["UserInfo"].has_key( "avatar" ):
                                followList[num]["avatar"] = followList[num]["UserInfo"]["avatar"]
                            if followList[num]["UserInfo"].has_key( "address" ):
                                followList[num]["address"] = followList[num]["UserInfo"]["address"]
                            followList[num]["user"] = followList[num]["UserInfo"]["user"]
                        del followList[num]["UserInfo"]

                    if followList[num].has_key( "backupInfo" ):
                        if followList[num]["backupInfo"]:
                            if followList[num]["backupInfo"].has_key( "nickName" ):
                                followList[num]["nickName"] = followList[num]["backupInfo"]["nickName"]
                            if followList[num]["backupInfo"].has_key( "editAvatar" ):
                                followList[num]["avatar"] = followList[num]["backupInfo"]["editAvatar"]
                            elif followList[num]["backupInfo"].has_key( "avatar" ):
                                followList[num]["avatar"] = followList[num]["backupInfo"]["avatar"]
                            followList[num]["user"] = followList[num]["backupInfo"]["_id"]
                            if followList[num]["backupInfo"].has_key( "editRect" ):
                                followList[num]["rect"] = followList[num]["backupInfo"]["editRect"]
                            elif followList[num]["backupInfo"].has_key( "rect" ):
                                followList[num]["rect"] = followList[num]["backupInfo"]["rect"]
                            if followList[num].has_key( "rect" ):
                                rect = followList[num]["rect"]
                                rect = [int(i) for i in rect]
                                followList[num]["rect"] = rect
                        del followList[num]["backupInfo"]

                    if followList[num].has_key('countInfo') and followList[num]['countInfo']:
                        count_key = followList[num]['countInfo'].keys()
                        for key in count_key:
                            followList[num][key] = followList[num]['countInfo'][key]
                        del followList[num]["countInfo"]

                    if followType == "follower" and int( followList[num]["effect"] ) == 1:
                        followList[num]["relationStatus"] = 3
                    else:
                        followList[num]["relationStatus"] = followList[num]["effect"]
                    del followList[num]["effect"]
            else:
Пример #8
0
                                followList[num]["rect"] = rect
                        del followList[num]["backupInfo"]

                    if followList[num].has_key('countInfo') and followList[num]['countInfo']:
                        count_key = followList[num]['countInfo'].keys()
                        for key in count_key:
                            followList[num][key] = followList[num]['countInfo'][key]
                        del followList[num]["countInfo"]

                    if followType == "follower" and int( followList[num]["effect"] ) == 1:
                        followList[num]["relationStatus"] = 3
                    else:
                        followList[num]["relationStatus"] = followList[num]["effect"]
                    del followList[num]["effect"]
            else:
                self.write(ERR_INVALID.message)
                return
            # final data for querying
            successInfo = deepcopy(ERR_SUCCESS)
            successInfo.message["data"] = followList
            self.write(json.dumps(successInfo.message, cls=MeEncoder))
            # 计数 newFans_ 清空
            if followType == "follower":
                ClassHelper('StatCount').updateOne({'name': 'newFans_' + self.user['_id']},
                                                   {"$set": {'count': 0}},
                                                   upsert=True)
        except Exception, ex:
            data = deepcopy(ERR_INVALID)
            data.message['data'] = ex.message
            self.write(json.dumps(data.message, cls=MeEncoder))
            return
Пример #9
0
 def relation(self, o1, o2):
     relateHelper = ClassHelper(self.className)
     return relateHelper.find({
         o1.className + '._id': o1.objectId,
         o2.className + '._id': o2.objectId
     })
Пример #10
0
    def get(self):
        userHelper = ClassHelper("User")
        userMigrateHelper = ClassHelper("UserMigrate")

        userId = self.get_current_user()
        if not userId:
            log.err("DeviceMigrateHandler error,user not exist in cookie!")
            self.write(ERR_USER_NOTFOUND.message)
            return

        findUser = userHelper.find_one({'_sid': userId})
        if not findUser:
            log.err("DeviceMigrateHandler error,user not exist in User!")
            self.write(ERR_USER_NOTFOUND.message)
            return

        if not findUser.has_key('device'):
            log.err(
                "DeviceMigrateHandler error,user not exist without device!")
            self.write(ERR_USER_NOTFOUND.message)
            return

        try:
            migrate = userMigrateHelper.find_one({
                'user': userId,
                'device': findUser['device'],
                'isused': 0
            })
            if not migrate:
                query = {
                    'user': userId,
                    'device': findUser['device'],
                    'isused': 0
                }
                userMigrateHelper.updateOne(query, {
                    '$set': {
                        'createAt': datetime.now(),
                        'acl': {
                            userId: {
                                "write": 'true'
                            },
                            "*": {
                                "read": 'true'
                            }
                        }
                    }
                },
                                            upsert=True)
            else:
                import time
                createAt = migrate['createAt']
                curAt = datetime.now()
                gap = time.mktime(curAt.timetuple()) - time.mktime(
                    createAt.timetuple())
                if gap > 600:
                    userMigrateHelper.update(migrate['_id'],
                                             {'$set': {
                                                 'isused': 1
                                             }})
                    query = {
                        'user': userId,
                        'device': findUser['device'],
                        'isused': 0
                    }
                    userMigrateHelper.updateOne(query, {
                        '$set': {
                            'createAt': datetime.now(),
                            'acl': {
                                userId: {
                                    "write": 'true'
                                },
                                "*": {
                                    "read": 'true'
                                }
                            }
                        }
                    },
                                                upsert=True)
        except Exception, e:
            log.err("DeviceMigrateHandler error, %s", e)
            self.write(ERR_DB_OPERATION.message)
            return