diff --git a/apps/common/templates/generic_list_subtemplate.html b/apps/common/templates/generic_list_subtemplate.html index 078dafb24f..242603cbeb 100644 --- a/apps/common/templates/generic_list_subtemplate.html +++ b/apps/common/templates/generic_list_subtemplate.html @@ -123,7 +123,13 @@ {% endfor %} {% if not hide_links %} - {% object_navigation_template %} + {% if navigation_object_links %} + {% with navigation_object_links as overrided_object_links %} + {% object_navigation_template %} + {% endwith %} + {% else %} + {% object_navigation_template %} + {% endif %} {% endif %} diff --git a/apps/document_comments/__init__.py b/apps/document_comments/__init__.py index 590eb654d0..44ad4eb519 100644 --- a/apps/document_comments/__init__.py +++ b/apps/document_comments/__init__.py @@ -1,25 +1,31 @@ from django.utils.translation import ugettext_lazy as _ +from django.conf import settings +from django.contrib.comments.models import Comment from navigation.api import register_links, \ register_model_list_columns from permissions.api import register_permission, set_namespace_title -from django.contrib.comments.models import Comment - from documents.models import Document +if 'django.contrib.comments' not in settings.INSTALLED_APPS: + raise Exception('This app depends on the django.contrib.comments app.') + PERMISSION_COMMENT_CREATE = {'namespace': 'comments', 'name': 'comment_create', 'label': _(u'Create new comments')} PERMISSION_COMMENT_DELETE = {'namespace': 'comments', 'name': 'comment_delete', 'label': _(u'Delete comments')} PERMISSION_COMMENT_EDIT = {'namespace': 'comments', 'name': 'comment_edit', 'label': _(u'Edit comments')} +PERMISSION_COMMENT_VIEW = {'namespace': 'comments', 'name': 'comment_view', 'label': _(u'View comments')} set_namespace_title('comments', _(u'Comments')) register_permission(PERMISSION_COMMENT_CREATE) register_permission(PERMISSION_COMMENT_DELETE) register_permission(PERMISSION_COMMENT_EDIT) +register_permission(PERMISSION_COMMENT_VIEW) -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': [PERMISSION_COMMENT_DELETE]} -comment_add = {'text': _('add comment'), 'view': 'comment_add', 'args': 'object.id', 'famfam': 'comment_add', 'permissions': [PERMISSION_COMMENT_CREATE]} +comment_delete = {'text': _('delete'), 'view': 'comment_delete', 'args': 'object.pk', 'famfam': 'comment_delete', 'permissions': [PERMISSION_COMMENT_DELETE]} +comment_multiple_delete = {'text': _('delete'), 'view': 'comment_multiple_delete', 'args': 'object.pk', 'famfam': 'comments_delete', 'permissions': [PERMISSION_COMMENT_DELETE]} +comment_add = {'text': _('add comment'), 'view': 'comment_add', 'args': 'object.pk', 'famfam': 'comment_add', 'permissions': [PERMISSION_COMMENT_CREATE]} +comments_for_object = {'text': _('comments'), 'view': 'comments_for_object', 'args': 'object.pk', 'famfam': 'comments', 'permissions': [PERMISSION_COMMENT_VIEW]} register_model_list_columns(Comment, [ { @@ -36,4 +42,8 @@ register_model_list_columns(Comment, [ } ]) -register_links(Document, [comment_add]) +register_links(['comments_for_object', 'comment_add', 'comment_delete', 'comment_multiple_delete'], [comment_add], menu_name='sidebar') +register_links(Comment, [comment_delete]) + +#comment_views = ['comment_delete', 'comment_multiple_delete', 'comment_add', 'comments_for_object'] +register_links(Document, [comments_for_object], menu_name='form_header') diff --git a/apps/document_comments/urls.py b/apps/document_comments/urls.py index 6f1544164a..f977004825 100644 --- a/apps/document_comments/urls.py +++ b/apps/document_comments/urls.py @@ -4,4 +4,5 @@ urlpatterns = patterns('document_comments.views', url(r'^(?P\d+)/delete/$', 'comment_delete', (), 'comment_delete'), url(r'^multiple/delete/$', 'comment_multiple_delete', (), 'comment_multiple_delete'), url(r'^add_to_document/(?P\d+)/$', 'comment_add', (), 'comment_add'), + url(r'^for/object/(?P\d+)/$', 'comments_for_object', (), 'comments_for_object'), ) diff --git a/apps/document_comments/views.py b/apps/document_comments/views.py index 5e6745da4e..1e11c6e1dd 100644 --- a/apps/document_comments/views.py +++ b/apps/document_comments/views.py @@ -10,7 +10,8 @@ from django.contrib.sites.models import Site from permissions.api import check_permissions from documents.models import Document -from document_comments import PERMISSION_COMMENT_DELETE, PERMISSION_COMMENT_CREATE +from document_comments import PERMISSION_COMMENT_DELETE, \ + PERMISSION_COMMENT_CREATE, PERMISSION_COMMENT_VIEW from document_comments.forms import CommentForm @@ -42,7 +43,7 @@ def comment_delete(request, comment_id=None, comment_id_list=None): return HttpResponseRedirect(next) context = { - 'object_name': _(u'comment'), + #'object_name': _(u'comment'), 'delete_view': True, 'previous': previous, 'next': next, @@ -93,3 +94,20 @@ def comment_add(request, document_id): 'next': next, 'object': document, }, context_instance=RequestContext(request)) + + +def comments_for_object(request, document_id): + """ + Show a list of all the comments related to the passed object + """ + check_permissions(request.user, [PERMISSION_COMMENT_VIEW]) + + document = get_object_or_404(Document, pk=document_id) + + return render_to_response('generic_list.html', { + 'object': document, + 'title': _(u'comments: %s') % document, + 'object_list': Comment.objects.for_model(document).order_by('-submit_date'), + 'hide_link': True, + 'hide_object': True, + }, context_instance=RequestContext(request)) diff --git a/apps/documents/__init__.py b/apps/documents/__init__.py index 0965250776..169ee6d6b7 100644 --- a/apps/documents/__init__.py +++ b/apps/documents/__init__.py @@ -9,6 +9,7 @@ from main.api import register_diagnostic, register_tool 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 document_comments import comments_for_object from documents.models import Document, DocumentPage, \ DocumentPageTransformation, DocumentType, DocumentTypeFilename @@ -69,8 +70,8 @@ document_list = {'text': _(u'all documents'), 'view': 'document_list', 'famfam': document_list_recent = {'text': _(u'recent documents'), 'view': 'document_list_recent', 'famfam': 'page', 'permissions': [PERMISSION_DOCUMENT_VIEW]} document_create_multiple = {'text': _(u'upload new documents'), 'view': 'document_create_multiple', 'famfam': 'page_add', 'permissions': [PERMISSION_DOCUMENT_CREATE]} document_create_siblings = {'text': _(u'clone 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': [PERMISSION_DOCUMENT_VIEW]} -document_view_advanced = {'text': _(u'details (advanced)'), 'view': 'document_view_advanced', 'args': 'object.id', 'famfam': 'page', 'permissions': [PERMISSION_DOCUMENT_VIEW]} +document_view_simple = {'text': _(u'details'), 'view': 'document_view_simple', 'args': 'object.id', 'famfam': 'page', 'permissions': [PERMISSION_DOCUMENT_VIEW]} +document_view_advanced = {'text': _(u'properties'), 'view': 'document_view_advanced', 'args': 'object.id', 'famfam': 'page_gear', 'permissions': [PERMISSION_DOCUMENT_VIEW]} 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': [PERMISSION_DOCUMENT_DELETE]} document_edit = {'text': _(u'edit'), 'view': 'document_edit', 'args': 'object.id', 'famfam': 'page_edit', 'permissions': [PERMISSION_DOCUMENT_PROPERTIES_EDIT]} @@ -136,7 +137,10 @@ register_links(['document_type_filename_create', 'document_type_filename_list', register_links(['document_type_filename_edit', 'document_type_filename_delete'], [document_type_filename_return_to_document_type], menu_name='sidebar') # Register document links -register_links(Document, [document_view_simple, document_view_advanced, document_edit, document_print, document_delete, document_download, document_find_duplicates, document_clear_transformations, document_history_view, document_create_siblings]) +#register_links(Document, [document_view_simple, document_view_advanced, document_edit, document_print, document_delete, document_download, document_find_duplicates, document_clear_transformations, document_history_view, document_create_siblings]) +#register_links(Document, [document_view_advanced, document_edit, document_print, document_delete, document_download, document_find_duplicates, document_clear_transformations, document_history_view, document_create_siblings]) +#register_links(Document, [document_view_advanced, document_edit, document_print, document_delete, document_download, document_find_duplicates, document_clear_transformations, document_create_siblings]) +register_links(Document, [document_edit, document_print, document_delete, document_download, document_find_duplicates, document_clear_transformations, document_create_siblings]) register_multi_item_links(['document_type_document_list', 'search', 'results', 'document_group_view', 'document_list', 'document_list_recent'], [document_multiple_clear_transformations, document_multiple_delete]) register_links(['document_list_recent', 'document_list', 'document_create', 'document_create_multiple', 'upload_document', 'upload_document_from_local', 'upload_document_from_staging', 'upload_document_from_user_staging', 'document_find_duplicates'], [document_list_recent, document_list, document_create_multiple], menu_name='secondary_menu') @@ -197,7 +201,11 @@ register_model_list_columns(Document, [ }, ]) -register_top_menu('documents', link={'famfam': 'page', 'text': _(u'documents'), 'view': 'document_list_recent'}, children_path_regex=[r'^documents/[^t]', r'^metadata/[^s]', r'comments'], position=0) +register_top_menu('documents', link={'famfam': 'page', 'text': _(u'documents'), 'view': 'document_list_recent'}, children_path_regex=[r'^documents/[^t]', r'^metadata/[^s]', r'comments', r'tags/document'], position=0) register_sidebar_template(['document_list_recent'], 'recent_document_list_help.html') register_sidebar_template(['document_type_list'], 'document_types_help.html') + +register_links(Document, [document_view_simple], menu_name='form_header') +register_links(Document, [document_view_advanced], menu_name='form_header') +register_links(Document, [document_history_view], menu_name='form_header') diff --git a/apps/documents/views.py b/apps/documents/views.py index 5b61f873c1..7b5c019a3d 100644 --- a/apps/documents/views.py +++ b/apps/documents/views.py @@ -14,7 +14,7 @@ from django.views.generic.create_update import delete_object, update_object from django.conf import settings from django.utils.http import urlencode from django.core.files.uploadedfile import SimpleUploadedFile -from django.contrib.comments.models import Comment +#from django.contrib.comments.models import Comment import sendfile from common.utils import pretty_size, parse_range, urlquote, \ @@ -26,7 +26,6 @@ from converter.api import convert_document, QUALITY_DEFAULT from converter.exceptions import UnkownConvertError, UnknownFormat from converter.api import DEFAULT_ZOOM_LEVEL, DEFAULT_ROTATION, \ DEFAULT_FILE_FORMAT, QUALITY_PRINT -from document_comments.utils import get_comments_subtemplate from filetransfers.api import serve_file from grouping.utils import get_document_group_subtemplate from metadata.api import save_metadata_list, \ @@ -34,7 +33,6 @@ from metadata.api import save_metadata_list, \ from metadata.forms import MetadataFormSet, MetadataSelectionForm from navigation.utils import resolve_to_name from permissions.api import check_permissions -from tags.utils import get_tags_subtemplate from document_indexing.utils import get_document_indexing_subtemplate from document_indexing.api import update_indexes, delete_indexes from history.api import create_history @@ -295,30 +293,6 @@ def document_view(request, document_id, advanced=False): subtemplates_list = [] - preview_form = DocumentPreviewForm(document=document) - subtemplates_list.append( - { - 'name': 'generic_form_subtemplate.html', - 'context': { - 'form': preview_form, - 'object': document, - } - }, - ) - - content_form = DocumentContentForm(document=document) - - subtemplates_list.append( - { - 'name': 'generic_form_subtemplate.html', - 'context': { - 'title': _(u'document data'), - 'form': content_form, - 'object': document, - }, - } - ) - if advanced: document_properties_form = DocumentPropertiesForm(instance=document, extra_fields=[ {'label': _(u'Filename'), 'field': 'file_filename'}, @@ -341,36 +315,42 @@ def document_view(request, document_id, advanced=False): 'context': { 'form': document_properties_form, 'object': document, - 'title': _(u'document properties'), + 'title': _(u'document properties for: %s') % document, + } + }, + ) + else: + preview_form = DocumentPreviewForm(document=document) + subtemplates_list.append( + { + 'name': 'generic_form_subtemplate.html', + 'context': { + 'form': preview_form, + 'object': document, } }, ) - if document.tags.count(): - subtemplates_list.append(get_tags_subtemplate(document)) + content_form = DocumentContentForm(document=document) - if Comment.objects.for_model(document).count(): - subtemplates_list.append(get_comments_subtemplate(document)) - - subtemplates_list.append( - { - 'name': 'generic_list_subtemplate.html', - 'context': { - 'title': _(u'metadata'), - 'object_list': document.documentmetadata_set.all(), - 'extra_columns': [{'name': _(u'value'), 'attribute': 'value'}], - 'hide_link': True, + subtemplates_list.append( + { + 'name': 'generic_form_subtemplate.html', + 'context': { + 'title': _(u'document data'), + 'form': content_form, + 'object': document, + }, } - }, - ) + ) - document_group_subtemplate = get_document_group_subtemplate(request, document) + document_group_subtemplate = get_document_group_subtemplate(request, document) - if document_group_subtemplate: - subtemplates_list.append(document_group_subtemplate) + if document_group_subtemplate: + subtemplates_list.append(document_group_subtemplate) - if document.indexinstance_set.count(): - subtemplates_list.append(get_document_indexing_subtemplate(document)) + if document.indexinstance_set.count(): + subtemplates_list.append(get_document_indexing_subtemplate(document)) return render_to_response('generic_detail.html', { 'object': document, diff --git a/apps/metadata/__init__.py b/apps/metadata/__init__.py index c14a36de0e..44adeb25a5 100644 --- a/apps/metadata/__init__.py +++ b/apps/metadata/__init__.py @@ -10,6 +10,7 @@ from metadata.models import MetadataType, MetadataSet PERMISSION_METADATA_DOCUMENT_EDIT = {'namespace': 'metadata', 'name': u'metadata_document_edit', 'label': _(u'Edit a document\'s metadata')} PERMISSION_METADATA_DOCUMENT_ADD = {'namespace': 'metadata', 'name': u'metadata_document_add', 'label': _(u'Add metadata to a document')} PERMISSION_METADATA_DOCUMENT_REMOVE = {'namespace': 'metadata', 'name': u'metadata_document_remove', 'label': _(u'Remove metadata from a document')} +PERMISSION_METADATA_DOCUMENT_VIEW = {'namespace': 'metadata', 'name': u'metadata_document_view', 'label': _(u'View metadata from a document')} PERMISSION_METADATA_TYPE_EDIT = {'namespace': 'metadata_setup', 'name': u'metadata_type_edit', 'label': _(u'Edit metadata types')} PERMISSION_METADATA_TYPE_CREATE = {'namespace': 'metadata_setup', 'name': u'metadata_type_create', 'label': _(u'Create new metadata types')} @@ -25,6 +26,7 @@ set_namespace_title('metadata', _(u'Metadata')) register_permission(PERMISSION_METADATA_DOCUMENT_EDIT) register_permission(PERMISSION_METADATA_DOCUMENT_ADD) register_permission(PERMISSION_METADATA_DOCUMENT_REMOVE) +register_permission(PERMISSION_METADATA_DOCUMENT_VIEW) set_namespace_title('metadata_setup', _(u'Metadata setup')) register_permission(PERMISSION_METADATA_TYPE_EDIT) @@ -37,26 +39,29 @@ register_permission(PERMISSION_METADATA_SET_CREATE) register_permission(PERMISSION_METADATA_SET_DELETE) register_permission(PERMISSION_METADATA_SET_VIEW) -metadata_edit = {'text': _(u'edit metadata'), 'view': 'metadata_edit', 'args': 'object.id', 'famfam': 'xhtml_go', 'permissions': [PERMISSION_METADATA_DOCUMENT_EDIT]} +metadata_edit = {'text': _(u'edit metadata'), 'view': 'metadata_edit', 'args': 'object.pk', 'famfam': 'xhtml_go', 'permissions': [PERMISSION_METADATA_DOCUMENT_EDIT]} +metadata_view = {'text': _(u'metadata'), 'view': 'metadata_view', 'args': 'object.pk', 'famfam': 'xhtml_go', 'permissions': [PERMISSION_METADATA_DOCUMENT_EDIT]} metadata_multiple_edit = {'text': _(u'edit metadata'), 'view': 'metadata_multiple_edit', 'famfam': 'xhtml_go', 'permissions': [PERMISSION_METADATA_DOCUMENT_EDIT]} -metadata_add = {'text': _(u'add metadata'), 'view': 'metadata_add', 'args': 'object.id', 'famfam': 'xhtml_add', 'permissions': [PERMISSION_METADATA_DOCUMENT_ADD]} +metadata_add = {'text': _(u'add metadata'), 'view': 'metadata_add', 'args': 'object.pk', 'famfam': 'xhtml_add', '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': [PERMISSION_METADATA_DOCUMENT_REMOVE]} +metadata_remove = {'text': _(u'remove metadata'), 'view': 'metadata_remove', 'args': 'object.pk', 'famfam': 'xhtml_delete', 'permissions': [PERMISSION_METADATA_DOCUMENT_REMOVE]} metadata_multiple_remove = {'text': _(u'remove metadata'), 'view': 'metadata_multiple_remove', 'famfam': 'xhtml_delete', 'permissions': [PERMISSION_METADATA_DOCUMENT_REMOVE]} setup_metadata_type_list = {'text': _(u'metadata types'), 'view': 'setup_metadata_type_list', 'famfam': 'xhtml_go', 'permissions': [PERMISSION_METADATA_TYPE_VIEW]} -setup_metadata_type_edit = {'text': _(u'edit'), 'view': 'setup_metadata_type_edit', 'args': 'object.id', 'famfam': 'xhtml', 'permissions': [PERMISSION_METADATA_TYPE_EDIT]} -setup_metadata_type_delete = {'text': _(u'delete'), 'view': 'setup_metadata_type_delete', 'args': 'object.id', 'famfam': 'xhtml_delete', 'permissions': [PERMISSION_METADATA_TYPE_DELETE]} +setup_metadata_type_edit = {'text': _(u'edit'), 'view': 'setup_metadata_type_edit', 'args': 'object.pk', 'famfam': 'xhtml', 'permissions': [PERMISSION_METADATA_TYPE_EDIT]} +setup_metadata_type_delete = {'text': _(u'delete'), 'view': 'setup_metadata_type_delete', 'args': 'object.pk', 'famfam': 'xhtml_delete', 'permissions': [PERMISSION_METADATA_TYPE_DELETE]} setup_metadata_type_create = {'text': _(u'create new'), 'view': 'setup_metadata_type_create', 'famfam': 'xhtml_add', 'permissions': [PERMISSION_METADATA_TYPE_CREATE]} setup_metadata_set_list = {'text': _(u'metadata sets'), 'view': 'setup_metadata_set_list', 'famfam': 'application_form', 'permissions': [PERMISSION_METADATA_SET_VIEW]} -setup_metadata_set_edit = {'text': _(u'edit'), 'view': 'setup_metadata_set_edit', 'args': 'object.id', 'famfam': 'application_form_edit', 'permissions': [PERMISSION_METADATA_SET_EDIT]} -setup_metadata_set_delete = {'text': _(u'delete'), 'view': 'setup_metadata_set_delete', 'args': 'object.id', 'famfam': 'application_form_delete', 'permissions': [PERMISSION_METADATA_SET_DELETE]} +setup_metadata_set_edit = {'text': _(u'edit'), 'view': 'setup_metadata_set_edit', 'args': 'object.pk', 'famfam': 'application_form_edit', 'permissions': [PERMISSION_METADATA_SET_EDIT]} +setup_metadata_set_delete = {'text': _(u'delete'), 'view': 'setup_metadata_set_delete', 'args': 'object.pk', 'famfam': 'application_form_delete', 'permissions': [PERMISSION_METADATA_SET_DELETE]} setup_metadata_set_create = {'text': _(u'create new'), 'view': 'setup_metadata_set_create', 'famfam': 'application_form_add', 'permissions': [PERMISSION_METADATA_SET_CREATE]} -setup_document_type_metadata = {'text': _(u'default metadata'), 'view': 'setup_document_type_metadata', 'args': 'object.id', 'famfam': 'xhtml', 'permissions': [PERMISSION_DOCUMENT_TYPE_EDIT]} +setup_document_type_metadata = {'text': _(u'default metadata'), 'view': 'setup_document_type_metadata', 'args': 'object.pk', 'famfam': 'xhtml', 'permissions': [PERMISSION_DOCUMENT_TYPE_EDIT]} -register_links(Document, [metadata_add, metadata_edit, metadata_remove]) +#register_links(Document, [metadata_add, metadata_edit, metadata_remove]) +register_links(['metadata_add', 'metadata_edit', 'metadata_remove', 'metadata_view'], [metadata_add, metadata_edit, metadata_remove], menu_name='sidebar') +register_links(Document, [metadata_view], menu_name='form_header')#, metadata_edit, metadata_remove]) register_multi_item_links(['document_type_document_list', 'search', 'results', 'document_group_view', 'document_list', 'document_list_recent'], [metadata_multiple_add, metadata_multiple_edit, metadata_multiple_remove]) register_links(MetadataType, [setup_metadata_type_edit, setup_metadata_type_delete]) diff --git a/apps/metadata/urls.py b/apps/metadata/urls.py index 60a2c23bf6..7fd2b972ae 100644 --- a/apps/metadata/urls.py +++ b/apps/metadata/urls.py @@ -2,6 +2,7 @@ from django.conf.urls.defaults import patterns, url urlpatterns = patterns('metadata.views', url(r'^(?P\d+)/edit/$', 'metadata_edit', (), 'metadata_edit'), + url(r'^(?P\d+)/view/$', 'metadata_view', (), 'metadata_view'), url(r'^multiple/edit/$', 'metadata_multiple_edit', (), 'metadata_multiple_edit'), url(r'^(?P\d+)/add/$', 'metadata_add', (), 'metadata_add'), url(r'^multiple/add/$', 'metadata_multiple_add', (), 'metadata_multiple_add'), diff --git a/apps/metadata/views.py b/apps/metadata/views.py index 77440cdd6f..ecd6db9470 100644 --- a/apps/metadata/views.py +++ b/apps/metadata/views.py @@ -15,7 +15,8 @@ from document_indexing.api import update_indexes, delete_indexes from common.utils import generate_choices_w_labels#, two_state_template from common.views import assign_remove -from metadata import PERMISSION_METADATA_DOCUMENT_EDIT, \ +from metadata import PERMISSION_METADATA_DOCUMENT_VIEW, \ + PERMISSION_METADATA_DOCUMENT_EDIT, \ PERMISSION_METADATA_DOCUMENT_ADD, PERMISSION_METADATA_DOCUMENT_REMOVE, \ PERMISSION_METADATA_TYPE_EDIT, PERMISSION_METADATA_TYPE_CREATE, \ PERMISSION_METADATA_TYPE_DELETE, PERMISSION_METADATA_TYPE_VIEW, \ @@ -272,6 +273,19 @@ def metadata_multiple_remove(request): return metadata_remove(request, document_id_list=request.GET.get('id_list', [])) +def metadata_view(request, document_id): + check_permissions(request.user, [PERMISSION_METADATA_DOCUMENT_VIEW]) + document = get_object_or_404(Document, pk=document_id) + + return render_to_response('generic_list.html', { + 'title': _(u'metadata for: %s') % document, + 'object_list': document.documentmetadata_set.all(), + 'extra_columns': [{'name': _(u'value'), 'attribute': 'value'}], + 'hide_link': True, + 'object': document, + }, context_instance=RequestContext(request)) + + def setup_metadata_type_list(request): check_permissions(request.user, [PERMISSION_METADATA_TYPE_VIEW]) diff --git a/apps/navigation/templatetags/navigation_tags.py b/apps/navigation/templatetags/navigation_tags.py index 8740f97699..6d25203d63 100644 --- a/apps/navigation/templatetags/navigation_tags.py +++ b/apps/navigation/templatetags/navigation_tags.py @@ -136,7 +136,7 @@ def _get_object_navigation_links(context, menu_name=None, links_dict=object_navi Override the navigation links dictionary with the provided link list """ - navigation_object_links = Variable('navigation_object_links').resolve(context) + navigation_object_links = Variable('overrided_object_links').resolve(context) if navigation_object_links: return [link for link in resolve_links(context, navigation_object_links, current_view, current_path, parsed_query_string)] except VariableDoesNotExist: diff --git a/apps/tags/__init__.py b/apps/tags/__init__.py index b06015842c..1eb980abcc 100644 --- a/apps/tags/__init__.py +++ b/apps/tags/__init__.py @@ -5,6 +5,8 @@ from navigation.api import register_links, register_top_menu, \ from permissions.api import register_permission, set_namespace_title from navigation.api import register_sidebar_template +from documents.models import Document + from taggit.models import Tag PERMISSION_TAG_CREATE = {'namespace': 'tags', 'name': 'tag_create', 'label': _(u'Create new tags')} @@ -22,6 +24,7 @@ register_permission(PERMISSION_TAG_EDIT) tag_list = {'text': _(u'tag list'), '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': [PERMISSION_TAG_REMOVE]} +tag_document_list = {'text': _(u'tags'), 'view': 'document_tags', 'args': 'object.pk', 'famfam': 'tag_blue', 'permissions': [PERMISSION_TAG_REMOVE]} 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': [PERMISSION_TAG_EDIT]} tag_tagged_item_list = {'text': _(u'tagged documents'), 'view': 'tag_tagged_item_list', 'args': 'object.id', 'famfam': 'page'} @@ -45,6 +48,8 @@ register_multi_item_links(['tag_list'], [tag_multiple_delete]) register_links(['tag_list', 'tag_remove', 'tag_delete', 'tag_edit', 'tag_tagged_item_list', 'tag_multiple_delete'], [tag_list], menu_name='secondary_menu') -register_sidebar_template(['document_view_advanced', 'document_view_simple'], 'tags_sidebar_template.html') +register_sidebar_template(['document_tags'], 'tags_sidebar_template.html') -register_top_menu('tags', link={'text': _(u'tags'), 'view': 'tag_list', 'famfam': 'tag_blue'}, children_path_regex=[r'^tags/']) +register_top_menu('tags', link={'text': _(u'tags'), 'view': 'tag_list', 'famfam': 'tag_blue'}, children_path_regex=[r'^tags/[^d]/']) + +register_links(Document, [tag_document_list], menu_name='form_header') diff --git a/apps/tags/urls.py b/apps/tags/urls.py index ab09172a88..0b92068a01 100644 --- a/apps/tags/urls.py +++ b/apps/tags/urls.py @@ -8,5 +8,6 @@ urlpatterns = patterns('tags.views', url(r'^multiple/delete/$', 'tag_multiple_delete', (), 'tag_multiple_delete'), url(r'^(?P\d+)/remove_from_document/(?P\d+)/$', 'tag_remove', (), 'tag_remove'), - url(r'^add_to_document/(?P\d+)/$', 'tag_add', (), 'tag_add'), + url(r'^document/(?P\d+)/add/$', 'tag_add', (), 'tag_add'), + url(r'^document/(?P\d+)/list/$', 'document_tags', (), 'document_tags'), ) diff --git a/apps/tags/views.py b/apps/tags/views.py index 51e61407e3..1b8f3a0eb0 100644 --- a/apps/tags/views.py +++ b/apps/tags/views.py @@ -14,6 +14,8 @@ from tags.forms import AddTagForm, TagForm from tags.models import TagProperties from tags import PERMISSION_TAG_CREATE, PERMISSION_TAG_ATTACH, \ PERMISSION_TAG_REMOVE, PERMISSION_TAG_DELETE, PERMISSION_TAG_EDIT +from tags import tag_document_remove as tag_document_remove_link +from tags import tag_tagged_item_list as tag_tagged_item_list_link def tag_remove(request, tag_id, document_id): @@ -176,3 +178,19 @@ def tag_tagged_item_list(request, tag_id): 'object': tag } ) + + +def document_tags(request, document_id): + #check_permissions(request.user, [PERMISSION_TAG_VIEW]) + document = get_object_or_404(Document, pk=document_id) + + return render_to_response('generic_list.html', { + 'title': _(u'tags for: %s') % document, + 'object_list': document.tags.all(), + 'hide_link': True, + 'navigation_object_links': [tag_tagged_item_list_link, tag_document_remove_link], + 'object': document, + 'document': document, + 'disable_auto_focus': True, + }, + context_instance=RequestContext(request))