Пример #1
0
def menu_tree_json(roleId):
    simplecache = SimpleCache.getInstance()
    tree = [] 
    #未点击角色
    if(roleId == 0):
        for key_cache in simplecache:  
            obj_tmp = simplecache[key_cache]  
            obj_tmp['checked'] = False        
            tree.append(obj_tmp)
    #点击角色
    else:
        rcs_access_right = Rcs_Access_Right.query.filter_by(role_id=roleId).order_by("id").all()
        for key_cache in simplecache:  
            obj_tmp = simplecache[key_cache]
            obj_tmp['checked'] = False
            for obj_access_right in rcs_access_right:
                if(obj_tmp['levels'] != '4'): 
                    if(obj_tmp['id'] == obj_access_right.resource_id):
                        obj_tmp['checked'] = True
                        break;  
                elif(obj_tmp['levels'] == '4'):
                    if(obj_tmp['id'].split("_")[0] == obj_access_right.resource_id):
                        if(int(obj_access_right.operations) & int(obj_tmp['id'].split("_")[1]) != 0):
                            obj_tmp['checked'] = True
                        break; 
            tree.append(obj_tmp)
    return helpers.show_result_content(tree) # 返回json
Пример #2
0
def readMenuXml(path):
	#简单缓存
	# Initialize
	SimpleCache()
	# Getting instance
	simplecache = SimpleCache.getInstance()

	tree = etree.parse(path)#将xml解析为树结构
	root = tree.getroot()#获得该树的树根
	
	for level_1 in root:#这样便可以遍历根元素的所有子元素(这里是article元素)
		id=level_1.get("id")#用.get("属性名")可以得到article元素相应属性的值
		code=level_1.get("code")
		name=level_1.get("name")
		url=level_1.get("url")
		operations = level_1.get("operations")
		if(id == None):
			continue
		simplecache.set(id,{'id':id,'code':code,'name':name,'url':url,'levels':'1','pId':root.get("id"),'operations':0,'open':1})
		
		for level_2 in level_1:#遍历article元素的所有子元素(这里是指article的author,name,volume,year等)
			id=level_2.get("id")#用.get("属性名")可以得到article元素相应属性的值
			code=level_2.get("code")
			name=level_2.get("name")
			url=level_2.get("url")
			operations = level_2.get("operations")
			index = level_2.get("index")
			if(id == None):
				continue
			simplecache.set(id,{'id':id,'code':code,'name':name,'url':url,'levels':'2','pId':level_1.get("id"),'index':index,'operations':0,'open':0})
			
			for level_3 in level_2:#遍历article元素的所有子元素(这里是指article的author,name,volume,year等)
				id=level_3.get("id")#用.get("属性名")可以得到article元素相应属性的值
				code=level_3.get("code")
				name=level_3.get("name")
				url=level_3.get("url")
				operations = level_3.get("operations")
				if(id == None):
					continue
				simplecache.set(id,{'id':id,'code':code,'name':name,'url':url,'levels':'3','pId':level_2.get("id"),'operations':0,'open':1})
				for type in operations.split("|"):
					op_id = ''.join([id,'_',getresource(type)['code']])
					simplecache.set(op_id,{'id':op_id,'code':code,'name':getresource(type)['name'],'url':url,'levels':'4','pId':id,'operations':getresource(type)['code'],'open':1})
Пример #3
0
def index():
    simplecache = SimpleCache.getInstance()
    tree = []
    userrole = UserRole.query.filter_by(user_id=current_user.id).first()
    if userrole:
        role_id = userrole.role_id
        rcs_access_right = Rcs_Access_Right.query.filter_by(role_id=role_id).order_by("id").all()
        
        if(current_user.login_name == 'admin'):
            for key_cache in simplecache:
                obj_tmp = simplecache[key_cache]
                if(obj_tmp['levels'] == '2' or obj_tmp['levels'] == '3'):
                    tree.append(obj_tmp)
        else:
            for key_cache in simplecache:  
                obj_tmp = simplecache[key_cache]
                obj_tmp['checked'] = False
                for obj_access_right in rcs_access_right:
                    if(obj_tmp['levels'] != '4'): 
                        if(obj_tmp['id'] == obj_access_right.resource_id):
                            obj_tmp['checked'] = True
                            break;  
                    elif(obj_tmp['levels'] == '4'):
                        if(obj_tmp['id'].split("_")[0] == obj_access_right.resource_id):
                            if(int(obj_access_right.operations) & int(obj_tmp['id'].split("_")[1]) != 0):
                                obj_tmp['checked'] = True
                            break; 
                tree.append(obj_tmp)
                
            dellist = []
            for obj in tree:
                if(obj['levels'] == '1' or obj['levels'] == '4' or obj['checked'] == False):
                    dellist.append(obj)
            for obj in dellist:
                tree.remove(obj)
    return render_template("index.html",tree=tree)