diff options
Diffstat (limited to 'ishtar/ishtar_base/menus.py')
-rw-r--r-- | ishtar/ishtar_base/menus.py | 331 |
1 files changed, 0 insertions, 331 deletions
diff --git a/ishtar/ishtar_base/menus.py b/ishtar/ishtar_base/menus.py deleted file mode 100644 index 79355a6be..000000000 --- a/ishtar/ishtar_base/menus.py +++ /dev/null @@ -1,331 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -# Copyright (C) 2010-2011 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet> - -# 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 <http://www.gnu.org/licenses/>. - -# See the file COPYING for details. - -""" -Menus -""" - -from django.utils.translation import ugettext_lazy as _ - -import models - -class SectionItem: - def __init__(self, idx, label, childs=[]): - self.idx = idx - self.label = label - self.childs = childs - self.available = False - self.items = {} - - def can_be_available(self, user): - for child in self.childs: - if child.can_be_available(user): - return True - return False - - def is_available(self, user, obj=None): - for child in self.childs: - if child.is_available(user, obj): - return True - return False - - def set_items(self, user, items): - if user: - self.available = self.can_be_available(user) - for child in self.childs: - child.set_items(user, items) - items[child.idx] = child - -class MenuItem: - def __init__(self, idx, label, model=None, access_controls=[]): - self.idx = idx - self.label = label - self.model = model - self.access_controls = access_controls - self.available = False - - def can_be_available(self, user): - if not self.access_controls: - return True - for access_control in self.access_controls: - access_control = self.model._meta.app_label + '.' + access_control - if user.has_perm(access_control, self.model): - return True - # manage by person type - if hasattr(user, 'ishtaruser'): - person_type = user.ishtaruser.person.person_type - if person_type.rights.filter(wizard__url_name=self.idx).count(): - return True - return False - - def is_available(self, user, obj=None): - if not self.access_controls: - return True - for access_control in self.access_controls: - access_control = self.model._meta.app_label + '.' + access_control - if user.has_perm(access_control, self.model, obj): - return True - # manage by person type - if hasattr(user, 'ishtaruser'): - person_type = user.ishtaruser.person.person_type - if person_type.rights.filter(wizard__url_name=self.idx).count(): - return True - return False - - def set_items(self, user, items): - if user: - self.available = self.can_be_available(user) - -class Menu: - def __init__(self, user): - self.user = user - self.initialized = False - self.childs = [ - 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',]), - ]), - 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',]), - ]), - ] - 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() |