From 661a63030b5b487abe7fa31107c121716ebbd3ad Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Mon, 12 Jan 2015 01:50:44 -0400 Subject: [PATCH] Add tool to show list of documents with empty metadata that is required for their type. Issue #34. --- .../main/static/main/icons/to_do_list.png | Bin 0 -> 1564 bytes mayan/apps/metadata/__init__.py | 5 ++- mayan/apps/metadata/links.py | 2 ++ mayan/apps/metadata/urls.py | 2 ++ mayan/apps/metadata/views.py | 31 +++++++++++++++++- 5 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 mayan/apps/main/static/main/icons/to_do_list.png diff --git a/mayan/apps/main/static/main/icons/to_do_list.png b/mayan/apps/main/static/main/icons/to_do_list.png new file mode 100644 index 0000000000000000000000000000000000000000..0b4ab11c035f1b4d3b5be3ff2e84c66ed3e8182d GIT binary patch literal 1564 zcmV+%2IKjOP)C~}SQb~;RBiA1}+sb9Gx&A0DWX{r4=-F`be=e*~Ap5OEPc;CYT5WcUkZve-wR%96p z!X4}j4m`&}lBCA<>(;HK2V#hcruKbjoQmYe;+^?Xbnnt$Od|ry!x#et14>m*O&zUi z2n6rk+pPTE*r!~s=~h~I)iTy5sMLX&@9OFX*RENEp5E&u1Q(wFih|^%c{o~Kjh71x z(cj;Xvn?&ng&Q_J=T*XVq^jEauYC;9o1Vp(-G=eI4otb;iKjm+isBgwO?IB=RWle2 zlQM0->Iq#(NADmmE)J`#D_0(`Yxs*EPd!|D%$c2)g|#ofgzElUxW`;@*qo5vPWIU& zystORd$u6EPR6vknv~|LW{mtZiugDStgG_p{JJB~7BzJSrca-VtKHXNc`OFU#~U%L zuM5k*ELq0B69Nf@8v@_?Q6>uOqb7_xfNLK-ffd_cMfRL|_@b%>g4>2GSFS)J(U+7L zTWR`DGFt!vK4Jo?sq;}?TTc;>#=NsdSh4jLAfXsIzZ-9hwb*fUH+a(&eE!MD47`VI zkX3>(QA#Y1;VZzxFg9jG&XO$E&TXHA+${`zGjL%KaP=hVY(~y#4GPOH`GHS_z?+2z zpZNM_`TZr}ao6d_U0Foe`*UF>*(bnH(4ssJwWnh9{&PX#K{=phwTA$wGGhcZ3kA*@ zjNpvXxV$S7)~y6SyVwKXP2jwYgKbH8vm!Kj2m%K5_V!?8WJo2zc+8p=gXH97$kZi$ z6=C@Tg9#kP{PNC(0PsedA))-|*+?kd4^%vJGZeUr>31XW7#M+$ zIYyl>B_&0Do4qs_-`4$r1+Ck?;G2EG-6*?Y!KSafJnM+g`=*d^ubS3#fk{rbVdF-q zG2sM~-9+HqyxGn?|Hu!#=x`S#yB&x&L-B@gQUutDjkTbusY&l{F|n~~+*LIwM>yjY zw7+AaCR0SHAv)KExlo27dKr=;sScNDR! z$@8Rlf#w|qeo{?12LAdt4BQ2_<#L!@Kk*}AAOhXpT^Jf1oKV1GL262>nyg0yt1 z5F>6}sz+K9?XWjaLK*7B@7=@rYKt#~x4)X{e&Y|^z1Zdgux`u{m*}L~Yl)-s^Sc&xb zeW#JlAWJ5jiLhG8q<@`ndk>_e_ab0q|7hCZ>i;m<$;3wH4)yXs0R{jfX2dji{D2k! O0000\d+)/metadata/edit/$', 'setup_document_type_metadata', (), 'setup_document_type_metadata'), url(r'^setup/document/type/(?P\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('', diff --git a/mayan/apps/metadata/views.py b/mayan/apps/metadata/views.py index 884b7f80c3..c0a1d7a855 100644 --- a/mayan/apps/metadata/views.py +++ b/mayan/apps/metadata/views.py @@ -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])