#!/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 = [( 10, [ SectionItem('administration', _(u"Administration"), childs=[SectionItem('person', _(u"Person"), childs=[ MenuItem('person_creation', _(u"Creation"), model=models.Person, access_controls=['add_person', 'add_own_person']), MenuItem('person_modification', _(u"Modification"), model=models.Person, access_controls=['change_person', 'change_own_person']), ]), MenuItem('account_management', _(u"Account management"), model=models.IshtarUser, access_controls=['add_ishtaruser',]), ]) ] )] for app in settings.INSTALLED_APPS: mod = __import__(app, fromlist=['ishtar_menu']) if hasattr(mod, 'ishtar_menu'): menu = getattr(mod, 'ishtar_menu') _extra_menus.append((menu.ORDER, menu.MENU_SECTIONS)) _section_items = [] for order, menu in sorted(_extra_menus, key=lambda x:x[0]): _section_items += menu """ SectionItem('file_management', _(u"Archaeological file"), childs=[ MenuItem('file_search', _(u"Search"), model=models.File, access_controls=['view_file', 'view_own_file']), MenuItem('file_creation', _(u"Creation"), model=models.File, access_controls=['add_file', 'add_own_file']), MenuItem('file_modification', _(u"Modification"), model=models.File, access_controls=['change_file', 'change_own_file']), MenuItem('file_closing', _(u"Closing"), model=models.File, access_controls=['change_file', 'change_own_file']), MenuItem('file_deletion', _(u"Deletion"), model=models.File, access_controls=['delete_file', 'delete_own_file']), SectionItem('admin_act_files', _(u"Administrative act"), childs=[ MenuItem('file_administrativeactfile', _(u"Add"), model=models.Operation, access_controls=['change_file', 'change_own_file']), MenuItem('file_administrativeactfile_modification', _(u"Modification"), model=models.AdministrativeAct, access_controls=['change_file', 'change_own_file']), MenuItem('file_administrativeactfile_deletion', _(u"Deletion"), model=models.AdministrativeAct, access_controls=['delete_file', 'delete_own_file']), ],), ]), SectionItem('operation_management', _(u"Operation"), childs=[ MenuItem('operation_search', _(u"Search"), model=models.Operation, access_controls=['view_operation', 'view_own_operation']), MenuItem('operation_creation', _(u"Creation"), model=models.Operation, access_controls=['add_operation', 'add_own_operation']), MenuItem('operation_modification', _(u"Modification"), model=models.Operation, access_controls=['change_operation', 'change_own_operation']), MenuItem('operation_closing', _(u"Closing"), model=models.Operation, access_controls=['change_operation', 'change_own_operation']), MenuItem('operation_deletion', _(u"Deletion"), model=models.Operation, access_controls=['change_operation', 'change_own_operation']), SectionItem('admin_act_operations', _(u"Administrative act"), childs=[ MenuItem('operation_administrativeactop', _(u"Add"), model=models.Operation, access_controls=['change_operation', 'change_own_operation']), MenuItem('operation_administrativeactop_modification', _(u"Modification"), model=models.AdministrativeAct, access_controls=['change_operation', 'change_own_operation']), MenuItem('operation_administrativeactop_deletion', _(u"Deletion"), model=models.AdministrativeAct, access_controls=['operation_deletion', 'delete_own_operation']), ],), ]), SectionItem('record_management', _(u"Context record"), childs=[ MenuItem('record_search', _(u"Search"), model=models.ContextRecord, access_controls=['view_contextrecord', 'view_own_contextrecord']), MenuItem('record_creation', _(u"Creation"), model=models.ContextRecord, access_controls=['add_contextrecord', 'add_own_contextrecord']), MenuItem('record_modification', _(u"Modification"), model=models.ContextRecord, access_controls=['change_contextrecord', 'change_own_contextrecord']), MenuItem('record_deletion', _(u"Deletion"), model=models.ContextRecord, access_controls=['delete_contextrecord', 'delete_own_contextrecord']), ]), SectionItem('item_management', _(u"Item"), childs=[ MenuItem('item_search', _(u"Search"), model=models.Item, access_controls=['view_item', 'view_own_item']), MenuItem('item_creation', _(u"Creation"), model=models.Item, access_controls=['add_item', 'add_own_item']), MenuItem('item_modification', _(u"Modification"), model=models.Item, access_controls=['change_item', 'change_own_item']), MenuItem('warehouse_packaging', _(u"Packaging"), model=models.Treatment, access_controls=['add_treatment', 'add_own_treatment']), #MenuItem('treatment_creation', _(u"Add a treatment"), # model=models.Treatment, # access_controls=['add_treatment', # 'add_own_treatment']), ]), SectionItem('source_management', _(u"Documentation"), childs=[ SectionItem('admin_add_sources', _(u"Add"), childs=[ MenuItem('operation_source_creation', _(u"Related to an operation"), model=models.OperationSource, access_controls=['change_operation', 'change_own_operation']), MenuItem('record_source_creation', _(u"Related to a context record"), model=models.ContextRecordSource, access_controls=['change_contextrecord', 'change_own_contextrecord']), MenuItem('item_source_creation', _(u"Related to an archaelogical item"), model=models.ItemSource, access_controls=['change_item', 'change_own_item']), ]), SectionItem('admin_mod_sources', _(u"Modify"), childs=[ MenuItem('operation_source_modification', _(u"Related to an operation"), model=models.OperationSource, access_controls=['change_operation', 'change_own_operation']), MenuItem('record_source_modification', _(u"Related to a context record"), model=models.ContextRecordSource, access_controls=['change_contextrecord', 'change_own_contextrecord']), MenuItem('item_source_modification', _(u"Related to an archaelogical item"), model=models.ItemSource, access_controls=['change_item', 'change_own_item']), ]), SectionItem('admin_del_sources', _(u"Deletion"), childs=[ MenuItem('operation_source_deletion', _(u"Related to an operation"), model=models.OperationSource, access_controls=['change_operation', 'change_own_operation']), MenuItem('record_source_deletion', _(u"Related to a context record"), model=models.ContextRecordSource, access_controls=['change_contextrecord', 'change_own_contextrecord']), MenuItem('item_source_deletion', _(u"Related to an archaelogical item"), model=models.ItemSource, access_controls=['change_item', 'change_own_item']), ]), ]), #SectionItem('warehouse', _(u"Warehouse"), # childs=[ # MenuItem('warehouse_inventory', _(u"Inventory"), # model=models.Warehouse, # access_controls=['change_warehouse',]), # MenuItem('warehouse_recording', _(u"Recording"), # model=models.Treatment, # access_controls=['add_treatment', 'add_own_treatment']), # MenuItem('warehouse_lend', _(u"Lending"), # model=models.Treatment, # access_controls=['add_treatment', 'add_own_treatment']), # ]), 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()