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
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
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())
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
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
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()
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:
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
def relation(self, o1, o2): relateHelper = ClassHelper(self.className) return relateHelper.find({ o1.className + '._id': o1.objectId, o2.className + '._id': o2.objectId })
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