summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/ishtar_menu.py141
-rw-r--r--ishtar_common/urls.py63
-rw-r--r--ishtar_common/wizards.py21
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)