示例#1
0
文件: tests.py 项目: maikz/1327
	def test_find_root_menu_items(self):
		sub_item = mommy.make(MenuItem, parent=self.root_menu_item)
		sub_sub_item = mommy.make(MenuItem, parent=self.sub_item)

		menu_items = [sub_sub_item, self.sub_sub_item, sub_item]
		root_menu_items = find_root_menu_items(menu_items)

		self.assertEqual(root_menu_items, set([self.root_menu_item]))
示例#2
0
def menu_items_index(request):
    if not request.user.is_superuser and len(
            get_objects_for_user(request.user,
                                 MenuItem.CHANGE_CHILDREN_PERMISSION_NAME,
                                 klass=MenuItem)) == 0:
        raise PermissionDenied

    main_menu_items = []
    footer_items = []

    items = find_root_menu_items([
        item for item in MenuItem.objects.filter(menu_type=MenuItem.MAIN_MENU,
                                                 children=None)
        if item.can_view_in_list(request.user)
    ])
    items = sorted(items, key=lambda x: x.order)

    for item in items:
        subitems = [
            subitem for subitem in MenuItem.objects.filter(
                menu_type=MenuItem.MAIN_MENU, parent=item).order_by('order')
            if subitem.can_view_in_list(request.user)
        ]
        if subitems:
            for subitem in subitems:
                subsubitems = [
                    subsubitem for subsubitem in
                    MenuItem.objects.filter(menu_type=MenuItem.MAIN_MENU,
                                            parent=subitem).order_by('order')
                    if subsubitem.can_view_in_list(request.user)
                ]
                if subsubitems:
                    subitem.subitems = subsubitems
            item.subitems = subitems
        main_menu_items.append(item)

    if request.user.is_superuser:  # only allow editing of footer items for superusers
        for item in MenuItem.objects.filter(menu_type=MenuItem.FOOTER,
                                            parent=None).order_by('order'):
            footer_items.append(item)

    return render(request, 'menu_items_index.html', {
        'main_menu_items': main_menu_items,
        'footer_items': footer_items
    })
示例#3
0
文件: views.py 项目: fsr-itse/1327
def menu_items_index(request):
	if not request.user.is_superuser and len(get_objects_for_user(request.user, MenuItem.CHANGE_CHILDREN_PERMISSION_NAME, klass=MenuItem)) == 0:
		raise PermissionDenied

	main_menu_items = []
	footer_items = []

	items = find_root_menu_items(
		[item for item in MenuItem.objects.filter(menu_type=MenuItem.MAIN_MENU, children=None) if item.can_view_in_list(request.user)]
	)
	items = sorted(items, key=lambda x: x.order)

	for item in items:
		subitems = [
			subitem for subitem in
			MenuItem.objects.filter(menu_type=MenuItem.MAIN_MENU, parent=item).order_by('order')
			if subitem.can_view_in_list(request.user)
		]
		if subitems:
			for subitem in subitems:
				subsubitems = [
					subsubitem for subsubitem in
					MenuItem.objects.filter(menu_type=MenuItem.MAIN_MENU, parent=subitem).order_by('order')
					if subsubitem.can_view_in_list(request.user)
				]
				if subsubitems:
					subitem.subitems = subsubitems
			item.subitems = subitems
		main_menu_items.append(item)

	if request.user.is_superuser:  # only allow editing of footer items for superusers
		for item in MenuItem.objects.filter(menu_type=MenuItem.FOOTER, parent=None).order_by('order'):
			footer_items.append(item)

	return render(request, 'menu_items_index.html', {
		'main_menu_items': main_menu_items,
		'footer_items': footer_items
	})