diff --git a/mayan/apps/documents/__init__.py b/mayan/apps/documents/__init__.py index 463eb27bfa..a19d857993 100644 --- a/mayan/apps/documents/__init__.py +++ b/mayan/apps/documents/__init__.py @@ -22,7 +22,8 @@ from documents import settings as document_settings from .events import (HISTORY_DOCUMENT_CREATED, HISTORY_DOCUMENT_DELETED, HISTORY_DOCUMENT_EDITED) from .links import (document_clear_image_cache, - document_clear_transformations, document_delete, + document_clear_transformations, document_content, + document_delete, document_document_type_edit, document_multiple_document_type_edit, document_download, document_edit, document_history_view, document_list, @@ -40,15 +41,15 @@ from .links import (document_clear_image_cache, document_page_transformation_edit, document_page_transformation_delete, document_page_view, document_page_view_reset, document_page_zoom_in, - document_page_zoom_out, document_print, - document_type_create, document_type_delete, - document_type_edit, document_type_filename_create, - document_type_filename_delete, - document_type_filename_edit, document_type_filename_list, - document_type_list, document_type_setup, - document_update_page_count, document_version_download, - document_version_list, document_version_revert, - document_view_advanced, document_view_simple) + document_page_zoom_out, document_preview, document_print, + document_properties, document_type_create, + document_type_delete, document_type_edit, + document_type_filename_create, + document_type_filename_delete, document_type_filename_edit, + document_type_filename_list, document_type_list, + document_type_setup, document_update_page_count, + document_version_download, document_version_list, + document_version_revert) from .models import (Document, DocumentPage, DocumentPageTransformation, DocumentType, DocumentTypeFilename, DocumentVersion) from .permissions import (PERMISSION_DOCUMENT_DELETE, @@ -75,8 +76,13 @@ register_links(DocumentTypeFilename, [document_type_filename_edit, document_type register_links([DocumentTypeFilename, 'documents:document_type_filename_list', 'documents:document_type_filename_create'], [document_type_filename_create], menu_name='sidebar') # Register document links -register_links(Document, [document_view_simple, document_edit, document_document_type_edit, document_print, document_delete, document_download, document_clear_transformations, document_update_page_count]) +register_links(Document, [document_edit, document_document_type_edit, document_print, document_delete, document_download, document_clear_transformations, document_update_page_count]) register_links([Document], [link_spacer, document_multiple_clear_transformations, document_multiple_delete, document_multiple_download, document_multiple_update_page_count, document_multiple_document_type_edit], menu_name='multi_item_links') +register_links(Document, [document_preview], menu_name='form_header', position=0) +register_links(Document, [document_content], menu_name='form_header', position=1) +register_links(Document, [document_properties], menu_name='form_header', position=2) +register_links(Document, [document_history_view], menu_name='form_header') +register_links(Document, [document_version_list], menu_name='form_header') # Document Version links register_links(DocumentVersion, [document_version_revert, document_version_download]) @@ -120,11 +126,6 @@ register_top_menu( position=1 ) -register_links(Document, [document_view_simple], menu_name='form_header', position=0) -register_links(Document, [document_view_advanced], menu_name='form_header', position=1) -register_links(Document, [document_history_view], menu_name='form_header') -register_links(Document, [document_version_list], menu_name='form_header') - if (not validate_path(document_settings.CACHE_PATH)) or (not document_settings.CACHE_PATH): setattr(document_settings, 'CACHE_PATH', tempfile.mkdtemp()) diff --git a/mayan/apps/documents/links.py b/mayan/apps/documents/links.py index 5035edec86..612a168ba5 100644 --- a/mayan/apps/documents/links.py +++ b/mayan/apps/documents/links.py @@ -38,8 +38,9 @@ def is_current_version(context): document_list = {'text': _(u'All documents'), 'view': 'documents:document_list', 'famfam': 'page'} document_list_recent = {'text': _(u'Recent documents'), 'view': 'documents:document_list_recent', 'famfam': 'page'} -document_view_simple = {'text': _(u'Details'), 'view': 'documents:document_view_simple', 'args': 'object.id', 'famfam': 'page', 'permissions': [PERMISSION_DOCUMENT_VIEW]} -document_view_advanced = {'text': _(u'Properties'), 'view': 'documents:document_view_advanced', 'args': 'object.id', 'famfam': 'page_gear', 'permissions': [PERMISSION_DOCUMENT_VIEW]} +document_preview = {'text': _(u'Preview'), 'view': 'documents:document_preview', 'args': 'object.id', 'famfam': 'page', 'permissions': [PERMISSION_DOCUMENT_VIEW]} +document_content = {'text': _(u'Content'), 'view': 'documents:document_content', 'args': 'object.id', 'famfam': 'page_white_text', 'permissions': [PERMISSION_DOCUMENT_VIEW]} +document_properties = {'text': _(u'Properties'), 'view': 'documents:document_properties', 'args': 'object.id', 'famfam': 'page_gear', 'permissions': [PERMISSION_DOCUMENT_VIEW]} document_delete = {'text': _(u'Delete'), 'view': 'documents:document_delete', 'args': 'object.id', 'famfam': 'page_delete', 'permissions': [PERMISSION_DOCUMENT_DELETE]} document_multiple_delete = {'text': _(u'Delete'), 'view': 'documents:document_multiple_delete', 'famfam': 'page_delete', 'permissions': [PERMISSION_DOCUMENT_DELETE]} document_edit = {'text': _(u'Edit properties'), 'view': 'documents:document_edit', 'args': 'object.id', 'famfam': 'page_edit', 'permissions': [PERMISSION_DOCUMENT_PROPERTIES_EDIT]} diff --git a/mayan/apps/documents/models.py b/mayan/apps/documents/models.py index aad1ff5bcf..4354634846 100644 --- a/mayan/apps/documents/models.py +++ b/mayan/apps/documents/models.py @@ -108,7 +108,7 @@ class Document(models.Model): @models.permalink def get_absolute_url(self): - return ('documents:document_view_simple', [self.pk]) + return ('documents:document_preview', [self.pk]) def save(self, *args, **kwargs): user = kwargs.pop('user', None) diff --git a/mayan/apps/documents/tests.py b/mayan/apps/documents/tests.py index 1f4e24ab36..b141f70e4b 100644 --- a/mayan/apps/documents/tests.py +++ b/mayan/apps/documents/tests.py @@ -310,7 +310,7 @@ class DocumentsViewsFunctionalTestCase(TestCase): self.assertTrue('ocuments (1)' in response.content) # test document simple view - response = self.client.get(reverse('documents:document_view_simple', args=[self.document.pk])) + response = self.client.get(reverse('documents:document_properties', args=[self.document.pk])) self.assertEqual(response.status_code, 200) self.assertTrue('Details for' in response.content) diff --git a/mayan/apps/documents/urls.py b/mayan/apps/documents/urls.py index a44545c38a..b6de002001 100644 --- a/mayan/apps/documents/urls.py +++ b/mayan/apps/documents/urls.py @@ -14,8 +14,9 @@ urlpatterns = patterns('documents.views', url(r'^list/$', DocumentListView.as_view(), name='document_list'), url(r'^list/recent/$', 'document_list_recent', (), 'document_list_recent'), - url(r'^(?P\d+)/view/$', 'document_view', (), 'document_view_simple'), - url(r'^(?P\d+)/view/advanced/$', 'document_view', {'advanced': True}, 'document_view_advanced'), + url(r'^(?P\d+)/preview/$', 'document_preview', (), 'document_preview'), + url(r'^(?P\d+)/content/$', 'document_content', (), 'document_content'), + url(r'^(?P\d+)/properties/$', 'document_properties', (), 'document_properties'), url(r'^(?P\d+)/type/$', 'document_document_type_edit', name='document_document_type_edit'), url(r'^multiple/type/$', 'document_multiple_document_type_edit', name='document_multiple_document_type_edit'), url(r'^(?P\d+)/delete/$', 'document_delete', (), 'document_delete'), diff --git a/mayan/apps/documents/views.py b/mayan/apps/documents/views.py index c10c4588bf..96f494c599 100644 --- a/mayan/apps/documents/views.py +++ b/mayan/apps/documents/views.py @@ -90,7 +90,7 @@ def document_list(request, object_list=None, title=None, extra_context=None): context_instance=RequestContext(request)) -def document_view(request, document_id, advanced=False): +def document_properties(request, document_id): document = get_object_or_404(Document, pk=document_id) try: @@ -100,67 +100,70 @@ def document_view(request, document_id, advanced=False): document.add_as_recent_document_for_user(request.user) - subtemplates_list = [] - if advanced: - document_fields = [ - {'label': _(u'Date added'), 'field': lambda x: x.date_added.date()}, - {'label': _(u'Time added'), 'field': lambda x: unicode(x.date_added.time()).split('.')[0]}, - {'label': _(u'UUID'), 'field': 'uuid'}, - ] - if document.latest_version: - document_fields.extend([ - {'label': _(u'File mimetype'), 'field': lambda x: x.file_mimetype or _(u'None')}, - {'label': _(u'File encoding'), 'field': lambda x: x.file_mime_encoding or _(u'None')}, - {'label': _(u'File size'), 'field': lambda x: pretty_size(x.size) if x.size else '-'}, - {'label': _(u'Exists in storage'), 'field': 'exists'}, - {'label': _(u'File path in storage'), 'field': 'file'}, - {'label': _(u'Checksum'), 'field': 'checksum'}, - {'label': _(u'Pages'), 'field': 'page_count'}, - ]) + document_fields = [ + {'label': _(u'Date added'), 'field': lambda x: x.date_added.date()}, + {'label': _(u'Time added'), 'field': lambda x: unicode(x.date_added.time()).split('.')[0]}, + {'label': _(u'UUID'), 'field': 'uuid'}, + ] + if document.latest_version: + document_fields.extend([ + {'label': _(u'File mimetype'), 'field': lambda x: x.file_mimetype or _(u'None')}, + {'label': _(u'File encoding'), 'field': lambda x: x.file_mime_encoding or _(u'None')}, + {'label': _(u'File size'), 'field': lambda x: pretty_size(x.size) if x.size else '-'}, + {'label': _(u'Exists in storage'), 'field': 'exists'}, + {'label': _(u'File path in storage'), 'field': 'file'}, + {'label': _(u'Checksum'), 'field': 'checksum'}, + {'label': _(u'Pages'), 'field': 'page_count'}, + ]) - document_properties_form = DocumentPropertiesForm(instance=document, extra_fields=document_fields) - - subtemplates_list.append( - { - 'name': 'main/generic_form_subtemplate.html', - 'context': { - 'form': document_properties_form, - 'object': document, - 'title': _(u'Document properties for: %s') % document, - } - }, - ) - else: - preview_form = DocumentPreviewForm(document=document) - subtemplates_list.append( - { - 'name': 'main/generic_form_subtemplate.html', - 'context': { - 'form': preview_form, - 'object': document, - } - }, - ) - - content_form = DocumentContentForm(document=document) - - subtemplates_list.append( - { - 'name': 'main/generic_form_subtemplate.html', - 'context': { - 'title': _(u'Document data'), - 'form': content_form, - 'object': document, - }, - } - ) + document_properties_form = DocumentPropertiesForm(instance=document, extra_fields=document_fields) return render_to_response('main/generic_detail.html', { - 'object': document, + 'form': document_properties_form, 'document': document, - 'subtemplates_list': subtemplates_list, - 'disable_auto_focus': True, + 'object': document, + 'title': _(u'Document properties'), + }, context_instance=RequestContext(request)) + + +def document_preview(request, document_id): + document = get_object_or_404(Document, pk=document_id) + + try: + Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW]) + except PermissionDenied: + AccessEntry.objects.check_access(PERMISSION_DOCUMENT_VIEW, request.user, document) + + document.add_as_recent_document_for_user(request.user) + + preview_form = DocumentPreviewForm(document=document) + + return render_to_response('main/generic_detail.html', { + 'document': document, + 'form': preview_form, + 'object': document, + 'title': _(u'Document preview'), + }, context_instance=RequestContext(request)) + + +def document_content(request, document_id): + document = get_object_or_404(Document, pk=document_id) + + try: + Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW]) + except PermissionDenied: + AccessEntry.objects.check_access(PERMISSION_DOCUMENT_VIEW, request.user, document) + + document.add_as_recent_document_for_user(request.user) + + content_form = DocumentContentForm(document=document) + + return render_to_response('main/generic_detail.html', { + 'document': document, + 'form': content_form, + 'object': document, + 'title': _(u'Document content'), }, context_instance=RequestContext(request)) @@ -447,7 +450,7 @@ def document_multiple_download(request): def document_update_page_count(request, document_id=None, document_id_list=None): if document_id: documents = [get_object_or_404(Document.objects, pk=document_id)] - post_redirect = reverse('documents:document_view_simple', args=[documents[0].pk]) + post_redirect = documents[0].get_absolute_url() elif document_id_list: documents = [get_object_or_404(Document, pk=document_id) for document_id in document_id_list.split(',')] else: @@ -500,7 +503,7 @@ def document_multiple_update_page_count(request): def document_clear_transformations(request, document_id=None, document_id_list=None): if document_id: documents = [get_object_or_404(Document.objects, pk=document_id)] - post_redirect = reverse('documents:document_view_simple', args=[documents[0].pk]) + post_redirect = document[0].get_absolute_url() elif document_id_list: documents = [get_object_or_404(Document, pk=document_id) for document_id in document_id_list.split(',')] post_redirect = None diff --git a/mayan/apps/documents/widgets.py b/mayan/apps/documents/widgets.py index d2bf8960e4..22a3c7dfdc 100644 --- a/mayan/apps/documents/widgets.py +++ b/mayan/apps/documents/widgets.py @@ -77,7 +77,7 @@ def document_thumbnail(document, **kwargs): def document_link(document): - return mark_safe(u'%s' % (reverse('documents:document_view_simple', args=[document.pk]), document)) + return mark_safe(u'%s' % (document.get_absolute_url(), document)) def document_html_widget(document, click_view=None, page=DEFAULT_PAGE_NUMBER, zoom=DEFAULT_ZOOM_LEVEL, rotation=DEFAULT_ROTATION, gallery_name=None, fancybox_class='fancybox', version=None, image_class='lazy-load', title=None, size=THUMBNAIL_SIZE, nolazyload=False): diff --git a/mayan/apps/mailer/views.py b/mayan/apps/mailer/views.py index f827c5fe8d..7b1ea306ee 100644 --- a/mayan/apps/mailer/views.py +++ b/mayan/apps/mailer/views.py @@ -53,7 +53,7 @@ def send_document_link(request, document_id=None, document_id_list=None, as_atta for document in documents: context = Context({ - 'link': 'http://%s%s' % (Site.objects.get_current().domain, reverse('documents:document_view_simple', args=[document.pk])), + 'link': 'http://%s%s' % (Site.objects.get_current().domain, document.get_absolute_url()), 'document': document }) body_template = Template(form.cleaned_data['body'])