Refactored the permissions registration, checking and definition

This commit is contained in:
Roberto Rosario
2011-05-24 22:31:07 -04:00
parent ebaf4165e2
commit d97a862a25
25 changed files with 261 additions and 288 deletions

View File

@@ -2,25 +2,23 @@ from django.utils.translation import ugettext_lazy as _
from navigation.api import register_links, \ from navigation.api import register_links, \
register_model_list_columns register_model_list_columns
from permissions.api import register_permissions from permissions.api import register_permission
from django.contrib.comments.models import Comment from django.contrib.comments.models import Comment
from documents.models import Document from documents.models import Document
PERMISSION_COMMENT_CREATE = 'comment_create' PERMISSION_COMMENT_CREATE = {'namespace': 'comments', 'name': 'comment_create', 'label': _(u'Create new comments')}
PERMISSION_COMMENT_DELETE = 'comment_delete' PERMISSION_COMMENT_DELETE = {'namespace': 'comments', 'name': 'comment_delete', 'label': _(u'Delete comments')}
PERMISSION_COMMENT_EDIT = 'comment_edit' PERMISSION_COMMENT_EDIT = {'namespace': 'comments', 'name': 'comment_edit', 'label': _(u'Edit comments')}
register_permissions('comments', [ register_permission(PERMISSION_COMMENT_CREATE)
{'name': PERMISSION_COMMENT_CREATE, 'label': _(u'Create new comments')}, register_permission(PERMISSION_COMMENT_DELETE)
{'name': PERMISSION_COMMENT_DELETE, 'label': _(u'Delete comments')}, register_permission(PERMISSION_COMMENT_EDIT)
{'name': PERMISSION_COMMENT_EDIT, 'label': _(u'Edit comments')},
])
comment_delete = {'text': _('delete'), 'view': 'comment_delete', 'args': 'object.id', 'famfam': 'comment_delete', 'permissions': {'namespace': 'comments', 'permissions': [PERMISSION_COMMENT_DELETE]}} comment_delete = {'text': _('delete'), 'view': 'comment_delete', 'args': 'object.id', 'famfam': 'comment_delete', 'permissions': [PERMISSION_COMMENT_DELETE]}
comment_multiple_delete = {'text': _('delete'), 'view': 'comment_multiple_delete', 'args': 'object.id', 'famfam': 'comments_delete', 'permissions': {'namespace': 'comments', 'permissions': [PERMISSION_COMMENT_DELETE]}} comment_multiple_delete = {'text': _('delete'), 'view': 'comment_multiple_delete', 'args': 'object.id', 'famfam': 'comments_delete', 'permissions': [PERMISSION_COMMENT_DELETE]}
comment_add = {'text': _('add comment'), 'view': 'comment_add', 'args': 'object.id', 'famfam': 'comment_add', 'permissions': {'namespace': 'comments', 'permissions': [PERMISSION_COMMENT_CREATE]}} comment_add = {'text': _('add comment'), 'view': 'comment_add', 'args': 'object.id', 'famfam': 'comment_add', 'permissions': [PERMISSION_COMMENT_CREATE]}
register_model_list_columns(Comment, [ register_model_list_columns(Comment, [
{ {

View File

@@ -15,7 +15,7 @@ from document_comments.forms import CommentForm
def comment_delete(request, comment_id=None, comment_id_list=None): def comment_delete(request, comment_id=None, comment_id_list=None):
check_permissions(request.user, 'comments', [PERMISSION_COMMENT_DELETE]) check_permissions(request.user, [PERMISSION_COMMENT_DELETE])
post_action_redirect = None post_action_redirect = None
if comment_id: if comment_id:
@@ -65,7 +65,7 @@ def comment_multiple_delete(request):
def comment_add(request, document_id): def comment_add(request, document_id):
check_permissions(request.user, 'comments', [PERMISSION_COMMENT_CREATE]) check_permissions(request.user, [PERMISSION_COMMENT_CREATE])
document = get_object_or_404(Document, pk=document_id) document = get_object_or_404(Document, pk=document_id)
post_action_redirect = None post_action_redirect = None

View File

@@ -1,23 +1,21 @@
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from navigation.api import register_menu from navigation.api import register_menu
from permissions.api import register_permissions from permissions.api import register_permission
from main.api import register_tool from main.api import register_tool
PERMISSION_DOCUMENT_INDEXING_VIEW = 'document_index_view' PERMISSION_DOCUMENT_INDEXING_VIEW = {'namespace': 'document_indexing', 'name': 'document_index_view', 'label': _(u'View document indexes')}
PERMISSION_DOCUMENT_INDEXING_REBUILD_INDEXES = 'document_rebuild_indexes' PERMISSION_DOCUMENT_INDEXING_REBUILD_INDEXES = {'namespace': 'document_indexing', 'name': 'document_rebuild_indexes', 'label': _(u'Rebuild document indexes')}
register_permissions('document_indexing', [ register_permission(PERMISSION_DOCUMENT_INDEXING_VIEW)
{'name': PERMISSION_DOCUMENT_INDEXING_VIEW, 'label': _(u'View document indexes')}, register_permission(PERMISSION_DOCUMENT_INDEXING_REBUILD_INDEXES)
{'name': PERMISSION_DOCUMENT_INDEXING_REBUILD_INDEXES, 'label': _(u'Rebuild document indexes')},
])
index_list = {'text': _(u'index list'), 'view': 'index_instance_list', 'famfam': 'folder_link', 'permissions': {'namespace': 'document_indexing', 'permissions': [PERMISSION_DOCUMENT_INDEXING_VIEW]}} index_list = {'text': _(u'index list'), 'view': 'index_instance_list', 'famfam': 'folder_link', 'permissions': [PERMISSION_DOCUMENT_INDEXING_VIEW]}
register_menu([ register_menu([
{'text': _('indexes'), 'view': 'index_instance_list', 'links': [ {'text': _('indexes'), 'view': 'index_instance_list', 'links': [
], 'famfam': 'folder_link', 'position': 2, 'permissions': {'namespace': 'document_indexing', 'permissions': [PERMISSION_DOCUMENT_INDEXING_VIEW]}}]) ], 'famfam': 'folder_link', 'position': 2, 'permissions': [PERMISSION_DOCUMENT_INDEXING_VIEW]}])
rebuild_index_instances = {'text': _('rebuild indexes'), 'view': 'rebuild_index_instances', 'famfam': 'folder_link', 'permissions': {'namespace': 'document_indexing', 'permissions': [PERMISSION_DOCUMENT_INDEXING_REBUILD_INDEXES]}, 'description': _(u'Deletes and creates from scratch all the document indexes.')} rebuild_index_instances = {'text': _('rebuild indexes'), 'view': 'rebuild_index_instances', 'famfam': 'folder_link', 'permissions': [PERMISSION_DOCUMENT_INDEXING_REBUILD_INDEXES], 'description': _(u'Deletes and creates from scratch all the document indexes.')}
register_tool(rebuild_index_instances, namespace='document_indexing', title=_(u'Indexes')) register_tool(rebuild_index_instances, namespace='document_indexing', title=_(u'Indexes'))

View File

@@ -16,7 +16,7 @@ from document_indexing.api import get_breadcrumbs, get_instance_link, \
def index_instance_list(request, index_id=None): def index_instance_list(request, index_id=None):
check_permissions(request.user, 'document_indexing', [PERMISSION_DOCUMENT_INDEXING_VIEW]) check_permissions(request.user, [PERMISSION_DOCUMENT_INDEXING_VIEW])
if index_id: if index_id:
index_instance = get_object_or_404(IndexInstance, pk=index_id) index_instance = get_object_or_404(IndexInstance, pk=index_id)
@@ -39,7 +39,7 @@ def index_instance_list(request, index_id=None):
def rebuild_index_instances(request): def rebuild_index_instances(request):
check_permissions(request.user, 'document_indexing', [PERMISSION_DOCUMENT_INDEXING_REBUILD_INDEXES]) check_permissions(request.user, [PERMISSION_DOCUMENT_INDEXING_REBUILD_INDEXES])
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', None))) previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', None)))
next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', None))) next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', None)))

View File

@@ -5,7 +5,7 @@ from django.conf import settings
from navigation.api import register_links, register_menu, \ from navigation.api import register_links, register_menu, \
register_model_list_columns, register_multi_item_links register_model_list_columns, register_multi_item_links
from main.api import register_diagnostic, register_tool from main.api import register_diagnostic, register_tool
from permissions.api import register_permissions from permissions.api import register_permission
from tags.widgets import get_tags_inline_widget_simple from tags.widgets import get_tags_inline_widget_simple
from documents.models import Document, DocumentPage, DocumentPageTransformation from documents.models import Document, DocumentPage, DocumentPageTransformation
@@ -18,56 +18,54 @@ from documents.literals import PERMISSION_DOCUMENT_CREATE, \
PERMISSION_DOCUMENT_TRANSFORM, PERMISSION_DOCUMENT_TOOLS, \ PERMISSION_DOCUMENT_TRANSFORM, PERMISSION_DOCUMENT_TOOLS, \
PERMISSION_DOCUMENT_EDIT PERMISSION_DOCUMENT_EDIT
register_permissions('documents', [ register_permission(PERMISSION_DOCUMENT_CREATE)
{'name': PERMISSION_DOCUMENT_CREATE, 'label': _(u'Create document')}, register_permission(PERMISSION_DOCUMENT_PROPERTIES_EDIT)
{'name': PERMISSION_DOCUMENT_PROPERTIES_EDIT, 'label': _(u'Edit document properties')}, register_permission(PERMISSION_DOCUMENT_EDIT)
{'name': PERMISSION_DOCUMENT_EDIT, 'label': _(u'Edit document')}, register_permission(PERMISSION_DOCUMENT_VIEW)
{'name': PERMISSION_DOCUMENT_VIEW, 'label': _(u'View document')}, register_permission(PERMISSION_DOCUMENT_DELETE)
{'name': PERMISSION_DOCUMENT_DELETE, 'label': _(u'Delete document')}, register_permission(PERMISSION_DOCUMENT_DOWNLOAD)
{'name': PERMISSION_DOCUMENT_DOWNLOAD, 'label': _(u'Download document')}, register_permission(PERMISSION_DOCUMENT_TRANSFORM)
{'name': PERMISSION_DOCUMENT_TRANSFORM, 'label': _(u'Transform document')}, register_permission(PERMISSION_DOCUMENT_TOOLS)
{'name': PERMISSION_DOCUMENT_TOOLS, 'label': _(u'Execute document modifying tools')},
])
document_list = {'text': _(u'documents list'), 'view': 'document_list', 'famfam': 'page', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_VIEW]}} document_list = {'text': _(u'documents list'), 'view': 'document_list', 'famfam': 'page', 'permissions': [PERMISSION_DOCUMENT_VIEW]}
document_list_recent = {'text': _(u'recent documents list'), 'view': 'document_list_recent', 'famfam': 'page', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_VIEW]}} document_list_recent = {'text': _(u'recent documents list'), 'view': 'document_list_recent', 'famfam': 'page', 'permissions': [PERMISSION_DOCUMENT_VIEW]}
document_create = {'text': _(u'upload a new document'), 'view': 'document_create', 'famfam': 'page_add', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_CREATE]}} document_create = {'text': _(u'upload a new document'), 'view': 'document_create', 'famfam': 'page_add', 'permissions': [PERMISSION_DOCUMENT_CREATE]}
document_create_multiple = {'text': _(u'upload new documents'), 'view': 'document_create_multiple', 'famfam': 'page_add', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_CREATE]}} document_create_multiple = {'text': _(u'upload new documents'), 'view': 'document_create_multiple', 'famfam': 'page_add', 'permissions': [PERMISSION_DOCUMENT_CREATE]}
document_create_siblings = {'text': _(u'upload new documents using same metadata'), 'view': 'document_create_siblings', 'args': 'object.id', 'famfam': 'page_copy', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_CREATE]}} document_create_siblings = {'text': _(u'upload new documents using same metadata'), 'view': 'document_create_siblings', 'args': 'object.id', 'famfam': 'page_copy', 'permissions': [PERMISSION_DOCUMENT_CREATE]}
document_view_simple = {'text': _(u'details (simple)'), 'view': 'document_view_simple', 'args': 'object.id', 'famfam': 'page', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_VIEW]}} document_view_simple = {'text': _(u'details (simple)'), 'view': 'document_view_simple', 'args': 'object.id', 'famfam': 'page', 'permissions': [PERMISSION_DOCUMENT_VIEW]}
document_view_advanced = {'text': _(u'details (advanced)'), 'view': 'document_view_advanced', 'args': 'object.id', 'famfam': 'page', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_VIEW]}} document_view_advanced = {'text': _(u'details (advanced)'), 'view': 'document_view_advanced', 'args': 'object.id', 'famfam': 'page', 'permissions': [PERMISSION_DOCUMENT_VIEW]}
document_delete = {'text': _(u'delete'), 'view': 'document_delete', 'args': 'object.id', 'famfam': 'page_delete', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_DELETE]}} document_delete = {'text': _(u'delete'), 'view': 'document_delete', 'args': 'object.id', 'famfam': 'page_delete', 'permissions': [PERMISSION_DOCUMENT_DELETE]}
document_multiple_delete = {'text': _(u'delete'), 'view': 'document_multiple_delete', 'famfam': 'page_delete', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_DELETE]}} document_multiple_delete = {'text': _(u'delete'), 'view': 'document_multiple_delete', 'famfam': 'page_delete', 'permissions': [PERMISSION_DOCUMENT_DELETE]}
document_edit = {'text': _(u'edit'), 'view': 'document_edit', 'args': 'object.id', 'famfam': 'page_edit', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_PROPERTIES_EDIT]}} document_edit = {'text': _(u'edit'), 'view': 'document_edit', 'args': 'object.id', 'famfam': 'page_edit', 'permissions': [PERMISSION_DOCUMENT_PROPERTIES_EDIT]}
document_preview = {'text': _(u'preview'), 'class': 'fancybox', 'view': 'document_preview', 'args': 'object.id', 'famfam': 'magnifier', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_VIEW]}} document_preview = {'text': _(u'preview'), 'class': 'fancybox', 'view': 'document_preview', 'args': 'object.id', 'famfam': 'magnifier', 'permissions': [PERMISSION_DOCUMENT_VIEW]}
document_download = {'text': _(u'download'), 'view': 'document_download', 'args': 'object.id', 'famfam': 'page_save', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_DOWNLOAD]}} document_download = {'text': _(u'download'), 'view': 'document_download', 'args': 'object.id', 'famfam': 'page_save', 'permissions': [PERMISSION_DOCUMENT_DOWNLOAD]}
document_find_duplicates = {'text': _(u'find duplicates'), 'view': 'document_find_duplicates', 'args': 'object.id', 'famfam': 'page_refresh', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_VIEW]}} document_find_duplicates = {'text': _(u'find duplicates'), 'view': 'document_find_duplicates', 'args': 'object.id', 'famfam': 'page_refresh', 'permissions': [PERMISSION_DOCUMENT_VIEW]}
document_find_all_duplicates = {'text': _(u'find all duplicates'), 'view': 'document_find_all_duplicates', 'famfam': 'page_refresh', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_VIEW]}, 'description': _(u'Search all the documents\' checksums and return a list of the exact matches.')} document_find_all_duplicates = {'text': _(u'find all duplicates'), 'view': 'document_find_all_duplicates', 'famfam': 'page_refresh', 'permissions': [PERMISSION_DOCUMENT_VIEW], 'description': _(u'Search all the documents\' checksums and return a list of the exact matches.')}
document_clear_transformations = {'text': _(u'clear all transformations'), 'view': 'document_clear_transformations', 'args': 'object.id', 'famfam': 'page_paintbrush', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_TRANSFORM]}} document_clear_transformations = {'text': _(u'clear all transformations'), 'view': 'document_clear_transformations', 'args': 'object.id', 'famfam': 'page_paintbrush', 'permissions': [PERMISSION_DOCUMENT_TRANSFORM]}
document_multiple_clear_transformations = {'text': _(u'clear all transformations'), 'view': 'document_multiple_clear_transformations', 'famfam': 'page_paintbrush', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_TRANSFORM]}} document_multiple_clear_transformations = {'text': _(u'clear all transformations'), 'view': 'document_multiple_clear_transformations', 'famfam': 'page_paintbrush', 'permissions': [PERMISSION_DOCUMENT_TRANSFORM]}
document_print = {'text': _(u'print'), 'view': 'document_print', 'args': 'object.id', 'famfam': 'printer', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_VIEW]}} document_print = {'text': _(u'print'), 'view': 'document_print', 'args': 'object.id', 'famfam': 'printer', 'permissions': [PERMISSION_DOCUMENT_VIEW]}
document_page_transformation_list = {'text': _(u'page transformations'), 'class': 'no-parent-history', 'view': 'document_page_transformation_list', 'args': 'object.id', 'famfam': 'pencil_go', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_TRANSFORM]}} document_page_transformation_list = {'text': _(u'page transformations'), 'class': 'no-parent-history', 'view': 'document_page_transformation_list', 'args': 'object.id', 'famfam': 'pencil_go', 'permissions': [PERMISSION_DOCUMENT_TRANSFORM]}
document_page_transformation_create = {'text': _(u'create new transformation'), 'class': 'no-parent-history', 'view': 'document_page_transformation_create', 'args': 'object.id', 'famfam': 'pencil_add', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_TRANSFORM]}} document_page_transformation_create = {'text': _(u'create new transformation'), 'class': 'no-parent-history', 'view': 'document_page_transformation_create', 'args': 'object.id', 'famfam': 'pencil_add', 'permissions': [PERMISSION_DOCUMENT_TRANSFORM]}
document_page_transformation_edit = {'text': _(u'edit'), 'class': 'no-parent-history', 'view': 'document_page_transformation_edit', 'args': 'object.id', 'famfam': 'pencil_go', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_TRANSFORM]}} document_page_transformation_edit = {'text': _(u'edit'), 'class': 'no-parent-history', 'view': 'document_page_transformation_edit', 'args': 'object.id', 'famfam': 'pencil_go', 'permissions': [PERMISSION_DOCUMENT_TRANSFORM]}
document_page_transformation_delete = {'text': _(u'delete'), 'class': 'no-parent-history', 'view': 'document_page_transformation_delete', 'args': 'object.id', 'famfam': 'pencil_delete', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_TRANSFORM]}} document_page_transformation_delete = {'text': _(u'delete'), 'class': 'no-parent-history', 'view': 'document_page_transformation_delete', 'args': 'object.id', 'famfam': 'pencil_delete', 'permissions': [PERMISSION_DOCUMENT_TRANSFORM]}
document_page_transformation_page_view = {'text': _(u'page details'), 'class': 'no-parent-history', 'view': 'document_page_view', 'args': 'object.document_page.id', 'famfam': 'page_white', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_VIEW]}} document_page_transformation_page_view = {'text': _(u'page details'), 'class': 'no-parent-history', 'view': 'document_page_view', 'args': 'object.document_page.id', 'famfam': 'page_white', 'permissions': [PERMISSION_DOCUMENT_VIEW]}
document_page_transformation_page_edit = {'text': _(u'edit page'), 'class': 'no-parent-history', 'view': 'document_page_edit', 'args': 'object.document_page.id', 'famfam': 'page_white', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_EDIT]}} document_page_transformation_page_edit = {'text': _(u'edit page'), 'class': 'no-parent-history', 'view': 'document_page_edit', 'args': 'object.document_page.id', 'famfam': 'page_white', 'permissions': [PERMISSION_DOCUMENT_EDIT]}
document_page_transformation_page_transformation_list = {'text': _(u'page transformations'), 'class': 'no-parent-history', 'view': 'document_page_transformation_list', 'args': 'object.document_page.id', 'famfam': 'pencil_go', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_TRANSFORM]}} document_page_transformation_page_transformation_list = {'text': _(u'page transformations'), 'class': 'no-parent-history', 'view': 'document_page_transformation_list', 'args': 'object.document_page.id', 'famfam': 'pencil_go', 'permissions': [PERMISSION_DOCUMENT_TRANSFORM]}
document_page_view = {'text': _(u'page image'), 'class': 'no-parent-history', 'view': 'document_page_view', 'args': 'object.id', 'famfam': 'page_white_picture', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_VIEW]}} document_page_view = {'text': _(u'page image'), 'class': 'no-parent-history', 'view': 'document_page_view', 'args': 'object.id', 'famfam': 'page_white_picture', 'permissions': [PERMISSION_DOCUMENT_VIEW]}
document_page_text = {'text': _(u'page text'), 'class': 'no-parent-history', 'view': 'document_page_text', 'args': 'object.id', 'famfam': 'page_white_text', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_VIEW]}} document_page_text = {'text': _(u'page text'), 'class': 'no-parent-history', 'view': 'document_page_text', 'args': 'object.id', 'famfam': 'page_white_text', 'permissions': [PERMISSION_DOCUMENT_VIEW]}
document_page_edit = {'text': _(u'edit page text'), 'class': 'no-parent-history', 'view': 'document_page_edit', 'args': 'object.id', 'famfam': 'page_white_edit', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_EDIT]}} document_page_edit = {'text': _(u'edit page text'), 'class': 'no-parent-history', 'view': 'document_page_edit', 'args': 'object.id', 'famfam': 'page_white_edit', 'permissions': [PERMISSION_DOCUMENT_EDIT]}
document_page_navigation_next = {'text': _(u'next page'), 'class': 'no-parent-history', 'view': 'document_page_navigation_next', 'args': 'object.id', 'famfam': 'resultset_next', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_VIEW]}} document_page_navigation_next = {'text': _(u'next page'), 'class': 'no-parent-history', 'view': 'document_page_navigation_next', 'args': 'object.id', 'famfam': 'resultset_next', 'permissions': [PERMISSION_DOCUMENT_VIEW]}
document_page_navigation_previous = {'text': _(u'previous page'), 'class': 'no-parent-history', 'view': 'document_page_navigation_previous', 'args': 'object.id', 'famfam': 'resultset_previous', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_VIEW]}} document_page_navigation_previous = {'text': _(u'previous page'), 'class': 'no-parent-history', 'view': 'document_page_navigation_previous', 'args': 'object.id', 'famfam': 'resultset_previous', 'permissions': [PERMISSION_DOCUMENT_VIEW]}
document_page_navigation_first = {'text': _(u'first page'), 'class': 'no-parent-history', 'view': 'document_page_navigation_first', 'args': 'object.id', 'famfam': 'resultset_first', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_VIEW]}} document_page_navigation_first = {'text': _(u'first page'), 'class': 'no-parent-history', 'view': 'document_page_navigation_first', 'args': 'object.id', 'famfam': 'resultset_first', 'permissions': [PERMISSION_DOCUMENT_VIEW]}
document_page_navigation_last = {'text': _(u'last page'), 'class': 'no-parent-history', 'view': 'document_page_navigation_last', 'args': 'object.id', 'famfam': 'resultset_last', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_VIEW]}} document_page_navigation_last = {'text': _(u'last page'), 'class': 'no-parent-history', 'view': 'document_page_navigation_last', 'args': 'object.id', 'famfam': 'resultset_last', 'permissions': [PERMISSION_DOCUMENT_VIEW]}
document_page_zoom_in = {'text': _(u'zoom in'), 'class': 'no-parent-history', 'view': 'document_page_zoom_in', 'args': 'object.id', 'famfam': 'zoom_in', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_VIEW]}} document_page_zoom_in = {'text': _(u'zoom in'), 'class': 'no-parent-history', 'view': 'document_page_zoom_in', 'args': 'object.id', 'famfam': 'zoom_in', 'permissions': [PERMISSION_DOCUMENT_VIEW]}
document_page_zoom_out = {'text': _(u'zoom out'), 'class': 'no-parent-history', 'view': 'document_page_zoom_out', 'args': 'object.id', 'famfam': 'zoom_out', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_VIEW]}} document_page_zoom_out = {'text': _(u'zoom out'), 'class': 'no-parent-history', 'view': 'document_page_zoom_out', 'args': 'object.id', 'famfam': 'zoom_out', 'permissions': [PERMISSION_DOCUMENT_VIEW]}
document_page_rotate_right = {'text': _(u'rotate right'), 'class': 'no-parent-history', 'view': 'document_page_rotate_right', 'args': 'object.id', 'famfam': 'arrow_turn_right', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_VIEW]}} document_page_rotate_right = {'text': _(u'rotate right'), 'class': 'no-parent-history', 'view': 'document_page_rotate_right', 'args': 'object.id', 'famfam': 'arrow_turn_right', 'permissions': [PERMISSION_DOCUMENT_VIEW]}
document_page_rotate_left = {'text': _(u'rotate left'), 'class': 'no-parent-history', 'view': 'document_page_rotate_left', 'args': 'object.id', 'famfam': 'arrow_turn_left', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_VIEW]}} document_page_rotate_left = {'text': _(u'rotate left'), 'class': 'no-parent-history', 'view': 'document_page_rotate_left', 'args': 'object.id', 'famfam': 'arrow_turn_left', 'permissions': [PERMISSION_DOCUMENT_VIEW]}
document_missing_list = {'text': _(u'Find missing document files'), 'view': 'document_missing_list', 'famfam': 'folder_page', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_VIEW]}} document_missing_list = {'text': _(u'Find missing document files'), 'view': 'document_missing_list', 'famfam': 'folder_page', 'permissions': [PERMISSION_DOCUMENT_VIEW]}
upload_document_from_local = {'text': _(u'local'), 'view': 'upload_document_from_local', 'famfam': 'drive_disk', 'keep_query': True} upload_document_from_local = {'text': _(u'local'), 'view': 'upload_document_from_local', 'famfam': 'drive_disk', 'keep_query': True}
upload_document_from_staging = {'text': _(u'staging'), 'view': 'upload_document_from_staging', 'famfam': 'drive_network', 'keep_query': True, 'condition': lambda x: USE_STAGING_DIRECTORY} upload_document_from_staging = {'text': _(u'staging'), 'view': 'upload_document_from_staging', 'famfam': 'drive_network', 'keep_query': True, 'condition': lambda x: USE_STAGING_DIRECTORY}

View File

@@ -1,16 +1,18 @@
from django.utils.translation import ugettext_lazy as _
PICTURE_ERROR_SMALL = u'picture_error.png' PICTURE_ERROR_SMALL = u'picture_error.png'
PICTURE_ERROR_MEDIUM = u'1297211435_error.png' PICTURE_ERROR_MEDIUM = u'1297211435_error.png'
PICTURE_UNKNOWN_SMALL = u'1299549572_unknown2.png' PICTURE_UNKNOWN_SMALL = u'1299549572_unknown2.png'
PICTURE_UNKNOWN_MEDIUM = u'1299549805_unknown.png' PICTURE_UNKNOWN_MEDIUM = u'1299549805_unknown.png'
PERMISSION_DOCUMENT_CREATE = 'document_create' PERMISSION_DOCUMENT_CREATE = {'namespace': 'documents', 'name': 'document_create', 'label': _(u'Create document')}
PERMISSION_DOCUMENT_PROPERTIES_EDIT = 'document_properties_edit' PERMISSION_DOCUMENT_PROPERTIES_EDIT = {'namespace': 'documents', 'name': 'document_properties_edit', 'label': _(u'Edit document properties')}
PERMISSION_DOCUMENT_EDIT = 'document_edit' PERMISSION_DOCUMENT_EDIT = {'namespace': 'documents', 'name': 'document_edit', 'label': _(u'Edit document')}
PERMISSION_DOCUMENT_VIEW = 'document_view' PERMISSION_DOCUMENT_VIEW = {'namespace': 'documents', 'name': 'document_view', 'label': _(u'View document')}
PERMISSION_DOCUMENT_DELETE = 'document_delete' PERMISSION_DOCUMENT_DELETE = {'namespace': 'documents', 'name': 'document_delete', 'label': _(u'Delete document')}
PERMISSION_DOCUMENT_DOWNLOAD = 'document_download' PERMISSION_DOCUMENT_DOWNLOAD = {'namespace': 'documents', 'name': 'document_download', 'label': _(u'Download document')}
PERMISSION_DOCUMENT_TRANSFORM = 'document_transform' PERMISSION_DOCUMENT_TRANSFORM = {'namespace': 'documents', 'name': 'document_transform', 'label': _(u'Transform document')}
PERMISSION_DOCUMENT_TOOLS = 'document_tools' PERMISSION_DOCUMENT_TOOLS = {'namespace': 'documents', 'name': 'document_tools', 'label': _(u'Execute document modifying tools')}
UPLOAD_SOURCE_LOCAL = u'local' UPLOAD_SOURCE_LOCAL = u'local'
UPLOAD_SOURCE_STAGING = u'staging' UPLOAD_SOURCE_STAGING = u'staging'

View File

@@ -75,7 +75,7 @@ from documents.literals import UPLOAD_SOURCE_LOCAL, \
def document_list(request, object_list=None, title=None): def document_list(request, object_list=None, title=None):
check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_VIEW]) check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
return render_to_response('generic_list.html', { return render_to_response('generic_list.html', {
'object_list': object_list if not (object_list is None) else Document.objects.only('file_filename', 'file_extension').all(), 'object_list': object_list if not (object_list is None) else Document.objects.only('file_filename', 'file_extension').all(),
@@ -86,7 +86,7 @@ def document_list(request, object_list=None, title=None):
def document_create(request): def document_create(request):
check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_CREATE]) check_permissions(request.user, [PERMISSION_DOCUMENT_CREATE])
wizard = DocumentCreateWizard(form_list=[DocumentTypeSelectForm, MetadataSelectionForm, MetadataFormSet]) wizard = DocumentCreateWizard(form_list=[DocumentTypeSelectForm, MetadataSelectionForm, MetadataFormSet])
@@ -94,7 +94,7 @@ def document_create(request):
def document_create_siblings(request, document_id): def document_create_siblings(request, document_id):
check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_CREATE]) check_permissions(request.user, [PERMISSION_DOCUMENT_CREATE])
document = get_object_or_404(Document, pk=document_id) document = get_object_or_404(Document, pk=document_id)
query_dict = {} query_dict = {}
@@ -149,7 +149,7 @@ def _handle_zip_file(request, uploaded_file, document_type=None):
def upload_document_with_type(request, source): def upload_document_with_type(request, source):
check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_CREATE]) check_permissions(request.user, [PERMISSION_DOCUMENT_CREATE])
document_type_id = request.GET.get('document_type_id', None) document_type_id = request.GET.get('document_type_id', None)
if document_type_id: if document_type_id:
@@ -263,7 +263,7 @@ def upload_document_with_type(request, source):
def document_view_simple(request, document_id): def document_view_simple(request, document_id):
check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_VIEW]) check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
#document = get_object_or_404(Document.objects.select_related(), pk=document_id) #document = get_object_or_404(Document.objects.select_related(), pk=document_id)
# Triggers a 404 error on documents uploaded via local upload # Triggers a 404 error on documents uploaded via local upload
@@ -331,7 +331,7 @@ def document_view_simple(request, document_id):
def document_view_advanced(request, document_id): def document_view_advanced(request, document_id):
check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_VIEW]) check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
#document = get_object_or_404(Document.objects.select_related(), pk=document_id) #document = get_object_or_404(Document.objects.select_related(), pk=document_id)
# Triggers a 404 error on documents uploaded via local upload # Triggers a 404 error on documents uploaded via local upload
@@ -413,7 +413,7 @@ def document_view_advanced(request, document_id):
def document_delete(request, document_id=None, document_id_list=None): def document_delete(request, document_id=None, document_id_list=None):
check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_DELETE]) check_permissions(request.user, [PERMISSION_DOCUMENT_DELETE])
post_action_redirect = None post_action_redirect = None
if document_id: if document_id:
@@ -469,9 +469,7 @@ def document_multiple_delete(request):
def document_edit(request, document_id): def document_edit(request, document_id):
check_permissions( check_permissions(request.user, [PERMISSION_DOCUMENT_PROPERTIES_EDIT])
request.user, 'documents', [PERMISSION_DOCUMENT_PROPERTIES_EDIT]
)
document = get_object_or_404(Document, pk=document_id) document = get_object_or_404(Document, pk=document_id)
@@ -541,7 +539,7 @@ def calculate_converter_arguments(document, *args, **kwargs):
def get_document_image(request, document_id, size=PREVIEW_SIZE, quality=QUALITY_DEFAULT): def get_document_image(request, document_id, size=PREVIEW_SIZE, quality=QUALITY_DEFAULT):
check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_VIEW]) check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
document = get_object_or_404(Document, pk=document_id) document = get_object_or_404(Document, pk=document_id)
@@ -589,7 +587,7 @@ def get_document_image(request, document_id, size=PREVIEW_SIZE, quality=QUALITY_
def document_download(request, document_id): def document_download(request, document_id):
check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_DOWNLOAD]) check_permissions(request.user, [PERMISSION_DOCUMENT_DOWNLOAD])
document = get_object_or_404(Document, pk=document_id) document = get_object_or_404(Document, pk=document_id)
try: try:
@@ -607,7 +605,7 @@ def document_download(request, document_id):
def staging_file_preview(request, source, staging_file_id): def staging_file_preview(request, source, staging_file_id):
check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_CREATE]) check_permissions(request.user, [PERMISSION_DOCUMENT_CREATE])
StagingFile = create_staging_file_class(request, source) StagingFile = create_staging_file_class(request, source)
try: try:
output_file, errors = StagingFile.get(staging_file_id).preview() output_file, errors = StagingFile.get(staging_file_id).preview()
@@ -633,7 +631,7 @@ def staging_file_preview(request, source, staging_file_id):
def staging_file_delete(request, source, staging_file_id): def staging_file_delete(request, source, staging_file_id):
check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_CREATE]) check_permissions(request.user, [PERMISSION_DOCUMENT_CREATE])
StagingFile = create_staging_file_class(request, source) StagingFile = create_staging_file_class(request, source)
staging_file = StagingFile.get(staging_file_id) staging_file = StagingFile.get(staging_file_id)
@@ -659,7 +657,7 @@ def staging_file_delete(request, source, staging_file_id):
def document_page_transformation_list(request, document_page_id): def document_page_transformation_list(request, document_page_id):
check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_TRANSFORM]) check_permissions(request.user, [PERMISSION_DOCUMENT_TRANSFORM])
document_page = get_object_or_404(DocumentPage, pk=document_page_id) document_page = get_object_or_404(DocumentPage, pk=document_page_id)
@@ -683,7 +681,7 @@ def document_page_transformation_list(request, document_page_id):
def document_page_transformation_create(request, document_page_id): def document_page_transformation_create(request, document_page_id):
check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_TRANSFORM]) check_permissions(request.user, [PERMISSION_DOCUMENT_TRANSFORM])
document_page = get_object_or_404(DocumentPage, pk=document_page_id) document_page = get_object_or_404(DocumentPage, pk=document_page_id)
@@ -705,7 +703,7 @@ def document_page_transformation_create(request, document_page_id):
def document_page_transformation_edit(request, document_page_transformation_id): def document_page_transformation_edit(request, document_page_transformation_id):
check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_TRANSFORM]) check_permissions(request.user, [PERMISSION_DOCUMENT_TRANSFORM])
document_page_transformation = get_object_or_404(DocumentPageTransformation, pk=document_page_transformation_id) document_page_transformation = get_object_or_404(DocumentPageTransformation, pk=document_page_transformation_id)
return update_object(request, template_name='generic_form.html', return update_object(request, template_name='generic_form.html',
@@ -723,7 +721,7 @@ def document_page_transformation_edit(request, document_page_transformation_id):
def document_page_transformation_delete(request, document_page_transformation_id): def document_page_transformation_delete(request, document_page_transformation_id):
check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_TRANSFORM]) check_permissions(request.user, [PERMISSION_DOCUMENT_TRANSFORM])
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', None))) previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', None)))
@@ -746,7 +744,7 @@ def document_page_transformation_delete(request, document_page_transformation_id
def document_find_duplicates(request, document_id): def document_find_duplicates(request, document_id):
check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_VIEW]) check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
document = get_object_or_404(Document, pk=document_id) document = get_object_or_404(Document, pk=document_id)
return _find_duplicate_list(request, [document], include_source=True, confirmation=False) return _find_duplicate_list(request, [document], include_source=True, confirmation=False)
@@ -778,13 +776,13 @@ def _find_duplicate_list(request, source_document_list=Document.objects.all(), i
def document_find_all_duplicates(request): def document_find_all_duplicates(request):
check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_VIEW]) check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
return _find_duplicate_list(request, include_source=True) return _find_duplicate_list(request, include_source=True)
def document_clear_transformations(request, document_id=None, document_id_list=None): def document_clear_transformations(request, document_id=None, document_id_list=None):
check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_TRANSFORM]) check_permissions(request.user, [PERMISSION_DOCUMENT_TRANSFORM])
if document_id: if document_id:
documents = [get_object_or_404(Document.objects, pk=document_id)] documents = [get_object_or_404(Document.objects, pk=document_id)]
@@ -835,7 +833,7 @@ def document_multiple_clear_transformations(request):
def document_missing_list(request): def document_missing_list(request):
check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_VIEW]) check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', None))) previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', None)))
@@ -857,7 +855,7 @@ def document_missing_list(request):
def document_page_view(request, document_page_id): def document_page_view(request, document_page_id):
check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_VIEW]) check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
document_page = get_object_or_404(DocumentPage, pk=document_page_id) document_page = get_object_or_404(DocumentPage, pk=document_page_id)
@@ -874,7 +872,7 @@ def document_page_view(request, document_page_id):
def document_page_text(request, document_page_id): def document_page_text(request, document_page_id):
check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_VIEW]) check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
document_page = get_object_or_404(DocumentPage, pk=document_page_id) document_page = get_object_or_404(DocumentPage, pk=document_page_id)
document_page_form = DocumentPageForm_text(instance=document_page) document_page_form = DocumentPageForm_text(instance=document_page)
@@ -888,7 +886,7 @@ def document_page_text(request, document_page_id):
def document_page_edit(request, document_page_id): def document_page_edit(request, document_page_id):
check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_EDIT]) check_permissions(request.user, [PERMISSION_DOCUMENT_EDIT])
document_page = get_object_or_404(DocumentPage, pk=document_page_id) document_page = get_object_or_404(DocumentPage, pk=document_page_id)
@@ -912,7 +910,7 @@ def document_page_edit(request, document_page_id):
def document_page_navigation_next(request, document_page_id): def document_page_navigation_next(request, document_page_id):
check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_VIEW]) check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
view = resolve_to_name(urlparse.urlparse(request.META.get('HTTP_REFERER', u'/')).path) view = resolve_to_name(urlparse.urlparse(request.META.get('HTTP_REFERER', u'/')).path)
document_page = get_object_or_404(DocumentPage, pk=document_page_id) document_page = get_object_or_404(DocumentPage, pk=document_page_id)
@@ -925,7 +923,7 @@ def document_page_navigation_next(request, document_page_id):
def document_page_navigation_previous(request, document_page_id): def document_page_navigation_previous(request, document_page_id):
check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_VIEW]) check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
view = resolve_to_name(urlparse.urlparse(request.META.get('HTTP_REFERER', u'/')).path) view = resolve_to_name(urlparse.urlparse(request.META.get('HTTP_REFERER', u'/')).path)
document_page = get_object_or_404(DocumentPage, pk=document_page_id) document_page = get_object_or_404(DocumentPage, pk=document_page_id)
@@ -938,7 +936,7 @@ def document_page_navigation_previous(request, document_page_id):
def document_page_navigation_first(request, document_page_id): def document_page_navigation_first(request, document_page_id):
check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_VIEW]) check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
view = resolve_to_name(urlparse.urlparse(request.META.get('HTTP_REFERER', u'/')).path) view = resolve_to_name(urlparse.urlparse(request.META.get('HTTP_REFERER', u'/')).path)
document_page = get_object_or_404(DocumentPage, pk=document_page_id) document_page = get_object_or_404(DocumentPage, pk=document_page_id)
@@ -947,7 +945,7 @@ def document_page_navigation_first(request, document_page_id):
def document_page_navigation_last(request, document_page_id): def document_page_navigation_last(request, document_page_id):
check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_VIEW]) check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
view = resolve_to_name(urlparse.urlparse(request.META.get('HTTP_REFERER', u'/')).path) view = resolve_to_name(urlparse.urlparse(request.META.get('HTTP_REFERER', u'/')).path)
document_page = get_object_or_404(DocumentPage, pk=document_page_id) document_page = get_object_or_404(DocumentPage, pk=document_page_id)
@@ -964,7 +962,7 @@ def document_list_recent(request):
def transform_page(request, document_page_id, zoom_function=None, rotation_function=None): def transform_page(request, document_page_id, zoom_function=None, rotation_function=None):
check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_VIEW]) check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
view = resolve_to_name(urlparse.urlparse(request.META.get('HTTP_REFERER', u'/')).path) view = resolve_to_name(urlparse.urlparse(request.META.get('HTTP_REFERER', u'/')).path)
document_page = get_object_or_404(DocumentPage, pk=document_page_id) document_page = get_object_or_404(DocumentPage, pk=document_page_id)
@@ -1022,7 +1020,7 @@ def document_page_rotate_left(request, document_page_id):
def document_print(request, document_id): def document_print(request, document_id):
check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_VIEW]) check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
document = get_object_or_404(Document, pk=document_id) document = get_object_or_404(Document, pk=document_id)
@@ -1078,7 +1076,7 @@ def document_print(request, document_id):
def document_hard_copy(request, document_id): def document_hard_copy(request, document_id):
check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_VIEW]) check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
document = get_object_or_404(Document, pk=document_id) document = get_object_or_404(Document, pk=document_id)

View File

@@ -140,7 +140,7 @@ def folder_view(request, folder_id):
def folder_add_document(request, document_id): def folder_add_document(request, document_id):
check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_VIEW]) check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
document = get_object_or_404(Document, pk=document_id) document = get_object_or_404(Document, pk=document_id)
if request.method == 'POST': if request.method == 'POST':

View File

@@ -4,8 +4,8 @@ from navigation.api import register_links
from documents.literals import PERMISSION_DOCUMENT_CREATE, PERMISSION_DOCUMENT_VIEW from documents.literals import PERMISSION_DOCUMENT_CREATE, PERMISSION_DOCUMENT_VIEW
document_group_link = {'text': _(u'group actions'), 'view': 'document_group_view', 'famfam': 'page_go', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_VIEW]}} document_group_link = {'text': _(u'group actions'), 'view': 'document_group_view', 'famfam': 'page_go', 'permissions': [PERMISSION_DOCUMENT_VIEW]}
document_group_back_to_document = {'text': _(u'return to document'), 'view': 'document_view_simple', 'args': 'ref_object.id', 'famfam': 'page', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_VIEW]}} document_group_back_to_document = {'text': _(u'return to document'), 'view': 'document_view_simple', 'args': 'ref_object.id', 'famfam': 'page', 'permissions': [PERMISSION_DOCUMENT_VIEW]}
document_group_create_siblings = {'text': _(u'upload new documents using same metadata'), 'view': 'document_create_siblings', 'args': 'ref_object.id', 'famfam': 'page_copy', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_CREATE]}} document_group_create_siblings = {'text': _(u'upload new documents using same metadata'), 'view': 'document_create_siblings', 'args': 'ref_object.id', 'famfam': 'page_copy', 'permissions': [PERMISSION_DOCUMENT_CREATE]}
register_links(['document_group_view'], [document_group_back_to_document, document_group_create_siblings], menu_name='sidebar') register_links(['document_group_view'], [document_group_back_to_document, document_group_create_siblings], menu_name='sidebar')

View File

@@ -22,12 +22,11 @@ def document_group_action(request):
def document_group_view(request, document_id, document_group_id): def document_group_view(request, document_id, document_group_id):
check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_VIEW]) check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
document = get_object_or_404(Document, pk=document_id) document = get_object_or_404(Document, pk=document_id)
document_group = get_object_or_404(DocumentGroup, pk=document_group_id) document_group = get_object_or_404(DocumentGroup, pk=document_group_id)
object_list, errors = DocumentGroup.objects.get_groups_for(document, document_group) object_list, errors = DocumentGroup.objects.get_groups_for(document, document_group)
#object_list, errors = document.get_metadata_groups(document_group)
return render_to_response('generic_list.html', { return render_to_response('generic_list.html', {
'object_list': object_list['documents'], 'object_list': object_list['documents'],

View File

@@ -20,9 +20,8 @@ def tools_menu(request):
for namespace, values in tools.items(): for namespace, values in tools.items():
for link in values['links']: for link in values['links']:
try: try:
namespace = link.get('permissions', {}).get('namespace', None) permissions = link.get('permissions', [])
permissions = link.get('permissions', {}).get('permissions', []) check_permissions(request.user, permissions)
check_permissions(request.user, namespace, permissions)
user_tools[namespace] = { user_tools[namespace] = {
'title': values['title'] 'title': values['title']
} }

View File

@@ -1,25 +1,23 @@
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from navigation.api import register_links, register_multi_item_links from navigation.api import register_links, register_multi_item_links
from permissions.api import register_permissions from permissions.api import register_permission
from documents.models import Document from documents.models import Document
PERMISSION_METADATA_DOCUMENT_EDIT = u'metadata_document_edit' PERMISSION_METADATA_DOCUMENT_EDIT = {'namespace': 'metadata', 'name': u'metadata_document_edit', 'label': _(u'Edit a document\'s metadata')}
PERMISSION_METADATA_DOCUMENT_ADD = u'metadata_document_add' PERMISSION_METADATA_DOCUMENT_ADD = {'namespace': 'metadata', 'name': u'metadata_document_add', 'label': _(u'Add metadata to a document')}
PERMISSION_METADATA_DOCUMENT_REMOVE = u'metadata_document_remove' PERMISSION_METADATA_DOCUMENT_REMOVE = {'namespace': 'metadata', 'name': u'metadata_document_remove', 'label': _(u'Remove metadata from a document')}
register_permissions('metadata', [ register_permission(PERMISSION_METADATA_DOCUMENT_EDIT)
{'name': PERMISSION_METADATA_DOCUMENT_EDIT, 'label': _(u'Edit a document\'s metadata')}, register_permission(PERMISSION_METADATA_DOCUMENT_ADD)
{'name': PERMISSION_METADATA_DOCUMENT_ADD, 'label': _(u'Add metadata to a document')}, register_permission(PERMISSION_METADATA_DOCUMENT_REMOVE)
{'name': PERMISSION_METADATA_DOCUMENT_REMOVE, 'label': _(u'Remove metadata from a document')},
])
metadata_edit = {'text': _(u'edit metadata'), 'view': 'metadata_edit', 'args': 'object.id', 'famfam': 'xhtml_go', 'permissions': {'namespace': 'metadata', 'permissions': [PERMISSION_METADATA_DOCUMENT_EDIT]}} 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': {'namespace': 'metadata', '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': {'namespace': 'metadata', 'permissions': [PERMISSION_METADATA_DOCUMENT_ADD]}} metadata_add = {'text': _(u'add metadata'), 'view': 'metadata_add', 'args': 'object.id', 'famfam': 'xhtml_add', 'permissions': [PERMISSION_METADATA_DOCUMENT_ADD]}
metadata_multiple_add = {'text': _(u'add metadata'), 'view': 'metadata_multiple_add', 'famfam': 'xhtml_add', 'permissions': {'namespace': 'metadata', 'permissions': [PERMISSION_METADATA_DOCUMENT_ADD]}} metadata_multiple_add = {'text': _(u'add metadata'), 'view': 'metadata_multiple_add', 'famfam': 'xhtml_add', 'permissions': [PERMISSION_METADATA_DOCUMENT_ADD]}
metadata_remove = {'text': _(u'remove metadata'), 'view': 'metadata_remove', 'args': 'object.id', 'famfam': 'xhtml_delete', 'permissions': {'namespace': 'metadata', 'permissions': [PERMISSION_METADATA_DOCUMENT_REMOVE]}} 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': {'namespace': 'metadata', 'permissions': [PERMISSION_METADATA_DOCUMENT_REMOVE]}} metadata_multiple_remove = {'text': _(u'remove metadata'), 'view': 'metadata_multiple_remove', 'famfam': 'xhtml_delete', 'permissions': [PERMISSION_METADATA_DOCUMENT_REMOVE]}
register_links(Document, [metadata_add, metadata_edit, metadata_remove]) register_links(Document, [metadata_add, metadata_edit, metadata_remove])
register_multi_item_links(['document_datagroup_view', 'document_list', 'document_list_recent'], [metadata_multiple_add, metadata_multiple_edit, metadata_multiple_remove]) register_multi_item_links(['document_datagroup_view', 'document_list', 'document_list_recent'], [metadata_multiple_add, metadata_multiple_edit, metadata_multiple_remove])

View File

@@ -19,7 +19,7 @@ from metadata.models import DocumentMetadata, MetadataType
def metadata_edit(request, document_id=None, document_id_list=None): def metadata_edit(request, document_id=None, document_id_list=None):
check_permissions(request.user, 'metadata', [PERMISSION_METADATA_DOCUMENT_EDIT]) check_permissions(request.user, [PERMISSION_METADATA_DOCUMENT_EDIT])
if document_id: if document_id:
documents = [get_object_or_404(Document, pk=document_id)] documents = [get_object_or_404(Document, pk=document_id)]
@@ -108,7 +108,7 @@ def metadata_multiple_edit(request):
def metadata_add(request, document_id=None, document_id_list=None): def metadata_add(request, document_id=None, document_id_list=None):
check_permissions(request.user, 'metadata', [PERMISSION_METADATA_DOCUMENT_ADD]) check_permissions(request.user, [PERMISSION_METADATA_DOCUMENT_ADD])
if document_id: if document_id:
documents = [get_object_or_404(Document, pk=document_id)] documents = [get_object_or_404(Document, pk=document_id)]
@@ -161,7 +161,7 @@ def metadata_multiple_add(request):
def metadata_remove(request, document_id=None, document_id_list=None): def metadata_remove(request, document_id=None, document_id_list=None):
check_permissions(request.user, 'metadata', [PERMISSION_METADATA_DOCUMENT_REMOVE]) check_permissions(request.user, [PERMISSION_METADATA_DOCUMENT_REMOVE])
if document_id: if document_id:
documents = [get_object_or_404(Document, pk=document_id)] documents = [get_object_or_404(Document, pk=document_id)]

View File

@@ -1,11 +1,10 @@
{% load permission_tags %} {% load permission_tags %}
{% load navigation_tags %} {% load navigation_tags %}
{% with link.permissions.namespace as namespace %} {% with link.permissions as permissions %}
{% with link.permissions.permissions as permissions %}
{% with link.condition as condition %} {% with link.condition as condition %}
{% check_permissions request.user namespace permissions %} {% check_permissions request.user permissions %}
{% if permission %} {% if permission %}
{% evaluate_link condition as conditional_display %} {% evaluate_link condition as conditional_display %}
{% if conditional_display %} {% if conditional_display %}
@@ -19,4 +18,3 @@
{% endwith %} {% endwith %}
{% endwith %} {% endwith %}
{% endwith %}

View File

@@ -4,7 +4,7 @@ from django.db.utils import DatabaseError
from django.db.models.signals import post_save from django.db.models.signals import post_save
from navigation.api import register_links, register_menu, register_multi_item_links from navigation.api import register_links, register_menu, register_multi_item_links
from permissions.api import register_permissions from permissions.api import register_permission
from documents.models import Document from documents.models import Document
from main.api import register_tool from main.api import register_tool
@@ -12,32 +12,30 @@ from ocr.conf.settings import AUTOMATIC_OCR
from ocr.models import DocumentQueue from ocr.models import DocumentQueue
#Permissions #Permissions
PERMISSION_OCR_DOCUMENT = 'ocr_document' PERMISSION_OCR_DOCUMENT = {'namespace': 'ocr', 'name': 'ocr_document', 'label': _(u'Submit document for OCR')}
PERMISSION_OCR_DOCUMENT_DELETE = 'ocr_document_delete' PERMISSION_OCR_DOCUMENT_DELETE = {'namespace': 'ocr', 'name': 'ocr_document_delete', 'label': _(u'Delete document for OCR queue')}
PERMISSION_OCR_QUEUE_ENABLE_DISABLE = 'ocr_queue_enable_disable' PERMISSION_OCR_QUEUE_ENABLE_DISABLE = {'namespace': 'ocr', 'name': 'ocr_queue_enable_disable', 'label': _(u'Can enable/disable an OCR queue')}
PERMISSION_OCR_CLEAN_ALL_PAGES = 'ocr_clean_all_pages' PERMISSION_OCR_CLEAN_ALL_PAGES = {'namespace': 'ocr', 'name': 'ocr_clean_all_pages', 'label': _(u'Can execute an OCR clean up on all document pages')}
register_permissions('ocr', [ register_permission(PERMISSION_OCR_DOCUMENT)
{'name': PERMISSION_OCR_DOCUMENT, 'label': _(u'Submit document for OCR')}, register_permission(PERMISSION_OCR_DOCUMENT_DELETE)
{'name': PERMISSION_OCR_DOCUMENT_DELETE, 'label': _(u'Delete document for OCR queue')}, register_permission(PERMISSION_OCR_QUEUE_ENABLE_DISABLE)
{'name': PERMISSION_OCR_QUEUE_ENABLE_DISABLE, 'label': _(u'Can enable/disable an OCR queue')}, register_permission(PERMISSION_OCR_CLEAN_ALL_PAGES)
{'name': PERMISSION_OCR_CLEAN_ALL_PAGES, 'label': _(u'Can execute an OCR clean up on all document pages')},
])
#Links #Links
submit_document = {'text': _('submit to OCR queue'), 'view': 'submit_document', 'args': 'object.id', 'famfam': 'hourglass_add', 'permissions': {'namespace': 'ocr', 'permissions': [PERMISSION_OCR_DOCUMENT]}} submit_document = {'text': _('submit to OCR queue'), 'view': 'submit_document', 'args': 'object.id', 'famfam': 'hourglass_add', 'permissions': [PERMISSION_OCR_DOCUMENT]}
re_queue_document = {'text': _('re-queue'), 'view': 're_queue_document', 'args': 'object.id', 'famfam': 'hourglass_add', 'permissions': {'namespace': 'ocr', 'permissions': [PERMISSION_OCR_DOCUMENT]}} re_queue_document = {'text': _('re-queue'), 'view': 're_queue_document', 'args': 'object.id', 'famfam': 'hourglass_add', 'permissions': [PERMISSION_OCR_DOCUMENT]}
re_queue_multiple_document = {'text': _('re-queue'), 'view': 're_queue_multiple_document', 'famfam': 'hourglass_add', 'permissions': {'namespace': 'ocr', 'permissions': [PERMISSION_OCR_DOCUMENT]}} re_queue_multiple_document = {'text': _('re-queue'), 'view': 're_queue_multiple_document', 'famfam': 'hourglass_add', 'permissions': [PERMISSION_OCR_DOCUMENT]}
queue_document_delete = {'text': _(u'delete'), 'view': 'queue_document_delete', 'args': 'object.id', 'famfam': 'hourglass_delete', 'permissions': {'namespace': 'ocr', 'permissions': [PERMISSION_OCR_DOCUMENT_DELETE]}} queue_document_delete = {'text': _(u'delete'), 'view': 'queue_document_delete', 'args': 'object.id', 'famfam': 'hourglass_delete', 'permissions': [PERMISSION_OCR_DOCUMENT_DELETE]}
queue_document_multiple_delete = {'text': _(u'delete'), 'view': 'queue_document_multiple_delete', 'famfam': 'hourglass_delete', 'permissions': {'namespace': 'ocr', 'permissions': [PERMISSION_OCR_DOCUMENT_DELETE]}} queue_document_multiple_delete = {'text': _(u'delete'), 'view': 'queue_document_multiple_delete', 'famfam': 'hourglass_delete', 'permissions': [PERMISSION_OCR_DOCUMENT_DELETE]}
document_queue_disable = {'text': _(u'stop queue'), 'view': 'document_queue_disable', 'args': 'object.id', 'famfam': 'control_stop_blue', 'permissions': {'namespace': 'ocr', 'permissions': [PERMISSION_OCR_QUEUE_ENABLE_DISABLE]}} document_queue_disable = {'text': _(u'stop queue'), 'view': 'document_queue_disable', 'args': 'object.id', 'famfam': 'control_stop_blue', 'permissions': [PERMISSION_OCR_QUEUE_ENABLE_DISABLE]}
document_queue_enable = {'text': _(u'activate queue'), 'view': 'document_queue_enable', 'args': 'object.id', 'famfam': 'control_play_blue', 'permissions': {'namespace': 'ocr', 'permissions': [PERMISSION_OCR_QUEUE_ENABLE_DISABLE]}} document_queue_enable = {'text': _(u'activate queue'), 'view': 'document_queue_enable', 'args': 'object.id', 'famfam': 'control_play_blue', 'permissions': [PERMISSION_OCR_QUEUE_ENABLE_DISABLE]}
all_document_ocr_cleanup = {'text': _(u'clean up pages content'), 'view': 'all_document_ocr_cleanup', 'famfam': 'text_strikethrough', 'permissions': {'namespace': 'ocr', 'permissions': [PERMISSION_OCR_CLEAN_ALL_PAGES]}, 'description': _(u'Runs a language filter to remove common OCR mistakes from document pages content.')} all_document_ocr_cleanup = {'text': _(u'clean up pages content'), 'view': 'all_document_ocr_cleanup', 'famfam': 'text_strikethrough', 'permissions': [PERMISSION_OCR_CLEAN_ALL_PAGES], 'description': _(u'Runs a language filter to remove common OCR mistakes from document pages content.')}
queue_document_list = {'text': _(u'queue document list'), 'view': 'queue_document_list', 'famfam': 'hourglass', 'permissions': {'namespace': 'ocr', 'permissions': [PERMISSION_OCR_DOCUMENT]}} queue_document_list = {'text': _(u'queue document list'), 'view': 'queue_document_list', 'famfam': 'hourglass', 'permissions': [PERMISSION_OCR_DOCUMENT]}
node_active_list = {'text': _(u'active tasks'), 'view': 'node_active_list', 'famfam': 'server_chart', 'permissions': {'namespace': 'ocr', 'permissions': [PERMISSION_OCR_DOCUMENT]}} node_active_list = {'text': _(u'active tasks'), 'view': 'node_active_list', 'famfam': 'server_chart', 'permissions': [PERMISSION_OCR_DOCUMENT]}
register_links(Document, [submit_document]) register_links(Document, [submit_document])
register_links(DocumentQueue, [document_queue_disable, document_queue_enable]) register_links(DocumentQueue, [document_queue_disable, document_queue_enable])

View File

@@ -38,7 +38,7 @@ def _display_thumbnail(ocr_document):
def queue_document_list(request, queue_name='default'): def queue_document_list(request, queue_name='default'):
check_permissions(request.user, 'ocr', [PERMISSION_OCR_DOCUMENT]) check_permissions(request.user, [PERMISSION_OCR_DOCUMENT])
document_queue = get_object_or_404(DocumentQueue, name=queue_name) document_queue = get_object_or_404(DocumentQueue, name=queue_name)
@@ -72,7 +72,7 @@ def queue_document_list(request, queue_name='default'):
def queue_document_delete(request, queue_document_id=None, queue_document_id_list=None): def queue_document_delete(request, queue_document_id=None, queue_document_id_list=None):
check_permissions(request.user, 'ocr', [PERMISSION_OCR_DOCUMENT_DELETE]) check_permissions(request.user, [PERMISSION_OCR_DOCUMENT_DELETE])
if queue_document_id: if queue_document_id:
queue_documents = [get_object_or_404(QueueDocument, pk=queue_document_id)] queue_documents = [get_object_or_404(QueueDocument, pk=queue_document_id)]
@@ -122,7 +122,7 @@ def queue_document_multiple_delete(request):
def submit_document(request, document_id): def submit_document(request, document_id):
check_permissions(request.user, 'ocr', [PERMISSION_OCR_DOCUMENT]) check_permissions(request.user, [PERMISSION_OCR_DOCUMENT])
document = get_object_or_404(Document, pk=document_id) document = get_object_or_404(Document, pk=document_id)
return submit_document_to_queue(request, document=document, return submit_document_to_queue(request, document=document,
@@ -147,7 +147,7 @@ def submit_document_to_queue(request, document, post_submit_redirect=None):
def re_queue_document(request, queue_document_id=None, queue_document_id_list=None): def re_queue_document(request, queue_document_id=None, queue_document_id_list=None):
check_permissions(request.user, 'ocr', [PERMISSION_OCR_DOCUMENT]) check_permissions(request.user, [PERMISSION_OCR_DOCUMENT])
if queue_document_id: if queue_document_id:
queue_documents = [get_object_or_404(QueueDocument, pk=queue_document_id)] queue_documents = [get_object_or_404(QueueDocument, pk=queue_document_id)]
@@ -201,7 +201,7 @@ def re_queue_multiple_document(request):
def document_queue_disable(request, document_queue_id): def document_queue_disable(request, document_queue_id):
check_permissions(request.user, 'ocr', [PERMISSION_OCR_QUEUE_ENABLE_DISABLE]) check_permissions(request.user, [PERMISSION_OCR_QUEUE_ENABLE_DISABLE])
next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', None))) next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', None)))
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', None))) previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', None)))
@@ -226,7 +226,7 @@ def document_queue_disable(request, document_queue_id):
def document_queue_enable(request, document_queue_id): def document_queue_enable(request, document_queue_id):
check_permissions(request.user, 'ocr', [PERMISSION_OCR_QUEUE_ENABLE_DISABLE]) check_permissions(request.user, [PERMISSION_OCR_QUEUE_ENABLE_DISABLE])
next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', None))) next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', None)))
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', None))) previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', None)))
@@ -251,7 +251,7 @@ def document_queue_enable(request, document_queue_id):
def all_document_ocr_cleanup(request): def all_document_ocr_cleanup(request):
check_permissions(request.user, 'ocr', [PERMISSION_OCR_CLEAN_ALL_PAGES]) check_permissions(request.user, [PERMISSION_OCR_CLEAN_ALL_PAGES])
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', None))) previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', None)))
next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', None))) next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', None)))
@@ -287,7 +287,7 @@ def display_link(obj):
def node_active_list(request): def node_active_list(request):
check_permissions(request.user, 'ocr', [PERMISSION_OCR_DOCUMENT]) check_permissions(request.user, [PERMISSION_OCR_DOCUMENT])
i = inspect() i = inspect()
active_tasks = [] active_tasks = []

View File

@@ -8,20 +8,20 @@ from navigation.api import register_links
from permissions.conf.settings import DEFAULT_ROLES from permissions.conf.settings import DEFAULT_ROLES
from permissions.models import Role from permissions.models import Role
PERMISSION_ROLE_VIEW = 'role_view' PERMISSION_ROLE_VIEW = {'namespace': 'permissions', 'name': 'role_view', 'label':_(u'View roles')}
PERMISSION_ROLE_EDIT = 'role_edit' PERMISSION_ROLE_EDIT = {'namespace': 'permissions', 'name': 'role_edit', 'label':_(u'Edit roles')}
PERMISSION_ROLE_CREATE = 'role_create' PERMISSION_ROLE_CREATE = {'namespace': 'permissions', 'name': 'role_create', 'label':_(u'Create roles')}
PERMISSION_ROLE_DELETE = 'role_delete' PERMISSION_ROLE_DELETE = {'namespace': 'permissions', 'name': 'role_delete', 'label':_(u'Delete roles')}
PERMISSION_PERMISSION_GRANT = 'permission_grant' PERMISSION_PERMISSION_GRANT = {'namespace': 'permissions', 'name': 'permission_grant', 'label':_(u'Grant permissions')}
PERMISSION_PERMISSION_REVOKE = 'permission_revoke' PERMISSION_PERMISSION_REVOKE = {'namespace': 'permissions', 'name': 'permission_revoke', 'label':_(u'Revoke permissions')}
role_list = {'text': _(u'roles'), 'view': 'role_list', 'famfam': 'medal_gold_1', 'permissions': {'namespace': 'permissions', 'permissions': [PERMISSION_ROLE_VIEW]}} role_list = {'text': _(u'roles'), 'view': 'role_list', 'famfam': 'medal_gold_1', 'permissions': [PERMISSION_ROLE_VIEW]}
role_create = {'text': _(u'create new role'), 'view': 'role_create', 'famfam': 'medal_gold_add', 'permissions': {'namespace': 'permissions', 'permissions': [PERMISSION_ROLE_CREATE]}} role_create = {'text': _(u'create new role'), 'view': 'role_create', 'famfam': 'medal_gold_add', 'permissions': [PERMISSION_ROLE_CREATE]}
role_edit = {'text': _(u'edit'), 'view': 'role_edit', 'args': 'object.id', 'famfam': 'medal_gold_1', 'permissions': {'namespace': 'permissions', 'permissions': [PERMISSION_ROLE_EDIT]}} role_edit = {'text': _(u'edit'), 'view': 'role_edit', 'args': 'object.id', 'famfam': 'medal_gold_1', 'permissions': [PERMISSION_ROLE_EDIT]}
role_members = {'text': _(u'members'), 'view': 'role_members', 'args': 'object.id', 'famfam': 'group_key', 'permissions': {'namespace': 'permissions', 'permissions': [PERMISSION_ROLE_EDIT]}} role_members = {'text': _(u'members'), 'view': 'role_members', 'args': 'object.id', 'famfam': 'group_key', 'permissions': [PERMISSION_ROLE_EDIT]}
role_permissions = {'text': _(u'role permissions'), 'view': 'role_permissions', 'args': 'object.id', 'famfam': 'key_go', 'permissions': {'namespace': 'permissions', 'permissions': [PERMISSION_PERMISSION_GRANT, PERMISSION_PERMISSION_REVOKE]}} role_permissions = {'text': _(u'role permissions'), 'view': 'role_permissions', 'args': 'object.id', 'famfam': 'key_go', 'permissions': [PERMISSION_PERMISSION_GRANT, PERMISSION_PERMISSION_REVOKE]}
role_delete = {'text': _(u'delete'), 'view': 'role_delete', 'args': 'object.id', 'famfam': 'medal_gold_delete', 'permissions': {'namespace': 'permissions', 'permissions': [PERMISSION_ROLE_DELETE]}} role_delete = {'text': _(u'delete'), 'view': 'role_delete', 'args': 'object.id', 'famfam': 'medal_gold_delete', 'permissions': [PERMISSION_ROLE_DELETE]}
register_links(Role, [role_edit, role_delete, role_permissions, role_members]) register_links(Role, [role_edit, role_delete, role_permissions, role_members])
register_links(['role_members', 'role_list', 'role_view', 'role_create', 'role_edit', 'role_permissions', 'role_delete'], [role_create, role_list], menu_name='sidebar') register_links(['role_members', 'role_list', 'role_view', 'role_create', 'role_edit', 'role_permissions', 'role_delete'], [role_create, role_list], menu_name='sidebar')

View File

@@ -11,36 +11,30 @@ from permissions import PERMISSION_ROLE_VIEW, PERMISSION_ROLE_EDIT, \
from permissions.models import Permission from permissions.models import Permission
def register_permissions(namespace, permissions): def register_permission(permission):
if permissions: try:
for permission in permissions: permission_obj, created = Permission.objects.get_or_create(
try: namespace=permission['namespace'], name=permission['name'])
permission_obj, created = Permission.objects.get_or_create( permission_obj.label = unicode(permission['label'])
namespace=namespace, name=permission['name']) permission_obj.save()
permission_obj.label = unicode(permission['label']) except DatabaseError:
permission_obj.save() #Special case for ./manage.py syncdb
except DatabaseError: pass
#Special case for ./manage.py syncdb
pass
#TODO: Handle anonymous users def check_permissions(requester, permission_list):
def check_permissions(requester, namespace, permission_list):
for permission_item in permission_list: for permission_item in permission_list:
permission = get_object_or_404(Permission, permission = get_object_or_404(Permission,
namespace=namespace, name=permission_item) namespace=permission_item['namespace'], name=permission_item['name'])
#if check_permission(requester, permission):
if permission.has_permission(requester): if permission.has_permission(requester):
return True return True
raise PermissionDenied(ugettext(u'Insufficient permissions.')) raise PermissionDenied(ugettext(u'Insufficient permissions.'))
register_permissions('permissions', [ register_permission(PERMISSION_ROLE_VIEW)
{'name': PERMISSION_ROLE_VIEW, 'label':_(u'View roles')}, register_permission(PERMISSION_ROLE_EDIT)
{'name': PERMISSION_ROLE_EDIT, 'label':_(u'Edit roles')}, register_permission(PERMISSION_ROLE_CREATE)
{'name': PERMISSION_ROLE_CREATE, 'label':_(u'Create roles')}, register_permission(PERMISSION_ROLE_DELETE)
{'name': PERMISSION_ROLE_DELETE, 'label':_(u'Delete roles')}, register_permission(PERMISSION_PERMISSION_GRANT)
{'name': PERMISSION_PERMISSION_GRANT, 'label':_(u'Grant permissions')}, register_permission(PERMISSION_PERMISSION_REVOKE)
{'name': PERMISSION_PERMISSION_REVOKE, 'label':_(u'Revoke permissions')},
])

View File

@@ -8,9 +8,8 @@ register = Library()
class CheckPermissionsNode(Node): class CheckPermissionsNode(Node):
def __init__(self, requester, namespace=None, permission_list=None, *args, **kwargs): def __init__(self, requester, permission_list=None, *args, **kwargs):
self.requester = requester self.requester = requester
self.namespace = namespace
self.permission_list = permission_list self.permission_list = permission_list
def render(self, context): def render(self, context):
@@ -21,9 +20,8 @@ class CheckPermissionsNode(Node):
context[u'permission'] = True context[u'permission'] = True
return u'' return u''
requester = Variable(self.requester).resolve(context) requester = Variable(self.requester).resolve(context)
namespace = Variable(self.namespace).resolve(context)
try: try:
check_permission_function(requester, namespace, permission_list) check_permission_function(requester, permission_list)
context[u'permission'] = True context[u'permission'] = True
return u'' return u''
except PermissionDenied: except PermissionDenied:

View File

@@ -23,7 +23,7 @@ from permissions.api import check_permissions
def role_list(request): def role_list(request):
check_permissions(request.user, 'permissions', [PERMISSION_ROLE_VIEW]) check_permissions(request.user, [PERMISSION_ROLE_VIEW])
return object_list( return object_list(
request, request,
@@ -54,7 +54,7 @@ def _role_permission_link(requester, permission, permission_list):
def role_permissions(request, role_id): def role_permissions(request, role_id):
check_permissions(request.user, 'permissions', [PERMISSION_PERMISSION_GRANT, PERMISSION_PERMISSION_REVOKE]) check_permissions(request.user, [PERMISSION_PERMISSION_GRANT, PERMISSION_PERMISSION_REVOKE])
role = get_object_or_404(Role, pk=role_id) role = get_object_or_404(Role, pk=role_id)
form = RoleForm_view(instance=role) form = RoleForm_view(instance=role)
@@ -89,7 +89,7 @@ def role_permissions(request, role_id):
def role_edit(request, role_id): def role_edit(request, role_id):
check_permissions(request.user, 'permissions', [PERMISSION_ROLE_EDIT]) check_permissions(request.user, [PERMISSION_ROLE_EDIT])
return update_object(request, template_name='generic_form.html', return update_object(request, template_name='generic_form.html',
form_class=RoleForm, object_id=role_id, extra_context={ form_class=RoleForm, object_id=role_id, extra_context={
@@ -97,7 +97,7 @@ def role_edit(request, role_id):
def role_create(request): def role_create(request):
check_permissions(request.user, 'permissions', [PERMISSION_ROLE_CREATE]) check_permissions(request.user, [PERMISSION_ROLE_CREATE])
return create_object(request, model=Role, return create_object(request, model=Role,
template_name='generic_form.html', template_name='generic_form.html',
@@ -105,7 +105,7 @@ def role_create(request):
def role_delete(request, role_id): def role_delete(request, role_id):
check_permissions(request.user, 'permissions', [PERMISSION_ROLE_DELETE]) check_permissions(request.user, [PERMISSION_ROLE_DELETE])
next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', None))) next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', None)))
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', None))) previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', None)))
@@ -129,12 +129,12 @@ def permission_grant_revoke(request, permission_id, app_label, module_name, pk,
permission = get_object_or_404(Permission, pk=permission_id) permission = get_object_or_404(Permission, pk=permission_id)
if action == 'grant': if action == 'grant':
check_permissions(request.user, 'permissions', [PERMISSION_PERMISSION_GRANT]) check_permissions(request.user, [PERMISSION_PERMISSION_GRANT])
title = _(u'Are you sure you wish to grant the permission "%(permission)s" to %(ct_name)s: %(requester)s') % { title = _(u'Are you sure you wish to grant the permission "%(permission)s" to %(ct_name)s: %(requester)s') % {
'permission': permission, 'ct_name': ct.name, 'requester': requester} 'permission': permission, 'ct_name': ct.name, 'requester': requester}
elif action == 'revoke': elif action == 'revoke':
check_permissions(request.user, 'permissions', [PERMISSION_PERMISSION_REVOKE]) check_permissions(request.user, [PERMISSION_PERMISSION_REVOKE])
title = _(u'Are you sure you wish to revoke the permission "%(permission)s" from %(ct_name)s: %(requester)s') % { title = _(u'Are you sure you wish to revoke the permission "%(permission)s" from %(ct_name)s: %(requester)s') % {
'permission': permission, 'ct_name': ct.name, 'requester': requester} 'permission': permission, 'ct_name': ct.name, 'requester': requester}
else: else:
@@ -202,7 +202,7 @@ def remove_role_member(role, selection):
def role_members(request, role_id): def role_members(request, role_id):
check_permissions(request.user, 'permissions', [PERMISSION_ROLE_EDIT]) check_permissions(request.user, [PERMISSION_ROLE_EDIT])
role = get_object_or_404(Role, pk=role_id) role = get_object_or_404(Role, pk=role_id)
return assign_remove( return assign_remove(

View File

@@ -2,31 +2,29 @@ from django.utils.translation import ugettext_lazy as _
from navigation.api import register_links, register_menu, \ from navigation.api import register_links, register_menu, \
register_model_list_columns, register_multi_item_links register_model_list_columns, register_multi_item_links
from permissions.api import register_permissions from permissions.api import register_permission
from navigation.api import register_sidebar_template from navigation.api import register_sidebar_template
from taggit.models import Tag from taggit.models import Tag
PERMISSION_TAG_CREATE = 'tag_create' PERMISSION_TAG_CREATE = {'namespace': 'tags', 'name': 'tag_create', 'label': _(u'Create new tags')}
PERMISSION_TAG_ATTACH = 'tag_attach' PERMISSION_TAG_ATTACH = {'namespace': 'tags', 'name': 'tag_attach', 'label': _(u'Attach exising tags')}
PERMISSION_TAG_REMOVE = 'tag_remove' PERMISSION_TAG_REMOVE = {'namespace': 'tags', 'name': 'tag_remove', 'label': _(u'Remove tags from documents')}
PERMISSION_TAG_DELETE = 'tag_delete' PERMISSION_TAG_DELETE = {'namespace': 'tags', 'name': 'tag_delete', 'label': _(u'Delete global tags')}
PERMISSION_TAG_EDIT = 'tag_edit' PERMISSION_TAG_EDIT = {'namespace': 'tags', 'name': 'tag_edit', 'label': _(u'Edit global tags')}
register_permissions('tags', [ register_permission(PERMISSION_TAG_CREATE)
{'name': PERMISSION_TAG_CREATE, 'label': _(u'Create new tags')}, register_permission(PERMISSION_TAG_ATTACH)
{'name': PERMISSION_TAG_ATTACH, 'label': _(u'Attach exising tags')}, register_permission(PERMISSION_TAG_REMOVE)
{'name': PERMISSION_TAG_REMOVE, 'label': _(u'Remove tags from documents')}, register_permission(PERMISSION_TAG_DELETE)
{'name': PERMISSION_TAG_DELETE, 'label': _(u'Delete global tags')}, register_permission(PERMISSION_TAG_EDIT)
{'name': PERMISSION_TAG_EDIT, 'label': _(u'Edit global tags')},
])
tag_list = {'text': _(u'tags'), 'view': 'tag_list', 'famfam': 'tag_blue'} tag_list = {'text': _(u'tags'), 'view': 'tag_list', 'famfam': 'tag_blue'}
tag_document_remove = {'text': _(u'remove'), 'view': 'tag_remove', 'args': ['object.id', 'document.id'], 'famfam': 'tag_blue_delete', 'permissions': {'namespace': 'tags', 'permissions': [PERMISSION_TAG_REMOVE]}} tag_document_remove = {'text': _(u'remove'), 'view': 'tag_remove', 'args': ['object.id', 'document.id'], 'famfam': 'tag_blue_delete', 'permissions': [PERMISSION_TAG_REMOVE]}
tag_delete = {'text': _(u'delete'), 'view': 'tag_delete', 'args': 'object.id', 'famfam': 'tag_blue_delete', 'permissions': {'namespace': 'tags', 'permissions': [PERMISSION_TAG_DELETE]}} tag_delete = {'text': _(u'delete'), 'view': 'tag_delete', 'args': 'object.id', 'famfam': 'tag_blue_delete', 'permissions': [PERMISSION_TAG_DELETE]}
tag_edit = {'text': _(u'edit'), 'view': 'tag_edit', 'args': 'object.id', 'famfam': 'tag_blue_edit', 'permissions': {'namespace': 'tags', 'permissions': [PERMISSION_TAG_EDIT]}} tag_edit = {'text': _(u'edit'), 'view': 'tag_edit', 'args': 'object.id', 'famfam': 'tag_blue_edit', 'permissions': [PERMISSION_TAG_EDIT]}
tag_tagged_item_list = {'text': _(u'tagged documents'), 'view': 'tag_tagged_item_list', 'args': 'object.id', 'famfam': 'tag_blue'} tag_tagged_item_list = {'text': _(u'tagged documents'), 'view': 'tag_tagged_item_list', 'args': 'object.id', 'famfam': 'tag_blue'}
tag_multiple_delete = {'text': _(u'delete'), 'view': 'tag_multiple_delete', 'famfam': 'tag_blue_delete', 'permissions': {'namespace': 'tags', 'permissions': [PERMISSION_TAG_DELETE]}} tag_multiple_delete = {'text': _(u'delete'), 'view': 'tag_multiple_delete', 'famfam': 'tag_blue_delete', 'permissions': [PERMISSION_TAG_DELETE]}
register_model_list_columns(Tag, [ register_model_list_columns(Tag, [
{ {

View File

@@ -17,7 +17,7 @@ from tags import PERMISSION_TAG_CREATE, PERMISSION_TAG_ATTACH, \
def tag_remove(request, tag_id, document_id): def tag_remove(request, tag_id, document_id):
check_permissions(request.user, 'tags', [PERMISSION_TAG_REMOVE]) check_permissions(request.user, [PERMISSION_TAG_REMOVE])
tag = get_object_or_404(Tag, pk=tag_id) tag = get_object_or_404(Tag, pk=tag_id)
document = get_object_or_404(Document, pk=document_id) document = get_object_or_404(Document, pk=document_id)
@@ -39,14 +39,14 @@ def tag_add(request, document_id):
form = AddTagForm(request.POST) form = AddTagForm(request.POST)
if form.is_valid(): if form.is_valid():
if form.cleaned_data['new_tag']: if form.cleaned_data['new_tag']:
check_permissions(request.user, 'tags', [PERMISSION_TAG_CREATE]) check_permissions(request.user, [PERMISSION_TAG_CREATE])
tag_name = form.cleaned_data['new_tag'] tag_name = form.cleaned_data['new_tag']
if Tag.objects.filter(name=tag_name): if Tag.objects.filter(name=tag_name):
is_new = False is_new = False
else: else:
is_new = True is_new = True
elif form.cleaned_data['existing_tags']: elif form.cleaned_data['existing_tags']:
check_permissions(request.user, 'tags', [PERMISSION_TAG_ATTACH]) check_permissions(request.user, [PERMISSION_TAG_ATTACH])
tag_name = form.cleaned_data['existing_tags'] tag_name = form.cleaned_data['existing_tags']
is_new = False is_new = False
else: else:
@@ -84,7 +84,7 @@ def tag_list(request):
def tag_delete(request, tag_id=None, tag_id_list=None): def tag_delete(request, tag_id=None, tag_id_list=None):
check_permissions(request.user, 'tags', [PERMISSION_TAG_DELETE]) check_permissions(request.user, [PERMISSION_TAG_DELETE])
post_action_redirect = None post_action_redirect = None
if tag_id: if tag_id:
@@ -137,7 +137,7 @@ def tag_multiple_delete(request):
def tag_edit(request, tag_id): def tag_edit(request, tag_id):
check_permissions(request.user, 'tags', [PERMISSION_TAG_EDIT]) check_permissions(request.user, [PERMISSION_TAG_EDIT])
tag = get_object_or_404(Tag, pk=tag_id) tag = get_object_or_404(Tag, pk=tag_id)
if request.method == 'POST': if request.method == 'POST':

View File

@@ -2,45 +2,41 @@ from django.utils.translation import ugettext_lazy as _
from django.contrib.auth.models import User, Group from django.contrib.auth.models import User, Group
from navigation.api import register_links, register_multi_item_links from navigation.api import register_links, register_multi_item_links
from permissions.api import register_permissions from permissions.api import register_permission
PERMISSION_USER_CREATE = 'user_create' PERMISSION_USER_CREATE = {'namespace': 'user_manageent', 'name': 'user_create', 'label': _(u'Create new users')}
PERMISSION_USER_EDIT = 'user_edit' PERMISSION_USER_EDIT = {'namespace': 'user_manageent', 'name': 'user_edit', 'label': _(u'Edit existing users')}
PERMISSION_USER_VIEW = 'user_view' PERMISSION_USER_VIEW = {'namespace': 'user_manageent', 'name': 'user_view', 'label': _(u'View existing users')}
PERMISSION_USER_DELETE = 'user_delete' PERMISSION_USER_DELETE = {'namespace': 'user_manageent', 'name': 'user_delete', 'label': _(u'Delete existing users')}
PERMISSION_GROUP_CREATE = 'group_create' PERMISSION_GROUP_CREATE = {'namespace': 'user_manageent', 'name': 'group_create', 'label': _(u'Create new groups')}
PERMISSION_GROUP_EDIT = 'group_edit' PERMISSION_GROUP_EDIT = {'namespace': 'user_manageent', 'name': 'group_edit', 'label': _(u'Edit existing groups')}
PERMISSION_GROUP_VIEW = 'group_view' PERMISSION_GROUP_VIEW = {'namespace': 'user_manageent', 'name': 'group_view', 'label': _(u'View existing groups')}
PERMISSION_GROUP_DELETE = 'group_delete' PERMISSION_GROUP_DELETE = {'namespace': 'user_manageent', 'name': 'group_delete', 'label': _(u'Delete existing groups')}
register_permissions('user_management', [ register_permission(PERMISSION_USER_CREATE)
# Users register_permission(PERMISSION_USER_EDIT)
{'name': PERMISSION_USER_CREATE, 'label': _(u'Create new users')}, register_permission(PERMISSION_USER_VIEW)
{'name': PERMISSION_USER_EDIT, 'label': _(u'Edit existing users')}, register_permission(PERMISSION_USER_DELETE)
{'name': PERMISSION_USER_VIEW, 'label': _(u'View existing users')}, register_permission(PERMISSION_GROUP_CREATE)
{'name': PERMISSION_USER_DELETE, 'label': _(u'Delete existing users')}, register_permission(PERMISSION_GROUP_EDIT)
# Groups register_permission(PERMISSION_GROUP_VIEW)
{'name': PERMISSION_GROUP_CREATE, 'label': _(u'Create new groups')}, register_permission(PERMISSION_GROUP_DELETE)
{'name': PERMISSION_GROUP_EDIT, 'label': _(u'Edit existing groups')},
{'name': PERMISSION_GROUP_VIEW, 'label': _(u'View existing groups')},
{'name': PERMISSION_GROUP_DELETE, 'label': _(u'Delete existing groups')},
])
user_list = {'text': _(u'user list'), 'view': 'user_list', 'famfam': 'user', 'permissions': {'namespace': 'user_management', 'permissions': [PERMISSION_USER_VIEW]}} user_list = {'text': _(u'user list'), 'view': 'user_list', 'famfam': 'user', 'permissions': [PERMISSION_USER_VIEW]}
user_edit = {'text': _(u'edit'), 'view': 'user_edit', 'args': 'object.id', 'famfam': 'user_edit', 'permissions': {'namespace': 'user_management', 'permissions': [PERMISSION_USER_EDIT]}} user_edit = {'text': _(u'edit'), 'view': 'user_edit', 'args': 'object.id', 'famfam': 'user_edit', 'permissions': [PERMISSION_USER_EDIT]}
user_add = {'text': _(u'create new user'), 'view': 'user_add', 'famfam': 'user_add', 'permissions': {'namespace': 'user_management', 'permissions': [PERMISSION_USER_CREATE]}} user_add = {'text': _(u'create new user'), 'view': 'user_add', 'famfam': 'user_add', 'permissions': [PERMISSION_USER_CREATE]}
user_delete = {u'text': _('delete'), 'view': 'user_delete', 'args': 'object.id', 'famfam': 'user_delete', 'permissions': {'namespace': 'user_management', 'permissions': [PERMISSION_USER_DELETE]}} user_delete = {u'text': _('delete'), 'view': 'user_delete', 'args': 'object.id', 'famfam': 'user_delete', 'permissions': [PERMISSION_USER_DELETE]}
user_multiple_delete = {u'text': _('delete'), 'view': 'user_multiple_delete', 'famfam': 'user_delete', 'permissions': {'namespace': 'user_management', 'permissions': [PERMISSION_USER_DELETE]}} user_multiple_delete = {u'text': _('delete'), 'view': 'user_multiple_delete', 'famfam': 'user_delete', 'permissions': [PERMISSION_USER_DELETE]}
user_set_password = {u'text': _('reset password'), 'view': 'user_set_password', 'args': 'object.id', 'famfam': 'lock_edit', 'permissions': {'namespace': 'user_management', 'permissions': [PERMISSION_USER_EDIT]}} user_set_password = {u'text': _('reset password'), 'view': 'user_set_password', 'args': 'object.id', 'famfam': 'lock_edit', 'permissions': [PERMISSION_USER_EDIT]}
user_multiple_set_password = {u'text': _('reset password'), 'view': 'user_multiple_set_password', 'famfam': 'lock_edit', 'permissions': {'namespace': 'user_management', 'permissions': [PERMISSION_USER_EDIT]}} user_multiple_set_password = {u'text': _('reset password'), 'view': 'user_multiple_set_password', 'famfam': 'lock_edit', 'permissions': [PERMISSION_USER_EDIT]}
group_list = {'text': _(u'group list'), 'view': 'group_list', 'famfam': 'group', 'permissions': {'namespace': 'user_management', 'permissions': [PERMISSION_GROUP_VIEW]}} group_list = {'text': _(u'group list'), 'view': 'group_list', 'famfam': 'group', 'permissions': [PERMISSION_GROUP_VIEW]}
group_edit = {'text': _(u'edit'), 'view': 'group_edit', 'args': 'object.id', 'famfam': 'group_edit', 'permissions': {'namespace': 'user_management', 'permissions': [PERMISSION_GROUP_EDIT]}} group_edit = {'text': _(u'edit'), 'view': 'group_edit', 'args': 'object.id', 'famfam': 'group_edit', 'permissions': [PERMISSION_GROUP_EDIT]}
group_add = {'text': _(u'create new group'), 'view': 'group_add', 'famfam': 'group_add', 'permissions': {'namespace': 'user_management', 'permissions': [PERMISSION_GROUP_CREATE]}} group_add = {'text': _(u'create new group'), 'view': 'group_add', 'famfam': 'group_add', 'permissions': [PERMISSION_GROUP_CREATE]}
group_delete = {u'text': _('delete'), 'view': 'group_delete', 'args': 'object.id', 'famfam': 'group_delete', 'permissions': {'namespace': 'user_management', 'permissions': [PERMISSION_GROUP_DELETE]}} group_delete = {u'text': _('delete'), 'view': 'group_delete', 'args': 'object.id', 'famfam': 'group_delete', 'permissions': [PERMISSION_GROUP_DELETE]}
group_multiple_delete = {u'text': _('delete'), 'view': 'group_multiple_delete', 'famfam': 'group_delete', 'permissions': {'namespace': 'user_management', 'permissions': [PERMISSION_GROUP_DELETE]}} group_multiple_delete = {u'text': _('delete'), 'view': 'group_multiple_delete', 'famfam': 'group_delete', 'permissions': [PERMISSION_GROUP_DELETE]}
group_members = {'text': _(u'members'), 'view': 'group_members', 'args': 'object.id', 'famfam': 'group_link', 'permissions': {'namespace': 'user_management', 'permissions': [PERMISSION_GROUP_EDIT]}} group_members = {'text': _(u'members'), 'view': 'group_members', 'args': 'object.id', 'famfam': 'group_link', 'permissions': [PERMISSION_GROUP_EDIT]}
register_links(User, [user_edit, user_set_password, user_delete]) register_links(User, [user_edit, user_set_password, user_delete])
register_links(['user_multiple_set_password', 'user_set_password', 'user_multiple_delete', 'user_delete', 'user_edit', 'user_list', 'user_add'], [user_add, user_list], menu_name=u'sidebar') register_links(['user_multiple_set_password', 'user_set_password', 'user_multiple_delete', 'user_delete', 'user_edit', 'user_list', 'user_add'], [user_add, user_list], menu_name=u'sidebar')

View File

@@ -20,7 +20,7 @@ from user_management.forms import UserForm, PasswordForm, GroupForm
def user_list(request): def user_list(request):
check_permissions(request.user, 'user_management', [PERMISSION_USER_VIEW]) check_permissions(request.user, [PERMISSION_USER_VIEW])
return object_list( return object_list(
request, request,
@@ -50,7 +50,7 @@ def user_list(request):
def user_edit(request, user_id): def user_edit(request, user_id):
check_permissions(request.user, 'user_management', [PERMISSION_USER_EDIT]) check_permissions(request.user, [PERMISSION_USER_EDIT])
user = get_object_or_404(User, pk=user_id) user = get_object_or_404(User, pk=user_id)
if user.is_superuser or user.is_staff: if user.is_superuser or user.is_staff:
@@ -76,7 +76,7 @@ def user_edit(request, user_id):
def user_add(request): def user_add(request):
check_permissions(request.user, 'user_management', [PERMISSION_USER_CREATE]) check_permissions(request.user, [PERMISSION_USER_CREATE])
if request.method == 'POST': if request.method == 'POST':
form = UserForm(request.POST) form = UserForm(request.POST)
@@ -95,7 +95,7 @@ def user_add(request):
def user_delete(request, user_id=None, user_id_list=None): def user_delete(request, user_id=None, user_id_list=None):
check_permissions(request.user, 'user_management', [PERMISSION_USER_DELETE]) check_permissions(request.user, [PERMISSION_USER_DELETE])
post_action_redirect = None post_action_redirect = None
if user_id: if user_id:
@@ -149,7 +149,7 @@ def user_multiple_delete(request):
def user_set_password(request, user_id=None, user_id_list=None): def user_set_password(request, user_id=None, user_id_list=None):
check_permissions(request.user, 'user_management', [PERMISSION_USER_EDIT]) check_permissions(request.user, [PERMISSION_USER_EDIT])
post_action_redirect = None post_action_redirect = None
if user_id: if user_id:
@@ -211,7 +211,7 @@ def user_multiple_set_password(request):
def group_list(request): def group_list(request):
check_permissions(request.user, 'user_management', [PERMISSION_GROUP_VIEW]) check_permissions(request.user, [PERMISSION_GROUP_VIEW])
return object_list( return object_list(
request, request,
@@ -232,7 +232,7 @@ def group_list(request):
def group_edit(request, group_id): def group_edit(request, group_id):
check_permissions(request.user, 'user_management', [PERMISSION_GROUP_EDIT]) check_permissions(request.user, [PERMISSION_GROUP_EDIT])
group = get_object_or_404(Group, pk=group_id) group = get_object_or_404(Group, pk=group_id)
if request.method == 'POST': if request.method == 'POST':
@@ -254,7 +254,7 @@ def group_edit(request, group_id):
def group_add(request): def group_add(request):
check_permissions(request.user, 'user_management', [PERMISSION_GROUP_CREATE]) check_permissions(request.user, [PERMISSION_GROUP_CREATE])
if request.method == 'POST': if request.method == 'POST':
form = GroupForm(request.POST) form = GroupForm(request.POST)
@@ -273,7 +273,7 @@ def group_add(request):
def group_delete(request, group_id=None, group_id_list=None): def group_delete(request, group_id=None, group_id_list=None):
check_permissions(request.user, 'user_management', [PERMISSION_GROUP_DELETE]) check_permissions(request.user, [PERMISSION_GROUP_DELETE])
post_action_redirect = None post_action_redirect = None
if group_id: if group_id:
@@ -332,7 +332,7 @@ def get_non_group_members(group):
def group_members(request, group_id): def group_members(request, group_id):
check_permissions(request.user, 'user_management', [PERMISSION_GROUP_EDIT]) check_permissions(request.user, [PERMISSION_GROUP_EDIT])
group = get_object_or_404(Group, pk=group_id) group = get_object_or_404(Group, pk=group_id)
return assign_remove( return assign_remove(

View File

@@ -82,11 +82,12 @@ Common
Permissions Permissions
=========== ===========
* Add permissions support to menus - STARTED (secondary menus done) * Add permissions support to menus - DONE
* Role editing view under setup - DONE * Role editing view under setup - DONE
* Implement permissions decorators * Implement permissions decorators
* Add user editing under roles menus - DONE * Add user editing under roles menus - DONE
* Workflows app * Workflows app
* Handle anonymous users
Documents Documents
========= =========
@@ -112,7 +113,7 @@ Documents
* Document model's delete method might not get called when deleting in bulk * Document model's delete method might not get called when deleting in bulk
from a queryset from a queryset
* Allow metadata entry form to mix required and non required metadata - DEFFERED * Allow metadata entry form to mix required and non required metadata - DEFFERED
* Block Setup menu item to non staff and non superuser users * Block Setup menu item to non staff and non superuser users - DONE by means of evaluation or permissions
* Include annotations in transformed documents downloads * Include annotations in transformed documents downloads
* Toggable option to include default transformation on document upload * Toggable option to include default transformation on document upload
* Add document tagging - DONE * Add document tagging - DONE