From d7d409582f5d2b5ca4858ab939fa9d8fcd98378c Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Thu, 19 Jul 2012 12:15:52 -0400 Subject: [PATCH] Catch a DocumentNotCheckedOut exception if user tries to view checkout info on a non checked out document --- apps/checkouts/views.py | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/apps/checkouts/views.py b/apps/checkouts/views.py index 8ba2930ada..ace4a14085 100644 --- a/apps/checkouts/views.py +++ b/apps/checkouts/views.py @@ -101,22 +101,26 @@ def checkin_document(request, document_pk): document = get_object_or_404(Document, pk=document_pk) post_action_redirect = reverse('checkout_info', args=[document.pk]) + previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', '/'))) + next = request.POST.get('next', request.GET.get('next', post_action_redirect if post_action_redirect else request.META.get('HTTP_REFERER', '/'))) + # If the user trying to check in the document is the same as the check out # user just check for the normal permission otherwise check for the forceful # checkin permission - if document.checkout_info().user_object == request.user: - try: - Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_CHECKIN]) - except PermissionDenied: - AccessEntry.objects.check_access(PERMISSION_DOCUMENT_CHECKIN, request.user, document) - else: - try: - Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_CHECKIN_OVERRIDE]) - except PermissionDenied: - AccessEntry.objects.check_access(PERMISSION_DOCUMENT_CHECKIN_OVERRIDE, request.user, document) - - previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', '/'))) - next = request.POST.get('next', request.GET.get('next', post_action_redirect if post_action_redirect else request.META.get('HTTP_REFERER', '/'))) + try: + if document.checkout_info().user_object == request.user: + try: + Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_CHECKIN]) + except PermissionDenied: + AccessEntry.objects.check_access(PERMISSION_DOCUMENT_CHECKIN, request.user, document) + else: + try: + Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_CHECKIN_OVERRIDE]) + except PermissionDenied: + AccessEntry.objects.check_access(PERMISSION_DOCUMENT_CHECKIN_OVERRIDE, request.user, document) + except DocumentNotCheckedOut: + messages.error(request, _(u'Document has not been checked out.')) + return HttpResponseRedirect(previous) if request.method == 'POST': try: