diff --git a/apps/metadata/__init__.py b/apps/metadata/__init__.py index 6ed08e848c..1fd0489617 100644 --- a/apps/metadata/__init__.py +++ b/apps/metadata/__init__.py @@ -9,11 +9,22 @@ PERMISSION_METADATA_DOCUMENT_EDIT = {'namespace': 'metadata', 'name': u'metadata PERMISSION_METADATA_DOCUMENT_ADD = {'namespace': 'metadata', 'name': u'metadata_document_add', 'label': _(u'Add metadata to a document')} PERMISSION_METADATA_DOCUMENT_REMOVE = {'namespace': 'metadata', 'name': u'metadata_document_remove', 'label': _(u'Remove metadata from a document')} +PERMISSION_METADATA_TYPE_EDIT = {'namespace': 'metadata_setup', 'name': u'metadata_type_edit', 'label': _(u'Edit metadata types')} +PERMISSION_METADATA_TYPE_CREATE = {'namespace': 'metadata_setup', 'name': u'metadata_type_create', 'label': _(u'Create new metadata types')} +PERMISSION_METADATA_TYPE_DELETE = {'namespace': 'metadata_setup', 'name': u'metadata_type_delete', 'label': _(u'Delete metadata types')} +PERMISSION_METADATA_TYPE_VIEW = {'namespace': 'metadata_setup', 'name': u'metadata_type_view', 'label': _(u'View metadata types')} + set_namespace_title('metadata', _(u'Metadata')) register_permission(PERMISSION_METADATA_DOCUMENT_EDIT) register_permission(PERMISSION_METADATA_DOCUMENT_ADD) register_permission(PERMISSION_METADATA_DOCUMENT_REMOVE) +set_namespace_title('metadata_setup', _(u'Metadata setup')) +register_permission(PERMISSION_METADATA_TYPE_EDIT) +register_permission(PERMISSION_METADATA_TYPE_CREATE) +register_permission(PERMISSION_METADATA_TYPE_DELETE) +register_permission(PERMISSION_METADATA_TYPE_VIEW) + metadata_edit = {'text': _(u'edit metadata'), 'view': 'metadata_edit', 'args': 'object.id', 'famfam': 'xhtml_go', 'permissions': [PERMISSION_METADATA_DOCUMENT_EDIT]} metadata_multiple_edit = {'text': _(u'edit metadata'), 'view': 'metadata_multiple_edit', 'famfam': 'xhtml_go', 'permissions': [PERMISSION_METADATA_DOCUMENT_EDIT]} metadata_add = {'text': _(u'add metadata'), 'view': 'metadata_add', 'args': 'object.id', 'famfam': 'xhtml_add', 'permissions': [PERMISSION_METADATA_DOCUMENT_ADD]} @@ -21,11 +32,10 @@ metadata_multiple_add = {'text': _(u'add metadata'), 'view': 'metadata_multiple_ metadata_remove = {'text': _(u'remove metadata'), 'view': 'metadata_remove', 'args': 'object.id', 'famfam': 'xhtml_delete', 'permissions': [PERMISSION_METADATA_DOCUMENT_REMOVE]} metadata_multiple_remove = {'text': _(u'remove metadata'), 'view': 'metadata_multiple_remove', 'famfam': 'xhtml_delete', 'permissions': [PERMISSION_METADATA_DOCUMENT_REMOVE]} -setup_metadata_type_list = {'text': _(u'metadata types'), 'view': 'setup_metadata_type_list', 'famfam': 'xhtml_go'}#, 'permissions': [PERMISSION_METADATA_DOCUMENT_EDIT]} -setup_metadata_type_edit = {'text': _(u'edit'), 'view': 'setup_metadata_type_edit', 'args': 'object.id', 'famfam': 'xhtml'}#, 'permissions': [PERMISSION_METADATA_DOCUMENT_EDIT]} -setup_metadata_type_delete = {'text': _(u'delete'), 'view': 'setup_metadata_type_delete', 'args': 'object.id', 'famfam': 'xhtml_delete'}#, 'permissions': [PERMISSION_METADATA_DOCUMENT_EDIT]} -setup_metadata_type_create = {'text': _(u'create new'), 'view': 'setup_metadata_type_create', 'famfam': 'xhtml_add'}#, 'permissions': [PERMISSION_METADATA_DOCUMENT_EDIT]} - +setup_metadata_type_list = {'text': _(u'metadata types'), 'view': 'setup_metadata_type_list', 'famfam': 'xhtml_go', 'permissions': [PERMISSION_METADATA_TYPE_VIEW]} +setup_metadata_type_edit = {'text': _(u'edit'), 'view': 'setup_metadata_type_edit', 'args': 'object.id', 'famfam': 'xhtml', 'permissions': [PERMISSION_METADATA_TYPE_EDIT]} +setup_metadata_type_delete = {'text': _(u'delete'), 'view': 'setup_metadata_type_delete', 'args': 'object.id', 'famfam': 'xhtml_delete', 'permissions': [PERMISSION_METADATA_TYPE_DELETE]} +setup_metadata_type_create = {'text': _(u'create new'), 'view': 'setup_metadata_type_create', 'famfam': 'xhtml_add', 'permissions': [PERMISSION_METADATA_TYPE_CREATE]} register_links(Document, [metadata_add, metadata_edit, metadata_remove]) register_multi_item_links(['document_type_document_list', 'search', 'results', 'document_group_view', 'document_list', 'document_list_recent'], [metadata_multiple_add, metadata_multiple_edit, metadata_multiple_remove]) diff --git a/apps/metadata/views.py b/apps/metadata/views.py index 167766b88d..d272135a48 100644 --- a/apps/metadata/views.py +++ b/apps/metadata/views.py @@ -12,7 +12,9 @@ from permissions.api import check_permissions from document_indexing.api import update_indexes, delete_indexes from metadata import PERMISSION_METADATA_DOCUMENT_EDIT, \ - PERMISSION_METADATA_DOCUMENT_ADD, PERMISSION_METADATA_DOCUMENT_REMOVE + PERMISSION_METADATA_DOCUMENT_ADD, PERMISSION_METADATA_DOCUMENT_REMOVE, \ + PERMISSION_METADATA_TYPE_EDIT, PERMISSION_METADATA_TYPE_CREATE, \ + PERMISSION_METADATA_TYPE_DELETE, PERMISSION_METADATA_TYPE_VIEW from metadata.forms import MetadataFormSet, AddMetadataForm, \ MetadataRemoveFormSet, MetadataTypeForm from metadata.api import save_metadata_list @@ -264,7 +266,7 @@ def metadata_multiple_remove(request): def setup_metadata_type_list(request): - #check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW]) + check_permissions(request.user, [PERMISSION_METADATA_TYPE_VIEW]) context = { 'object_list': MetadataType.objects.all(), @@ -283,7 +285,8 @@ def setup_metadata_type_list(request): def setup_metadata_type_edit(request, metadatatype_id): - #check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW]) + check_permissions(request.user, [PERMISSION_METADATA_TYPE_EDIT]) + metadata_type = get_object_or_404(MetadataType, pk=metadatatype_id) if request.method == 'POST': @@ -310,6 +313,8 @@ def setup_metadata_type_edit(request, metadatatype_id): def setup_metadata_type_create(request): + check_permissions(request.user, [PERMISSION_METADATA_TYPE_CREATE]) + if request.method == 'POST': form = MetadataTypeForm(request.POST) if form.is_valid(): @@ -327,6 +332,8 @@ def setup_metadata_type_create(request): def setup_metadata_type_delete(request, metadatatype_id): + check_permissions(request.user, [PERMISSION_METADATA_TYPE_DELETE]) + metadata_type = get_object_or_404(MetadataType, pk=metadatatype_id) post_action_redirect = reverse('setup_metadata_type_list')