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