Add tool to show list of documents with empty metadata that is required for their type. Issue #34.

This commit is contained in:
Roberto Rosario
2015-01-12 01:50:44 -04:00
parent ea2830735c
commit 661a63030b
5 changed files with 38 additions and 2 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -14,6 +14,7 @@ from documents.signals import post_document_type_change
from navigation.api import register_links, register_model_list_columns
from navigation.links import link_spacer
from project_setup.api import register_setup
from project_tools.api import register_tool
from rest_api.classes import APIEndPoint
from .api import get_metadata_string
@@ -24,7 +25,8 @@ from .links import (metadata_add, metadata_edit, metadata_multiple_add,
setup_document_type_metadata,
setup_document_type_metadata_required,
setup_metadata_type_create, setup_metadata_type_delete,
setup_metadata_type_edit, setup_metadata_type_list)
setup_metadata_type_edit, setup_metadata_type_list,
link_documents_missing_required_metadata)
from .models import DocumentMetadata, DocumentTypeMetadataType, MetadataType
from .permissions import (PERMISSION_METADATA_DOCUMENT_ADD,
PERMISSION_METADATA_DOCUMENT_EDIT,
@@ -72,6 +74,7 @@ register_links(MetadataType, [setup_metadata_type_edit, setup_metadata_type_dele
register_links([MetadataType, 'metadata:setup_metadata_type_list', 'metadata:setup_metadata_type_create'], [setup_metadata_type_list, setup_metadata_type_create], menu_name='secondary_menu')
register_setup(setup_metadata_type_list)
register_tool(link_documents_missing_required_metadata)
class_permissions(Document, [
PERMISSION_METADATA_DOCUMENT_ADD, PERMISSION_METADATA_DOCUMENT_EDIT,

View File

@@ -29,3 +29,5 @@ setup_metadata_type_list = {'text': _(u'Metadata types'), 'view': 'metadata:setu
setup_metadata_type_edit = {'text': _(u'Edit'), 'view': 'metadata:setup_metadata_type_edit', 'args': 'object.pk', 'famfam': 'xhtml', 'permissions': [PERMISSION_METADATA_TYPE_EDIT]}
setup_metadata_type_delete = {'text': _(u'Delete'), 'view': 'metadata:setup_metadata_type_delete', 'args': 'object.pk', 'famfam': 'xhtml_delete', 'permissions': [PERMISSION_METADATA_TYPE_DELETE]}
setup_metadata_type_create = {'text': _(u'Create new'), 'view': 'metadata:setup_metadata_type_create', 'famfam': 'xhtml_add', 'permissions': [PERMISSION_METADATA_TYPE_CREATE]}
link_documents_missing_required_metadata = {'text': _(u'Missing metadata'), 'view': 'metadata:documents_missing_required_metadata', 'icon': 'to_do_list.png'}

View File

@@ -22,6 +22,8 @@ urlpatterns = patterns('metadata.views',
url(r'^setup/document/type/(?P<document_type_id>\d+)/metadata/edit/$', 'setup_document_type_metadata', (), 'setup_document_type_metadata'),
url(r'^setup/document/type/(?P<document_type_id>\d+)/metadata/edit/required/$', 'setup_document_type_metadata_required', (), 'setup_document_type_metadata_required'),
url(r'^tools/missing_required_metadata/$', 'documents_missing_required_metadata', (), 'documents_missing_required_metadata'),
)
api_urls = patterns('',

View File

@@ -12,7 +12,9 @@ from django.utils.translation import ugettext_lazy as _
from acls.models import AccessEntry
from documents.models import Document, DocumentType
from documents.permissions import PERMISSION_DOCUMENT_TYPE_EDIT
from documents.permissions import (PERMISSION_DOCUMENT_TYPE_EDIT,
PERMISSION_DOCUMENT_VIEW)
from documents.views import document_list
from permissions.models import Permission
from common.utils import encapsulate, generate_choices_w_labels
@@ -302,6 +304,33 @@ def metadata_view(request, document_id):
}, context_instance=RequestContext(request))
def documents_missing_required_metadata(request):
pre_object_list = Document.objects.filter(document_type__metadata__required=True, metadata__value__isnull=True)
try:
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
except PermissionDenied:
# If user doesn't have global permission, get a list of document
# for which he/she does hace access use it to filter the
# provided object_list
object_list = AccessEntry.objects.filter_objects_by_access(
PERMISSION_DOCUMENT_VIEW, request.user, pre_object_list)
else:
object_list = pre_object_list
context = {
'object_list': object_list,
'title': _('Documents missing required metadata'),
'hide_links': True,
}
return document_list(
request,
#object_list=
extra_context=context
)
# Setup views
def setup_metadata_type_list(request):
Permission.objects.check_permissions(request.user, [PERMISSION_METADATA_TYPE_VIEW])