Detect when a selected document or documents do not have any metadata, display a proper message and return user to the last previous view. Issue #144
This commit is contained in:
@@ -4,11 +4,12 @@ from django.conf import settings
|
||||
from django.contrib import messages
|
||||
from django.core.exceptions import PermissionDenied
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.http import HttpResponseRedirect
|
||||
from django.shortcuts import get_object_or_404, render_to_response
|
||||
from django.http import HttpResponseRedirect, Http404
|
||||
from django.shortcuts import (get_list_or_404, get_object_or_404,
|
||||
render_to_response)
|
||||
from django.template import RequestContext
|
||||
from django.utils.http import urlencode
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.utils.translation import ugettext_lazy as _, ungettext
|
||||
|
||||
from acls.models import AccessEntry
|
||||
from documents.models import Document, DocumentType
|
||||
@@ -36,15 +37,9 @@ from .permissions import (PERMISSION_METADATA_DOCUMENT_ADD,
|
||||
|
||||
def metadata_edit(request, document_id=None, document_id_list=None):
|
||||
if document_id:
|
||||
documents = [get_object_or_404(Document, pk=document_id)]
|
||||
if documents[0].metadata.count() == 0:
|
||||
messages.warning(request, _(u'The selected document doesn\'t have any metadata.'))
|
||||
return HttpResponseRedirect(request.META.get('HTTP_REFERER', reverse('main:home')))
|
||||
elif document_id_list:
|
||||
documents = [get_object_or_404(Document.objects.select_related('document_type'), pk=document_id) for document_id in document_id_list.split(',')]
|
||||
if len(set([document.document_type.pk for document in documents])) > 1:
|
||||
messages.error(request, _(u'Only select documents of the same type.'))
|
||||
return HttpResponseRedirect(request.META.get('HTTP_REFERER', reverse('main:home')))
|
||||
document_id_list = unicode(document_id)
|
||||
|
||||
documents = Document.objects.select_related('metadata').filter(pk__in=document_id_list.split(','))
|
||||
|
||||
try:
|
||||
Permission.objects.check_permissions(request.user, [PERMISSION_METADATA_DOCUMENT_EDIT])
|
||||
@@ -52,7 +47,23 @@ def metadata_edit(request, document_id=None, document_id_list=None):
|
||||
documents = AccessEntry.objects.filter_objects_by_access(PERMISSION_METADATA_DOCUMENT_EDIT, request.user, documents)
|
||||
|
||||
if not documents:
|
||||
messages.error(request, _(u'Must provide at least one document.'))
|
||||
if document_id:
|
||||
raise Http404
|
||||
else:
|
||||
messages.error(request, _(u'Must provide at least one document.'))
|
||||
return HttpResponseRedirect(request.META.get('HTTP_REFERER', reverse('main:home')))
|
||||
|
||||
if len(set([document.document_type.pk for document in documents])) > 1:
|
||||
messages.error(request, _(u'Only select documents of the same type.'))
|
||||
return HttpResponseRedirect(request.META.get('HTTP_REFERER', reverse('main:home')))
|
||||
|
||||
if set(documents.values_list('metadata__value' ,flat=True)) == set([None]):
|
||||
message = ungettext(
|
||||
u'The selected document doesn\'t have any metadata.',
|
||||
u'The selected documents doesn\'t have any metadata.',
|
||||
len(documents)
|
||||
)
|
||||
messages.warning(request, message)
|
||||
return HttpResponseRedirect(request.META.get('HTTP_REFERER', reverse('main:home')))
|
||||
|
||||
post_action_redirect = reverse('documents:document_list_recent')
|
||||
@@ -111,6 +122,7 @@ def metadata_edit(request, document_id=None, document_id_list=None):
|
||||
'form': formset,
|
||||
'next': next,
|
||||
}
|
||||
|
||||
if len(documents) == 1:
|
||||
context['object'] = documents[0]
|
||||
context['title'] = _(u'Edit metadata for document: %s') % ', '.join([unicode(d) for d in documents])
|
||||
|
||||
Reference in New Issue
Block a user