Update the documents app to use the new class based permissions

This commit is contained in:
Roberto Rosario
2011-12-08 16:49:11 -04:00
parent 24c6f60caf
commit c5518c222a
3 changed files with 63 additions and 74 deletions

View File

@@ -7,7 +7,6 @@ from navigation.api import register_links, register_top_menu, \
register_model_list_columns, register_multi_item_links, \
register_sidebar_template
from main.api import register_diagnostic, register_maintenance_links
from permissions.api import register_permission, set_namespace_title
from tags.widgets import get_tags_inline_widget_simple
from history.api import register_history_type
from metadata.api import get_metadata_string
@@ -20,9 +19,9 @@ from documents.literals import (PERMISSION_DOCUMENT_CREATE,
PERMISSION_DOCUMENT_PROPERTIES_EDIT, PERMISSION_DOCUMENT_VIEW,
PERMISSION_DOCUMENT_DELETE, PERMISSION_DOCUMENT_DOWNLOAD,
PERMISSION_DOCUMENT_TRANSFORM, PERMISSION_DOCUMENT_TOOLS,
PERMISSION_DOCUMENT_EDIT, PERMISSION_DOCUMENT_VERSION_REVERT)
from documents.literals import (PERMISSION_DOCUMENT_TYPE_EDIT,
PERMISSION_DOCUMENT_TYPE_DELETE, PERMISSION_DOCUMENT_TYPE_CREATE)
PERMISSION_DOCUMENT_EDIT, PERMISSION_DOCUMENT_VERSION_REVERT,
PERMISSION_DOCUMENT_TYPE_EDIT, PERMISSION_DOCUMENT_TYPE_DELETE,
PERMISSION_DOCUMENT_TYPE_CREATE)
from documents.literals import (HISTORY_DOCUMENT_CREATED,
HISTORY_DOCUMENT_EDITED, HISTORY_DOCUMENT_DELETED)
from documents.conf.settings import ZOOM_MAX_LEVEL
@@ -50,24 +49,6 @@ def is_max_zoom(context):
def is_current_version(context):
return context['object'].document.latest_version.timestamp == context['object'].timestamp
# Permission setup
set_namespace_title('documents', _(u'Documents'))
register_permission(PERMISSION_DOCUMENT_CREATE)
register_permission(PERMISSION_DOCUMENT_PROPERTIES_EDIT)
register_permission(PERMISSION_DOCUMENT_EDIT)
register_permission(PERMISSION_DOCUMENT_VIEW)
register_permission(PERMISSION_DOCUMENT_DELETE)
register_permission(PERMISSION_DOCUMENT_DOWNLOAD)
register_permission(PERMISSION_DOCUMENT_TRANSFORM)
register_permission(PERMISSION_DOCUMENT_TOOLS)
register_permission(PERMISSION_DOCUMENT_VERSION_REVERT)
# Document type permissions
set_namespace_title('documents_setup', _(u'Documents setup'))
register_permission(PERMISSION_DOCUMENT_TYPE_EDIT)
register_permission(PERMISSION_DOCUMENT_TYPE_DELETE)
register_permission(PERMISSION_DOCUMENT_TYPE_CREATE)
# History setup
register_history_type(HISTORY_DOCUMENT_CREATED)
register_history_type(HISTORY_DOCUMENT_EDITED)

View File

@@ -1,23 +1,31 @@
from django.utils.translation import ugettext_lazy as _
from permissions.models import PermissionNamespace, Permission
PICTURE_ERROR_SMALL = u'picture_error.png'
PICTURE_ERROR_MEDIUM = u'1297211435_error.png'
PICTURE_UNKNOWN_SMALL = u'1299549572_unknown2.png'
PICTURE_UNKNOWN_MEDIUM = u'1299549805_unknown.png'
PERMISSION_DOCUMENT_CREATE = {'namespace': 'documents', 'name': 'document_create', 'label': _(u'Create documents')}
PERMISSION_DOCUMENT_PROPERTIES_EDIT = {'namespace': 'documents', 'name': 'document_properties_edit', 'label': _(u'Edit document properties')}
PERMISSION_DOCUMENT_EDIT = {'namespace': 'documents', 'name': 'document_edit', 'label': _(u'Edit documents')}
PERMISSION_DOCUMENT_VIEW = {'namespace': 'documents', 'name': 'document_view', 'label': _(u'View documents')}
PERMISSION_DOCUMENT_DELETE = {'namespace': 'documents', 'name': 'document_delete', 'label': _(u'Delete documents')}
PERMISSION_DOCUMENT_DOWNLOAD = {'namespace': 'documents', 'name': 'document_download', 'label': _(u'Download documents')}
PERMISSION_DOCUMENT_TRANSFORM = {'namespace': 'documents', 'name': 'document_transform', 'label': _(u'Transform documents')}
PERMISSION_DOCUMENT_TOOLS = {'namespace': 'documents', 'name': 'document_tools', 'label': _(u'Execute document modifying tools')}
PERMISSION_DOCUMENT_VERSION_REVERT = {'namespace': 'documents', 'name': 'document_version_revert', 'label': _(u'Revert documents to a previous version')}
document_namespace = PermissionNamespace('documents', _(u'Documents'))
PERMISSION_DOCUMENT_CREATE = Permission.objects.register(document_namespace, 'document_create', _(u'Create documents'))
PERMISSION_DOCUMENT_PROPERTIES_EDIT = Permission.objects.register(document_namespace, 'document_properties_edit', _(u'Edit document properties'))
PERMISSION_DOCUMENT_EDIT = Permission.objects.register(document_namespace, 'document_edit', _(u'Edit documents'))
PERMISSION_DOCUMENT_VIEW = Permission.objects.register(document_namespace, 'document_view', _(u'View documents'))
PERMISSION_DOCUMENT_DELETE = Permission.objects.register(document_namespace, 'document_delete', _(u'Delete documents'))
PERMISSION_DOCUMENT_DOWNLOAD = Permission.objects.register(document_namespace, 'document_download', _(u'Download documents'))
PERMISSION_DOCUMENT_TRANSFORM = Permission.objects.register(document_namespace, 'document_transform', _(u'Transform documents'))
PERMISSION_DOCUMENT_TOOLS = Permission.objects.register(document_namespace, 'document_tools', _(u'Execute document modifying tools'))
PERMISSION_DOCUMENT_VERSION_REVERT = Permission.objects.register(document_namespace, 'document_version_revert', _(u'Revert documents to a previous version'))
documents_setup_namespace = PermissionNamespace('documents_setup', _(u'Documents setup'))
PERMISSION_DOCUMENT_TYPE_EDIT = Permission.objects.register(documents_setup_namespace, 'document_type_edit', _(u'Edit document types'))
PERMISSION_DOCUMENT_TYPE_DELETE = Permission.objects.register(documents_setup_namespace, 'document_type_delete', _(u'Delete document types'))
PERMISSION_DOCUMENT_TYPE_CREATE = Permission.objects.register(documents_setup_namespace, 'document_type_create', _(u'Create document types'))
PERMISSION_DOCUMENT_TYPE_EDIT = {'namespace': 'documents_setup', 'name': 'document_type_edit', 'label': _(u'Edit document types')}
PERMISSION_DOCUMENT_TYPE_DELETE = {'namespace': 'documents_setup', 'name': 'document_type_delete', 'label': _(u'Delete document types')}
PERMISSION_DOCUMENT_TYPE_CREATE = {'namespace': 'documents_setup', 'name': 'document_type_create', 'label': _(u'Create document types')}
HISTORY_DOCUMENT_CREATED = {
'namespace': 'documents', 'name': 'document_created',

View File

@@ -23,7 +23,7 @@ from converter.office_converter import OfficeConverter
from filetransfers.api import serve_file
from metadata.forms import MetadataFormSet, MetadataSelectionForm
from navigation.utils import resolve_to_name
from permissions.api import check_permissions
from permissions.models import Permission
from document_indexing.api import update_indexes, delete_indexes
from history.api import create_history
@@ -64,7 +64,7 @@ from documents.literals import PERMISSION_DOCUMENT_TYPE_EDIT, \
def document_list(request, object_list=None, title=None, extra_context=None):
check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
context = {
'object_list': object_list if not (object_list is None) else Document.objects.all(),
@@ -80,7 +80,7 @@ def document_list(request, object_list=None, title=None, extra_context=None):
def document_create(request):
check_permissions(request.user, [PERMISSION_DOCUMENT_CREATE])
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_CREATE])
wizard = DocumentCreateWizard(form_list=[DocumentTypeSelectForm, MetadataSelectionForm, MetadataFormSet])
@@ -88,7 +88,7 @@ def document_create(request):
def document_create_siblings(request, document_id):
check_permissions(request.user, [PERMISSION_DOCUMENT_CREATE])
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_CREATE])
document = get_object_or_404(Document, pk=document_id)
query_dict = {}
@@ -104,7 +104,7 @@ def document_create_siblings(request, document_id):
def document_view(request, document_id, advanced=False):
check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
#document = get_object_or_404(Document.objects.select_related(), pk=document_id)
# Triggers a 404 error on documents uploaded via local upload
# TODO: investigate
@@ -173,7 +173,7 @@ def document_view(request, document_id, advanced=False):
def document_delete(request, document_id=None, document_id_list=None):
check_permissions(request.user, [PERMISSION_DOCUMENT_DELETE])
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_DELETE])
post_action_redirect = None
if document_id:
@@ -230,7 +230,7 @@ def document_multiple_delete(request):
def document_edit(request, document_id):
check_permissions(request.user, [PERMISSION_DOCUMENT_PROPERTIES_EDIT])
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_PROPERTIES_EDIT])
document = get_object_or_404(Document, pk=document_id)
@@ -273,7 +273,7 @@ def document_edit(request, document_id):
def get_document_image(request, document_id, size=PREVIEW_SIZE, base64_version=False):
check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
document = get_object_or_404(Document, pk=document_id)
@@ -299,7 +299,7 @@ def get_document_image(request, document_id, size=PREVIEW_SIZE, base64_version=F
def document_download(request, document_id=None, document_version_pk=None):
check_permissions(request.user, [PERMISSION_DOCUMENT_DOWNLOAD])
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_DOWNLOAD])
if document_version_pk:
document_version = get_object_or_404(DocumentVersion, pk=document_version_pk)
@@ -322,7 +322,7 @@ def document_download(request, document_id=None, document_version_pk=None):
def document_page_transformation_list(request, document_page_id):
check_permissions(request.user, [PERMISSION_DOCUMENT_TRANSFORM])
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_TRANSFORM])
document_page = get_object_or_404(DocumentPage, pk=document_page_id)
@@ -348,7 +348,7 @@ def document_page_transformation_list(request, document_page_id):
def document_page_transformation_create(request, document_page_id):
check_permissions(request.user, [PERMISSION_DOCUMENT_TRANSFORM])
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_TRANSFORM])
document_page = get_object_or_404(DocumentPage, pk=document_page_id)
@@ -373,7 +373,7 @@ def document_page_transformation_create(request, document_page_id):
def document_page_transformation_edit(request, document_page_transformation_id):
check_permissions(request.user, [PERMISSION_DOCUMENT_TRANSFORM])
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_TRANSFORM])
document_page_transformation = get_object_or_404(DocumentPageTransformation, pk=document_page_transformation_id)
@@ -403,7 +403,7 @@ def document_page_transformation_edit(request, document_page_transformation_id):
def document_page_transformation_delete(request, document_page_transformation_id):
check_permissions(request.user, [PERMISSION_DOCUMENT_TRANSFORM])
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_TRANSFORM])
document_page_transformation = get_object_or_404(DocumentPageTransformation, pk=document_page_transformation_id)
@@ -434,7 +434,7 @@ def document_page_transformation_delete(request, document_page_transformation_id
def document_find_duplicates(request, document_id):
check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
document = get_object_or_404(Document, pk=document_id)
extra_context = {
@@ -478,13 +478,13 @@ def _find_duplicate_list(request, source_document_list=Document.objects.all(), i
def document_find_all_duplicates(request):
check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
return _find_duplicate_list(request, include_source=True)
def document_update_page_count(request):
check_permissions(request.user, [PERMISSION_DOCUMENT_TOOLS])
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_TOOLS])
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', '/')))
office_converter = OfficeConverter()
@@ -515,7 +515,7 @@ def document_update_page_count(request):
def document_clear_transformations(request, document_id=None, document_id_list=None):
check_permissions(request.user, [PERMISSION_DOCUMENT_TRANSFORM])
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_TRANSFORM])
if document_id:
documents = [get_object_or_404(Document.objects, pk=document_id)]
@@ -567,7 +567,7 @@ def document_multiple_clear_transformations(request):
def document_missing_list(request):
check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', None)))
@@ -589,7 +589,7 @@ def document_missing_list(request):
def document_page_view(request, document_page_id):
check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
document_page = get_object_or_404(DocumentPage, pk=document_page_id)
@@ -625,7 +625,7 @@ def document_page_view_reset(request, document_page_id):
def document_page_text(request, document_page_id):
check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
document_page = get_object_or_404(DocumentPage, pk=document_page_id)
document_page_form = DocumentPageForm_text(instance=document_page)
@@ -640,7 +640,7 @@ def document_page_text(request, document_page_id):
def document_page_edit(request, document_page_id):
check_permissions(request.user, [PERMISSION_DOCUMENT_EDIT])
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_EDIT])
document_page = get_object_or_404(DocumentPage, pk=document_page_id)
@@ -665,7 +665,7 @@ def document_page_edit(request, document_page_id):
def document_page_navigation_next(request, document_page_id):
check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
view = resolve_to_name(urlparse.urlparse(request.META.get('HTTP_REFERER', u'/')).path)
document_page = get_object_or_404(DocumentPage, pk=document_page_id)
@@ -678,7 +678,7 @@ def document_page_navigation_next(request, document_page_id):
def document_page_navigation_previous(request, document_page_id):
check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
view = resolve_to_name(urlparse.urlparse(request.META.get('HTTP_REFERER', u'/')).path)
document_page = get_object_or_404(DocumentPage, pk=document_page_id)
@@ -691,7 +691,7 @@ def document_page_navigation_previous(request, document_page_id):
def document_page_navigation_first(request, document_page_id):
check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
view = resolve_to_name(urlparse.urlparse(request.META.get('HTTP_REFERER', u'/')).path)
document_page = get_object_or_404(DocumentPage, pk=document_page_id)
@@ -700,7 +700,7 @@ def document_page_navigation_first(request, document_page_id):
def document_page_navigation_last(request, document_page_id):
check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
view = resolve_to_name(urlparse.urlparse(request.META.get('HTTP_REFERER', u'/')).path)
document_page = get_object_or_404(DocumentPage, pk=document_page_id)
@@ -720,7 +720,7 @@ def document_list_recent(request):
def transform_page(request, document_page_id, zoom_function=None, rotation_function=None):
check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
view = resolve_to_name(urlparse.urlparse(request.META.get('HTTP_REFERER', u'/')).path)
document_page = get_object_or_404(DocumentPage, pk=document_page_id)
@@ -778,7 +778,7 @@ def document_page_rotate_left(request, document_page_id):
def document_print(request, document_id):
check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
document = get_object_or_404(Document, pk=document_id)
@@ -835,7 +835,7 @@ def document_print(request, document_id):
def document_hard_copy(request, document_id):
#TODO: FIXME
check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
document = get_object_or_404(Document, pk=document_id)
@@ -876,7 +876,7 @@ def document_hard_copy(request, document_id):
def document_type_list(request):
check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
context = {
'object_list': DocumentType.objects.all(),
@@ -890,7 +890,7 @@ def document_type_list(request):
def document_type_document_list(request, document_type_id):
check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
document_type = get_object_or_404(DocumentType, pk=document_type_id)
@@ -907,7 +907,7 @@ def document_type_document_list(request, document_type_id):
def document_type_edit(request, document_type_id):
check_permissions(request.user, [PERMISSION_DOCUMENT_TYPE_EDIT])
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_TYPE_EDIT])
document_type = get_object_or_404(DocumentType, pk=document_type_id)
next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', reverse('document_type_list'))))
@@ -938,7 +938,7 @@ def document_type_edit(request, document_type_id):
def document_type_delete(request, document_type_id):
check_permissions(request.user, [PERMISSION_DOCUMENT_TYPE_DELETE])
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_TYPE_DELETE])
document_type = get_object_or_404(DocumentType, pk=document_type_id)
post_action_redirect = reverse('document_type_list')
@@ -977,7 +977,7 @@ def document_type_delete(request, document_type_id):
def document_type_create(request):
check_permissions(request.user, [PERMISSION_DOCUMENT_TYPE_CREATE])
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_TYPE_CREATE])
if request.method == 'POST':
form = DocumentTypeForm(request.POST)
@@ -1000,7 +1000,7 @@ def document_type_create(request):
def document_type_filename_list(request, document_type_id):
check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
document_type = get_object_or_404(DocumentType, pk=document_type_id)
context = {
@@ -1024,7 +1024,7 @@ def document_type_filename_list(request, document_type_id):
def document_type_filename_edit(request, document_type_filename_id):
check_permissions(request.user, [PERMISSION_DOCUMENT_TYPE_EDIT])
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_TYPE_EDIT])
document_type_filename = get_object_or_404(DocumentTypeFilename, pk=document_type_filename_id)
next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', reverse('document_type_filename_list', args=[document_type_filename.document_type_id]))))
@@ -1060,7 +1060,7 @@ def document_type_filename_edit(request, document_type_filename_id):
def document_type_filename_delete(request, document_type_filename_id):
check_permissions(request.user, [PERMISSION_DOCUMENT_TYPE_EDIT])
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_TYPE_EDIT])
document_type_filename = get_object_or_404(DocumentTypeFilename, pk=document_type_filename_id)
post_action_redirect = reverse('document_type_filename_list', args=[document_type_filename.document_type_id])
@@ -1100,7 +1100,7 @@ def document_type_filename_delete(request, document_type_filename_id):
def document_type_filename_create(request, document_type_id):
check_permissions(request.user, [PERMISSION_DOCUMENT_TYPE_EDIT])
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_TYPE_EDIT])
document_type = get_object_or_404(DocumentType, pk=document_type_id)
@@ -1131,7 +1131,7 @@ def document_type_filename_create(request, document_type_id):
def document_clear_image_cache(request):
check_permissions(request.user, [PERMISSION_DOCUMENT_TOOLS])
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_TOOLS])
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', '/')))
@@ -1152,7 +1152,7 @@ def document_clear_image_cache(request):
def document_version_list(request, document_pk):
check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
document = get_object_or_404(Document, pk=document_pk)
RecentDocument.objects.add_document_for_user(request.user, document)
@@ -1195,7 +1195,7 @@ def document_version_list(request, document_pk):
def document_version_revert(request, document_version_pk):
check_permissions(request.user, [PERMISSION_DOCUMENT_VERSION_REVERT])
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_VERSION_REVERT])
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', '/')))
document_version = get_object_or_404(DocumentVersion, pk=document_version_pk)