summaryrefslogtreecommitdiff
path: root/ishtar/ishtar_base/menus.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar/ishtar_base/menus.py')
-rw-r--r--ishtar/ishtar_base/menus.py331
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()