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 get(self, oid, child=False): classHelper = ClassHelper(self.className) obj = classHelper.get(oid) if obj==None: return False self.copySelf(obj, child) self.dirty.clear() return True
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 save(self): classHelper = ClassHelper(self.className) if self.objectId==None: obj = classHelper.create(self.dirty) self.objectId = obj['_id'] else: obj = classHelper.update(self.objectId, self.dirty) # print 'save',obj for k in obj: dict.__setitem__(self, k, obj[k]) self.dirty.clear()
def login(self, username, password): userHelper = ClassHelper(self.appDb, self.className) user = userHelper.find_one({ 'username': username, 'password': password }) if user != None: del (user['password']) self.copySelf(user) return True else: return False
def signUp(self): if self['username']==None or self['password']==None: raise ERR_NOPARA if len(self['username'])<=6 or len(self['password'])<=6: raise ERR_PARA helper = ClassHelper(self.appDb, self.className) print self; if(helper.find_one({'username': self['username']})): raise ERR_USER_TAKEN print 'xxxxxxxxxxxxxxyyyyyyyyy' return self.save()
def filterWord(self, userId): print len(sensitiveWord) # 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 print df 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 } } }) print df return self.sentence
def __init__(self, sentence, level=None): global sensitiveWord global df self.sentence = sentence # self.sentenceCut = list(jieba.cut(self.sentence)) # if not self.sensitiveWord: if not sensitiveWord: print "+" * 10 sensitiveWordHelper = ClassHelper("SensitiveWord") items = sensitiveWordHelper.find({}) for item in items: sensitiveWord[item['word']] = item # self.sensitiveWord[item['word']] = item # if not df: # if not self.df: # print "-" * 10 # self.df = cDfa(self.sensitiveWord.keys()) df = cDfa(sensitiveWord.keys())
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 relation(self, o1, o2): relateHelper = ClassHelper(self.className) return relateHelper.find({o1.className+'._id': o1.objectId, o2.className+'._id': o2.objectId})
def delete(oid): classHelper = ClassHelper(self.className) classHelper.delete(oid)