diff options
Diffstat (limited to 'ishtar_common')
| -rw-r--r-- | ishtar_common/ishtar_menu.py | 141 | ||||
| -rw-r--r-- | ishtar_common/urls.py | 63 | ||||
| -rw-r--r-- | ishtar_common/wizards.py | 21 | 
3 files changed, 140 insertions, 85 deletions
diff --git a/ishtar_common/ishtar_menu.py b/ishtar_common/ishtar_menu.py index b02136841..30cba6735 100644 --- a/ishtar_common/ishtar_menu.py +++ b/ishtar_common/ishtar_menu.py @@ -19,78 +19,93 @@  from django.utils.translation import ugettext_lazy as _ -from archaeological_operations.models import Operation  from ishtar_common.menu_base import SectionItem, MenuItem  import models +# be carreful: each access_controls must be relevant with check_rights in urls +  MENU_SECTIONS = [      (5, SectionItem('admin', _(u"Administration"), -            childs=[ -                MenuItem('account_management', _(u"Account management"), -                    model=models.IshtarUser, -                    access_controls=['add_ishtaruser',]), -                MenuItem('admin-globalvar', _(u"Global variables"), -                    model=models.GlobalVar, -                    access_controls=['add_globalvar',]), -            ]) +     childs=[ +        MenuItem('account_management', _(u"Account management"), +                 model=models.IshtarUser, +                 access_controls=['add_ishtaruser', ]), +        MenuItem('admin-globalvar', _(u"Global variables"), +                 model=models.GlobalVar, +                 access_controls=['add_globalvar', ]), +    ])      ),      (10, SectionItem('administration', _(u"Directory"), +     childs=[ +        SectionItem( +            'person', _(u"Person"),              childs=[ -                SectionItem('person', _(u"Person"), -                childs=[ -                    MenuItem('person_search', _(u"Search"), -                        model=models.Person, -                        access_controls=['add_person', 'add_own_person']), -                    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('person_merge', _(u"Merge"), -                        model=models.Person, -                        access_controls=['merge_person',]), -                    MenuItem('person_deletion', _(u"Delete"), -                        model=models.Person, -                        access_controls=['change_person', 'change_own_person']), -                    ]), -                SectionItem('organization', _(u"Organization"), -                childs=[ -                    MenuItem('organization_search', _(u"Search"), -                        model=models.Organization, -                        access_controls=['add_organization', -                                         'add_own_organization']), -                    MenuItem('organization_creation', _(u"Creation"), -                        model=models.Organization, -                        access_controls=['add_organization', -                                         'add_own_organization']), -                    MenuItem('organization_modification', _(u"Modification"), -                        model=models.Organization, -                        access_controls=['change_organization', -                                         'change_own_organization']), -                    MenuItem('organization_merge', _(u"Merge"), -                        model=models.Organization, -                        access_controls=['merge_organization',]), -                    MenuItem('organization_deletion', _(u"Delete"), -                        model=models.Organization, -                        access_controls=['change_organization', -                                         'change_own_organization']), -                    ]), -            ]) -    ), -    (15, SectionItem('imports', _(u"Imports"), +                MenuItem( +                    'person_search', _(u"Search"), +                    model=models.Person, +                    access_controls=['add_person']), +                MenuItem( +                    'person_creation', _(u"Creation"), +                    model=models.Person, +                    access_controls=['add_person']), +                MenuItem( +                    'person_modification', _(u"Modification"), +                    model=models.Person, +                    access_controls=['change_person', 'change_own_person']), +                MenuItem( +                    'person_merge', _(u"Merge"), +                    model=models.Person, +                    access_controls=['merge_person']), +                MenuItem( +                    'person_deletion', _(u"Delete"), +                    model=models.Person, +                    access_controls=['change_person', 'change_own_person']), +            ]), +        SectionItem( +            'organization', _(u"Organization"),              childs=[ -                MenuItem('import-new', _(u"New import"), -                    model=models.Import, -                    access_controls=['change_import']), -                MenuItem('import-list', _(u"Current imports"), -                    model=models.Import, -                    access_controls=['change_import']), -                MenuItem('import-list-old', _(u"Old imports"), -                    model=models.Import, -                    access_controls=['change_import']), -            ]) +                MenuItem( +                    'organization_search', _(u"Search"), +                    model=models.Organization, +                    access_controls=['add_organization', +                                     'add_own_organization']), +                MenuItem( +                    'organization_creation', _(u"Creation"), +                    model=models.Organization, +                    access_controls=['add_organization', +                                     'add_own_organization']), +                MenuItem( +                    'organization_modification', _(u"Modification"), +                    model=models.Organization, +                    access_controls=['change_organization', +                                     'change_own_organization']), +                MenuItem( +                    'organization_merge', _(u"Merge"), +                    model=models.Organization, +                    access_controls=['merge_organization']), +                MenuItem( +                    'organization_deletion', _(u"Delete"), +                    model=models.Organization, +                    access_controls=['change_organization', +                                     'change_own_organization']), +            ]), +    ])      ), +    (15, SectionItem( +        'imports', _(u"Imports"), +        childs=[ +            MenuItem( +                'import-new', _(u"New import"), +                model=models.Import, +                access_controls=['change_import']), +            MenuItem( +                'import-list', _(u"Current imports"), +                model=models.Import, +                access_controls=['change_import']), +            MenuItem( +                'import-list-old', _(u"Old imports"), +                model=models.Import, +                access_controls=['change_import']), +        ])),  ] - diff --git a/ishtar_common/urls.py b/ishtar_common/urls.py index 70109a2f3..036494354 100644 --- a/ishtar_common/urls.py +++ b/ishtar_common/urls.py @@ -24,9 +24,9 @@ from django.conf.urls.static import static  from menus import menu  from ishtar_common import views +from ishtar_common.wizards import check_rights -urlpatterns, actions = [], [] - +# be carreful: each check_rights must be relevant with ishtar_menu  # forms  urlpatterns = patterns( @@ -35,48 +35,71 @@ urlpatterns = patterns(      url(r'^i18n/', include('django.conf.urls.i18n')),      # General      url(r'person_search/(?P<step>.+)?$', -        views.person_search_wizard, name='person_search'), +        check_rights(['add_person'])( +            views.person_search_wizard), name='person_search'),      url(r'person_creation/(?P<step>.+)?$', -        views.person_creation_wizard, name='person_creation'), +        check_rights(['add_person'])( +            views.person_creation_wizard), name='person_creation'),      url(r'person_modification/(?P<step>.+)?$', -        views.person_modification_wizard, name='person_modification'), +        check_rights(['change_person', 'change_own_person'])( +            views.person_modification_wizard), name='person_modification'),      url(r'person_deletion/(?P<step>.+)?$', -        views.person_deletion_wizard, name='person_deletion'), +        check_rights(['change_person', 'change_own_person'])( +            views.person_deletion_wizard), name='person_deletion'),      url(r'^person-edit/$', -        views.PersonCreate.as_view(), name='person_create'), +        check_rights(['add_person'])( +            views.PersonCreate.as_view()), name='person_create'),      url(r'^person-edit/(?P<pk>\d+)$', -        views.PersonEdit.as_view(), name='person_edit'), +        check_rights(['change_person', 'change_own_person'])( +            views.PersonEdit.as_view()), name='person_edit'),      url(r'organization_search/(?P<step>.+)?$', -        views.organization_search_wizard, name='organization_search'), +        check_rights(['add_organization'])( +            views.organization_search_wizard), name='organization_search'),      url(r'organization_creation/(?P<step>.+)?$', -        views.organization_creation_wizard, name='organization_creation'), +        check_rights(['add_organization'])( +            views.organization_creation_wizard), name='organization_creation'),      url(r'organization_modification/(?P<step>.+)?$', -        views.organization_modification_wizard, +        check_rights(['change_organization', 'change_own_organization'])( +            views.organization_modification_wizard),          name='organization_modification'),      url(r'organization_deletion/(?P<step>.+)?$', -        views.organization_deletion_wizard, name='organization_deletion'), +        check_rights(['change_organization', 'change_own_organization'])( +            views.organization_deletion_wizard), name='organization_deletion'),      url(r'organization-edit/$', -        views.OrganizationCreate.as_view(), name='organization_create'), +        check_rights(['add_organization'])( +            views.OrganizationCreate.as_view()), name='organization_create'),      url(r'organization-edit/(?P<pk>\d+)$', -        views.OrganizationEdit.as_view(), name='organization_edit'), +        check_rights(['change_organization', 'change_own_organization'])( +            views.OrganizationEdit.as_view()), name='organization_edit'),      url(r'organization-person-edit/$', -        views.OrganizationPersonCreate.as_view(), +        check_rights(['add_organization'])( +            views.OrganizationPersonCreate.as_view()),          name='organization_person_create'),      url(r'organization-person-edit/(?P<pk>\d+)$', -        views.OrganizationPersonEdit.as_view(), +        check_rights(['change_organization', 'change_own_organization'])( +            views.OrganizationPersonEdit.as_view()),          name='organization_person_edit'),      url(r'account_management/(?P<step>.+)?$', -        views.account_management_wizard, name='account_management'), -    url(r'^import-new/$', views.NewImportView.as_view(), name='new_import'), -    url(r'^import-list/$', views.ImportListView.as_view(), +        check_rights(['add_ishtaruser'])( +            views.account_management_wizard), name='account_management'), +    url(r'^import-new/$', +        check_rights(['change_import'])( +            views.NewImportView.as_view()), name='new_import'), +    url(r'^import-list/$', +        check_rights(['change_import'])( +            views.ImportListView.as_view()),          name='current_imports'), -    url(r'^import-list-old/$', views.ImportOldListView.as_view(), +    url(r'^import-list-old/$', +        check_rights(['change_import'])( +            views.ImportOldListView.as_view()),          name='old_imports'),      url(r'^import-delete/(?P<pk>[0-9]+)/$',          views.ImportDeleteView.as_view(), name='import_delete'),      url(r'^import-link-unmatched/(?P<pk>[0-9]+)/$',          views.ImportLinkView.as_view(), name='import_link_unmatched'),  ) + +actions = []  for section in menu.childs:      for menu_item in section.childs:          if hasattr(menu_item, 'childs'): diff --git a/ishtar_common/wizards.py b/ishtar_common/wizards.py index cc6107928..23469c659 100644 --- a/ishtar_common/wizards.py +++ b/ishtar_common/wizards.py @@ -21,7 +21,6 @@ import datetime  # from functools import wraps  from django.conf import settings -from django.contrib.formtools.wizard.storage import get_storage  from django.contrib.formtools.wizard.views import NamedUrlWizardView, \      normalize_name, get_storage, StepsHelper  from django.contrib.sites.models import Site @@ -77,6 +76,23 @@ def check_rights(rights=[], redirect_url='/'):      return decorator +def check_rights_condition(rights): +    """ +    To be used to check in wizard condition_dict +    """ +    def func(self): +        request = self.request +        if request.user.ishtaruser.has_right('administrator', request.session): +            return True +        for right in rights: +            print(right) +            if request.user.ishtaruser.has_right(right, request.session): +                return True +        print('hop') +        return False +    return func + +  class Wizard(NamedUrlWizardView):      model = None      label = '' @@ -126,7 +142,8 @@ class Wizard(NamedUrlWizardView):              self.request = request              self.session = request.session              self.prefix = self.get_prefix(*args, **kwargs) -            self.storage = get_storage(self.storage_name, self.prefix, request, +            self.storage = get_storage( +                self.storage_name, self.prefix, request,                  getattr(self, 'file_storage', None))              self.steps = StepsHelper(self)  | 
