Add tool to show list of documents with empty metadata that is required for their type. Issue #34.
This commit is contained in:
BIN
mayan/apps/main/static/main/icons/to_do_list.png
Normal file
BIN
mayan/apps/main/static/main/icons/to_do_list.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.5 KiB |
@@ -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,
|
||||
|
||||
@@ -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'}
|
||||
|
||||
@@ -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('',
|
||||
|
||||
@@ -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])
|
||||
|
||||
Reference in New Issue
Block a user