Raise PermissionDenied instead of redirecting with a message if user doesn't have the tag attach permission. GL issue #235.
This commit is contained in:
@@ -182,7 +182,7 @@ class TagViewTestCase(GenericDocumentViewTestCase):
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
self.assertEqual(response.status_code, 302)
|
self.assertEqual(response.status_code, 403)
|
||||||
self.assertEqual(self.document.tags.count(), 0)
|
self.assertEqual(self.document.tags.count(), 0)
|
||||||
|
|
||||||
def test_document_attach_tag_view_with_permission(self):
|
def test_document_attach_tag_view_with_permission(self):
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ from django.contrib import messages
|
|||||||
from django.core.exceptions import PermissionDenied
|
from django.core.exceptions import PermissionDenied
|
||||||
from django.core.urlresolvers import reverse, reverse_lazy
|
from django.core.urlresolvers import reverse, reverse_lazy
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.http import HttpResponseRedirect
|
from django.http import Http404, HttpResponseRedirect
|
||||||
from django.shortcuts import get_object_or_404, render_to_response
|
from django.shortcuts import get_object_or_404, render_to_response
|
||||||
from django.template import RequestContext
|
from django.template import RequestContext
|
||||||
from django.utils.translation import ugettext_lazy as _, ungettext
|
from django.utils.translation import ugettext_lazy as _, ungettext
|
||||||
@@ -45,14 +45,6 @@ def tag_attach(request, document_id=None, document_id_list=None):
|
|||||||
elif document_id_list:
|
elif document_id_list:
|
||||||
queryset = Document.objects.filter(pk__in=document_id_list)
|
queryset = Document.objects.filter(pk__in=document_id_list)
|
||||||
|
|
||||||
if not queryset:
|
|
||||||
messages.error(request, _('Must provide at least one document.'))
|
|
||||||
return HttpResponseRedirect(
|
|
||||||
request.META.get(
|
|
||||||
'HTTP_REFERER', reverse(settings.LOGIN_REDIRECT_URL)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
Permission.check_permissions(request.user, (permission_tag_attach,))
|
Permission.check_permissions(request.user, (permission_tag_attach,))
|
||||||
except PermissionDenied:
|
except PermissionDenied:
|
||||||
@@ -60,6 +52,17 @@ def tag_attach(request, document_id=None, document_id_list=None):
|
|||||||
permission_tag_attach, request.user, queryset
|
permission_tag_attach, request.user, queryset
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if not queryset:
|
||||||
|
if document_id:
|
||||||
|
raise PermissionDenied
|
||||||
|
else:
|
||||||
|
messages.error(request, _('Must provide at least one document.'))
|
||||||
|
return HttpResponseRedirect(
|
||||||
|
request.META.get(
|
||||||
|
'HTTP_REFERER', reverse(settings.LOGIN_REDIRECT_URL)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
post_action_redirect = None
|
post_action_redirect = None
|
||||||
previous = request.POST.get(
|
previous = request.POST.get(
|
||||||
'previous', request.GET.get(
|
'previous', request.GET.get(
|
||||||
|
|||||||
Reference in New Issue
Block a user