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() | 
