#!/usr/bin/env python # -*- coding: utf-8 -*- # Copyright (C) 2010-2012 Étienne Loks # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # See the file COPYING for details. """ Menus """ from django.conf import settings from django.utils.translation import ugettext_lazy as _ from menu_base import SectionItem, MenuItem import models _extra_menus = [] # collect menu from INSTALLED_APPS for app in settings.INSTALLED_APPS: mod = __import__(app, fromlist=['ishtar_menu']) if hasattr(mod, 'ishtar_menu'): menu = getattr(mod, 'ishtar_menu') _extra_menus += menu.MENU_SECTIONS # sort __section_items = [menu for order, menu in sorted(_extra_menus, key=lambda x:x[0])] print __section_items # regroup menus _section_items, __keys = [], [] for section_item in __section_items: print section_item if section_item.idx not in __keys: __keys.append(section_item.idx) _section_items.append(section_item) continue _section_items[_section_items.index(section_item.idx)].childs.append( section_item.childs) print _section_items """ SectionItem('dashboard', _(u"Dashboard"), childs=[ MenuItem('dashboard_main', _(u"General informations"), model=models.File, access_controls=['change_file', 'change_own_file']), MenuItem('dashboard_file', _(u"Archaeological files"), model=models.File, access_controls=['change_file', 'change_own_file']), MenuItem('dashboard_operation', _(u"Operations"), model=models.Operation, access_controls=['change_operation', 'change_own_operation']), #MenuItem('dashboard_treatment', _(u"Treatments"), # model=models.Treatment, # access_controls=['change_treatment',]), #MenuItem('dashboard_warehouse', _(u"Warehouses"), # model=models.Warehouse, # access_controls=['change_warehouse',]), ]), ] """ class Menu: childs = _section_items def __init__(self, user): self.user = user self.initialized = False self.items = {} def init(self): if self.initialized: return self.items = {} for main_menu in self.childs: main_menu.set_items(self.user, self.items) self.initialized = True menu = Menu(None) menu.init()