Modernize exception handling, and improves Python 3.x compatibility
This commit is contained in:
@@ -41,7 +41,7 @@ Are you sure you want to do this?
|
||||
if confirm == 'yes':
|
||||
try:
|
||||
Cleanup.execute_all()
|
||||
except Exception, e:
|
||||
except Exception as exception:
|
||||
raise CommandError("""Unable to erase data. Possible reasons:
|
||||
* The database isn't running or isn't configured correctly.
|
||||
* At least one of the expected database tables doesn't exist.""")
|
||||
|
||||
@@ -110,9 +110,9 @@ def bootstrap_setup_delete(request, bootstrap_setup_pk):
|
||||
try:
|
||||
bootstrap.delete()
|
||||
messages.success(request, _(u'Bootstrap setup: %s deleted successfully.') % bootstrap)
|
||||
except Exception, e:
|
||||
except Exception as exception:
|
||||
messages.error(request, _(u'Bootstrap setup: %(bootstrap)s, delete error: %(error)s') % {
|
||||
'bootstrap': bootstrap, 'error': e})
|
||||
'bootstrap': bootstrap, 'error': exception})
|
||||
|
||||
return HttpResponseRedirect(reverse('bootstrap_setup_list'))
|
||||
|
||||
@@ -327,8 +327,8 @@ def bootstrap_setup_repository_sync(request):
|
||||
try:
|
||||
BootstrapSetup.objects.repository_sync()
|
||||
messages.success(request, _(u'Bootstrap repository successfully synchronized.'))
|
||||
except Exception, e:
|
||||
messages.error(request, _(u'Bootstrap repository synchronization error: %(error)s') % {'error': e})
|
||||
except Exception as exception:
|
||||
messages.error(request, _(u'Bootstrap repository synchronization error: %(error)s') % {'error': exception})
|
||||
|
||||
return HttpResponseRedirect(reverse('bootstrap_setup_list'))
|
||||
|
||||
|
||||
@@ -7,7 +7,8 @@ from .conf.settings import KEYSERVERS, GPG_HOME
|
||||
|
||||
try:
|
||||
gpg = GPG(home=GPG_HOME, keyservers=KEYSERVERS)
|
||||
except Exception, e:
|
||||
except Exception as exception:
|
||||
gpg = GPG(keyservers=KEYSERVERS)
|
||||
sys.stderr.write(u'ERROR: GPG initialization error: %s\n' % e)
|
||||
# TODO: Maybe raise a standard exception to signify configuration error
|
||||
sys.stderr.write(u'ERROR: GPG initialization error: %s\n' % exception)
|
||||
sys.stderr.write(u'INFO: Initializating GPG with system default home\n')
|
||||
|
||||
@@ -36,13 +36,13 @@ def key_receive(request, key_id):
|
||||
key = gpg.import_key(keys_dict[key_id].key)
|
||||
messages.success(request, _(u'Key: %s, imported successfully.') % key)
|
||||
return HttpResponseRedirect(next)
|
||||
except (KeyImportError, KeyError, TypeError), e:
|
||||
except (KeyImportError, KeyError, TypeError) as exception:
|
||||
messages.error(
|
||||
request,
|
||||
_(u'Unable to import key id: %(key_id)s; %(error)s') %
|
||||
{
|
||||
'key_id': key_id,
|
||||
'error': e,
|
||||
'error': exception,
|
||||
}
|
||||
)
|
||||
return HttpResponseRedirect(previous)
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
from django.shortcuts import render_to_response, get_object_or_404
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.contrib.comments.models import Comment
|
||||
from django.http import HttpResponseRedirect
|
||||
from django.template import RequestContext
|
||||
from django.contrib import messages
|
||||
from django.contrib.comments.models import Comment
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.contrib.sites.models import Site
|
||||
from django.core.exceptions import PermissionDenied
|
||||
from django.http import HttpResponseRedirect
|
||||
from django.shortcuts import render_to_response, get_object_or_404
|
||||
from django.template import RequestContext
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from acls.models import AccessEntry
|
||||
from permissions.models import Permission
|
||||
from documents.models import Document
|
||||
from permissions.models import Permission
|
||||
|
||||
from .permissions import (PERMISSION_COMMENT_CREATE,
|
||||
PERMISSION_COMMENT_DELETE, PERMISSION_COMMENT_VIEW)
|
||||
from .forms import CommentForm
|
||||
from .permissions import (PERMISSION_COMMENT_CREATE, PERMISSION_COMMENT_DELETE,
|
||||
PERMISSION_COMMENT_VIEW)
|
||||
|
||||
|
||||
def comment_delete(request, comment_id=None, comment_id_list=None):
|
||||
@@ -44,9 +44,9 @@ def comment_delete(request, comment_id=None, comment_id_list=None):
|
||||
try:
|
||||
comment.delete()
|
||||
messages.success(request, _(u'Comment "%s" deleted successfully.') % comment)
|
||||
except Exception, e:
|
||||
except Exception as exception:
|
||||
messages.error(request, _(u'Error deleting comment "%(comment)s": %(error)s') % {
|
||||
'comment': comment, 'error': e
|
||||
'comment': comment, 'error': exception
|
||||
})
|
||||
|
||||
return HttpResponseRedirect(next)
|
||||
|
||||
@@ -127,8 +127,8 @@ def document_signature_download(request, document_pk):
|
||||
save_as=u'"%s.sig"' % document.filename,
|
||||
content_type=u'application/octet-stream'
|
||||
)
|
||||
except Exception, e:
|
||||
messages.error(request, e)
|
||||
except Exception as exception:
|
||||
messages.error(request, exception)
|
||||
return HttpResponseRedirect(request.META['HTTP_REFERER'])
|
||||
|
||||
return HttpResponseRedirect(request.META['HTTP_REFERER'])
|
||||
|
||||
@@ -23,8 +23,8 @@ class DocumentPageTransformationManager(models.Manager):
|
||||
'arguments': literal_eval(transformation['arguments'].strip())
|
||||
}
|
||||
)
|
||||
except (ValueError, SyntaxError), e:
|
||||
warnings.append(e)
|
||||
except (ValueError, SyntaxError) as exception:
|
||||
warnings.append(exception)
|
||||
|
||||
return transformations, warnings
|
||||
|
||||
|
||||
@@ -94,8 +94,8 @@ def folder_edit(request, folder_id):
|
||||
folder.save()
|
||||
messages.success(request, _(u'Folder edited successfully'))
|
||||
return HttpResponseRedirect(reverse('folder_list'))
|
||||
except Exception, e:
|
||||
messages.error(request, _(u'Error editing folder; %s') % e)
|
||||
except Exception as exception:
|
||||
messages.error(request, _(u'Error editing folder; %s') % exception)
|
||||
else:
|
||||
form = FolderForm(instance=folder)
|
||||
|
||||
@@ -125,9 +125,9 @@ def folder_delete(request, folder_id):
|
||||
try:
|
||||
folder.delete()
|
||||
messages.success(request, _(u'Folder: %s deleted successfully.') % folder)
|
||||
except Exception, e:
|
||||
except Exception as exception:
|
||||
messages.error(request, _(u'Folder: %(folder)s delete error: %(error)s') % {
|
||||
'folder': folder, 'error': e})
|
||||
'folder': folder, 'error': exception})
|
||||
|
||||
return HttpResponseRedirect(next)
|
||||
|
||||
@@ -267,9 +267,9 @@ def folder_document_remove(request, folder_id, document_id=None, document_id_lis
|
||||
try:
|
||||
folder.remove_document(folder_document)
|
||||
messages.success(request, _(u'Document: %s removed successfully.') % folder_document)
|
||||
except Exception, e:
|
||||
except Exception as exception:
|
||||
messages.error(request, _(u'Document: %(document)s delete error: %(error)s') % {
|
||||
'document': folder_document, 'error': e})
|
||||
'document': folder_document, 'error': exception})
|
||||
|
||||
return HttpResponseRedirect(next)
|
||||
|
||||
|
||||
@@ -106,8 +106,8 @@ def _process_history_text(history, text):
|
||||
for key, value in history.get_expressions().items():
|
||||
try:
|
||||
expressions_dict[key] = eval(value, key_values.copy())
|
||||
except Exception, e:
|
||||
expressions_dict[key] = e
|
||||
except Exception as exception:
|
||||
expressions_dict[key] = exception
|
||||
|
||||
key_values.update(expressions_dict)
|
||||
return text % key_values
|
||||
|
||||
@@ -54,25 +54,25 @@ class SmartLinkManager(models.Manager):
|
||||
elif condition.inclusion == INCLUSION_OR:
|
||||
total_query |= query
|
||||
|
||||
except Exception, e:
|
||||
errors.append(e)
|
||||
except Exception as exception:
|
||||
errors.append(exception)
|
||||
value_query = Q()
|
||||
query = Q()
|
||||
if total_query:
|
||||
try:
|
||||
document_qs = Document.objects.filter(total_query)
|
||||
result[smart_link] = {'documents': document_qs.order_by('date_added') or []}
|
||||
except Exception, e:
|
||||
except Exception as exception:
|
||||
result[smart_link] = {'documents': []}
|
||||
errors.append(e)
|
||||
errors.append(exception)
|
||||
else:
|
||||
result[smart_link] = {'documents': []}
|
||||
|
||||
if smart_link.dynamic_title:
|
||||
try:
|
||||
result[smart_link]['title'] = eval(smart_link.dynamic_title, eval_dict)
|
||||
except Exception, e:
|
||||
result[smart_link]['title'] = 'Error; %s' % e
|
||||
except Exception as exception:
|
||||
result[smart_link]['title'] = 'Error; %s' % exception
|
||||
else:
|
||||
result[smart_link]['title'] = smart_link.title
|
||||
|
||||
|
||||
@@ -84,8 +84,8 @@ def metadata_edit(request, document_id=None, document_id_list=None):
|
||||
if form.cleaned_data['update']:
|
||||
try:
|
||||
save_metadata_list([form.cleaned_data], document)
|
||||
except Exception, e:
|
||||
errors.append(e)
|
||||
except Exception as exception:
|
||||
errors.append(exception)
|
||||
|
||||
if errors:
|
||||
for error in errors:
|
||||
@@ -165,7 +165,6 @@ def metadata_add(request, document_id=None, document_id_list=None):
|
||||
form = AddMetadataForm()
|
||||
|
||||
context = {
|
||||
# 'form_display_mode_table': True,
|
||||
'form': form,
|
||||
'next': next,
|
||||
}
|
||||
@@ -309,13 +308,12 @@ def setup_metadata_type_edit(request, metadatatype_id):
|
||||
if request.method == 'POST':
|
||||
form = MetadataTypeForm(instance=metadata_type, data=request.POST)
|
||||
if form.is_valid():
|
||||
# folder.title = form.cleaned_data['title']
|
||||
try:
|
||||
form.save()
|
||||
messages.success(request, _(u'Metadata type edited successfully'))
|
||||
return HttpResponseRedirect(reverse('setup_metadata_type_list'))
|
||||
except Exception, e:
|
||||
messages.error(request, _(u'Error editing metadata type; %s') % e)
|
||||
except Exception as exception:
|
||||
messages.error(request, _(u'Error editing metadata type; %s') % exception)
|
||||
pass
|
||||
else:
|
||||
form = MetadataTypeForm(instance=metadata_type)
|
||||
@@ -360,9 +358,9 @@ def setup_metadata_type_delete(request, metadatatype_id):
|
||||
try:
|
||||
metadata_type.delete()
|
||||
messages.success(request, _(u'Metadata type: %s deleted successfully.') % metadata_type)
|
||||
except Exception, e:
|
||||
except Exception as exception:
|
||||
messages.error(request, _(u'Metadata type: %(metadata_type)s delete error: %(error)s') % {
|
||||
'metadata_type': metadata_type, 'error': e})
|
||||
'metadata_type': metadata_type, 'error': exception})
|
||||
|
||||
return HttpResponseRedirect(next)
|
||||
|
||||
@@ -411,8 +409,8 @@ def setup_metadata_set_edit(request, metadata_set_id):
|
||||
form.save()
|
||||
messages.success(request, _(u'Metadata set edited successfully'))
|
||||
return HttpResponseRedirect(reverse('setup_metadata_set_list'))
|
||||
except Exception, e:
|
||||
messages.error(request, _(u'Error editing metadata set; %s') % e)
|
||||
except Exception as exception:
|
||||
messages.error(request, _(u'Error editing metadata set; %s') % exception)
|
||||
pass
|
||||
else:
|
||||
form = MetadataSetForm(instance=metadata_set)
|
||||
@@ -501,9 +499,9 @@ def setup_metadata_set_delete(request, metadata_set_id):
|
||||
metadata_set.delete()
|
||||
messages.success(request, _(u'Metadata set: %s deleted successfully.') % metadata_set)
|
||||
return HttpResponseRedirect(post_action_redirect)
|
||||
except Exception, e:
|
||||
except Exception as exception:
|
||||
messages.error(request, _(u'Metadata set: %(metadata_set)s delete error: %(error)s') % {
|
||||
'metadata_set': metadata_set, 'error': e})
|
||||
'metadata_set': metadata_set, 'error': exception})
|
||||
return HttpResponseRedirect(previous)
|
||||
|
||||
context = {
|
||||
|
||||
@@ -77,8 +77,8 @@ def task_process_document_queues():
|
||||
if oldest_queued_document_qs:
|
||||
oldest_queued_document = oldest_queued_document_qs.order_by('datetime_submitted')[0]
|
||||
process_job(task_process_queue_document, oldest_queued_document.pk)
|
||||
except Exception, e:
|
||||
logger.error('unhandled exception: %s' % e)
|
||||
except Exception as exception:
|
||||
logger.error('unhandled exception: %s' % exception)
|
||||
finally:
|
||||
# Don't process anymore from this queryset, might be stale
|
||||
break
|
||||
|
||||
@@ -86,9 +86,9 @@ def queue_document_delete(request, queue_document_id=None, queue_document_id_lis
|
||||
messages.success(request, _(u'Queue document: %(document)s deleted successfully.') % {
|
||||
'document': queue_document.document})
|
||||
|
||||
except Exception, e:
|
||||
except Exception as exception:
|
||||
messages.error(request, _(u'Error deleting document: %(document)s; %(error)s') % {
|
||||
'document': queue_document, 'error': e})
|
||||
'document': queue_document, 'error': exception})
|
||||
return HttpResponseRedirect(next)
|
||||
|
||||
context = {
|
||||
@@ -145,8 +145,8 @@ def submit_document_to_queue(request, document, post_submit_redirect=None):
|
||||
messages.warning(request, _(u'Document: %(document)s is already queued.') % {
|
||||
'document': document}
|
||||
)
|
||||
except Exception, e:
|
||||
messages.error(request, e)
|
||||
except Exception as exception:
|
||||
messages.error(request, exception)
|
||||
|
||||
if post_submit_redirect:
|
||||
return HttpResponseRedirect(post_submit_redirect)
|
||||
@@ -278,8 +278,8 @@ def all_document_ocr_cleanup(request):
|
||||
try:
|
||||
clean_pages()
|
||||
messages.success(request, _(u'Document pages content clean up complete.'))
|
||||
except Exception, e:
|
||||
messages.error(request, _(u'Document pages content clean up error: %s') % e)
|
||||
except Exception as exception:
|
||||
messages.error(request, _(u'Document pages content clean up error: %s') % exception)
|
||||
|
||||
return HttpResponseRedirect(next)
|
||||
|
||||
|
||||
@@ -24,8 +24,8 @@ def form_view(request):
|
||||
except AlreadyRegistered:
|
||||
messages.error(request, _(u'Your copy is already registered.'))
|
||||
return HttpResponseRedirect('/')
|
||||
except Exception, e:
|
||||
messages.error(request, _(u'Error submiting form; %s.') % e)
|
||||
except Exception as exception:
|
||||
messages.error(request, _(u'Error submiting form; %s.') % exception)
|
||||
else:
|
||||
form = RegistrationForm()
|
||||
|
||||
|
||||
@@ -35,8 +35,8 @@ class Command(LabelCommand):
|
||||
try:
|
||||
metadata_dict = loads(options['metadata'])
|
||||
metadata_dict_list = convert_dict_to_dict_list(metadata_dict)
|
||||
except Exception, e:
|
||||
sys.exit('Metadata error: %s' % e)
|
||||
except Exception as exception:
|
||||
sys.exit('Metadata error: %s' % exception)
|
||||
else:
|
||||
metadata_dict_list = None
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ class SourceTransformationManager(models.Manager):
|
||||
'arguments': literal_eval(transformation['arguments'].strip())
|
||||
}
|
||||
)
|
||||
except (ValueError, SyntaxError), e:
|
||||
warnings.append(e)
|
||||
except (ValueError, SyntaxError) as exception:
|
||||
warnings.append(exception)
|
||||
|
||||
return transformations, warnings
|
||||
|
||||
@@ -189,10 +189,10 @@ def upload_interactive(request, source_type=None, source_id=None, document_pk=No
|
||||
return HttpResponseRedirect(request.get_full_path())
|
||||
except NewDocumentVersionNotAllowed:
|
||||
messages.error(request, _(u'New version uploads are not allowed for this document.'))
|
||||
except Exception, e:
|
||||
except Exception as exception:
|
||||
if settings.DEBUG:
|
||||
raise
|
||||
messages.error(request, _(u'Unhandled exception: %s') % e)
|
||||
messages.error(request, _(u'Unhandled exception: %s') % exception)
|
||||
else:
|
||||
form = WebFormForm(
|
||||
show_expand=(web_form.uncompress == SOURCE_UNCOMPRESS_CHOICE_ASK) and not document,
|
||||
@@ -270,10 +270,10 @@ def upload_interactive(request, source_type=None, source_id=None, document_pk=No
|
||||
return HttpResponseRedirect(request.get_full_path())
|
||||
except NewDocumentVersionNotAllowed:
|
||||
messages.error(request, _(u'New version uploads are not allowed for this document.'))
|
||||
except Exception, e:
|
||||
except Exception as exception:
|
||||
if settings.DEBUG:
|
||||
raise
|
||||
messages.error(request, _(u'Unhandled exception: %s') % e)
|
||||
messages.error(request, _(u'Unhandled exception: %s') % exception)
|
||||
else:
|
||||
form = StagingDocumentForm(document_type=document_type,
|
||||
show_expand=(staging_folder.uncompress == SOURCE_UNCOMPRESS_CHOICE_ASK) and not document,
|
||||
@@ -282,8 +282,8 @@ def upload_interactive(request, source_type=None, source_id=None, document_pk=No
|
||||
)
|
||||
try:
|
||||
staging_filelist = list(staging_folder.get_files())
|
||||
except Exception as e:
|
||||
messages.error(request, e)
|
||||
except Exception as exception:
|
||||
messages.error(request, exception)
|
||||
staging_filelist = []
|
||||
finally:
|
||||
if document:
|
||||
@@ -443,8 +443,8 @@ def setup_source_edit(request, source_type, source_id):
|
||||
form.save()
|
||||
messages.success(request, _(u'Source edited successfully'))
|
||||
return HttpResponseRedirect(next)
|
||||
except Exception, e:
|
||||
messages.error(request, _(u'Error editing source; %s') % e)
|
||||
except Exception as exception:
|
||||
messages.error(request, _(u'Error editing source; %s') % exception)
|
||||
else:
|
||||
form = form_class(instance=source)
|
||||
|
||||
@@ -484,9 +484,9 @@ def setup_source_delete(request, source_type, source_id):
|
||||
try:
|
||||
source.delete()
|
||||
messages.success(request, _(u'Source "%s" deleted successfully.') % source)
|
||||
except Exception, e:
|
||||
except Exception as exception:
|
||||
messages.error(request, _(u'Error deleting source "%(source)s": %(error)s') % {
|
||||
'source': source, 'error': e
|
||||
'source': source, 'error': exception
|
||||
})
|
||||
|
||||
return HttpResponseRedirect(redirect_view)
|
||||
@@ -526,8 +526,8 @@ def setup_source_create(request, source_type):
|
||||
form.save()
|
||||
messages.success(request, _(u'Source created successfully'))
|
||||
return HttpResponseRedirect(reverse('setup_web_form_list'))
|
||||
except Exception, e:
|
||||
messages.error(request, _(u'Error creating source; %s') % e)
|
||||
except Exception as exception:
|
||||
messages.error(request, _(u'Error creating source; %s') % exception)
|
||||
else:
|
||||
form = form_class()
|
||||
|
||||
@@ -586,8 +586,8 @@ def setup_source_transformation_edit(request, transformation_id):
|
||||
form.save()
|
||||
messages.success(request, _(u'Source transformation edited successfully'))
|
||||
return HttpResponseRedirect(next)
|
||||
except Exception, e:
|
||||
messages.error(request, _(u'Error editing source transformation; %s') % e)
|
||||
except Exception as exception:
|
||||
messages.error(request, _(u'Error editing source transformation; %s') % exception)
|
||||
else:
|
||||
form = SourceTransformationForm(instance=source_transformation)
|
||||
|
||||
@@ -616,9 +616,9 @@ def setup_source_transformation_delete(request, transformation_id):
|
||||
try:
|
||||
source_transformation.delete()
|
||||
messages.success(request, _(u'Source transformation deleted successfully.'))
|
||||
except Exception, e:
|
||||
except Exception as exception:
|
||||
messages.error(request, _(u'Error deleting source transformation; %(error)s') % {
|
||||
'error': e}
|
||||
'error': exception}
|
||||
)
|
||||
return HttpResponseRedirect(redirect_view)
|
||||
|
||||
@@ -662,8 +662,8 @@ def setup_source_transformation_create(request, source_type, source_id):
|
||||
source_tranformation.save()
|
||||
messages.success(request, _(u'Source transformation created successfully'))
|
||||
return HttpResponseRedirect(redirect_view)
|
||||
except Exception, e:
|
||||
messages.error(request, _(u'Error creating source transformation; %s') % e)
|
||||
except Exception as exception:
|
||||
messages.error(request, _(u'Error creating source transformation; %s') % exception)
|
||||
else:
|
||||
form = SourceTransformationForm_create()
|
||||
|
||||
|
||||
@@ -167,9 +167,9 @@ def tag_delete(request, tag_id=None, tag_id_list=None):
|
||||
try:
|
||||
tag.delete()
|
||||
messages.success(request, _(u'Tag "%s" deleted successfully.') % tag)
|
||||
except Exception, e:
|
||||
except Exception as exception:
|
||||
messages.error(request, _(u'Error deleting tag "%(tag)s": %(error)s') % {
|
||||
'tag': tag, 'error': e
|
||||
'tag': tag, 'error': exception
|
||||
})
|
||||
|
||||
return HttpResponseRedirect(next)
|
||||
|
||||
@@ -69,8 +69,8 @@ class Command(LabelCommand):
|
||||
else:
|
||||
sys.exit()
|
||||
|
||||
except csv.Error, e:
|
||||
sys.exit('file %s, line %d: %s' % (label, reader.line_num, e))
|
||||
except csv.Error as exception:
|
||||
sys.exit('file %s, line %d: %s' % (label, reader.line_num, exception))
|
||||
else:
|
||||
print 'Finish.'
|
||||
else:
|
||||
|
||||
@@ -121,9 +121,9 @@ def user_delete(request, user_id=None, user_id_list=None):
|
||||
else:
|
||||
user.delete()
|
||||
messages.success(request, _(u'User "%s" deleted successfully.') % user)
|
||||
except Exception, e:
|
||||
except Exception as exception:
|
||||
messages.error(request, _(u'Error deleting user "%(user)s": %(error)s') % {
|
||||
'user': user, 'error': e
|
||||
'user': user, 'error': exception
|
||||
})
|
||||
|
||||
return HttpResponseRedirect(next)
|
||||
@@ -182,9 +182,9 @@ def user_set_password(request, user_id=None, user_id_list=None):
|
||||
user.set_password(password_1)
|
||||
user.save()
|
||||
messages.success(request, _(u'Successfull password reset for user: %s.') % user)
|
||||
except Exception, e:
|
||||
except Exception as exception:
|
||||
messages.error(request, _(u'Error reseting password for user "%(user)s": %(error)s') % {
|
||||
'user': user, 'error': e
|
||||
'user': user, 'error': exception
|
||||
})
|
||||
|
||||
return HttpResponseRedirect(next)
|
||||
@@ -325,9 +325,9 @@ def group_delete(request, group_id=None, group_id_list=None):
|
||||
try:
|
||||
group.delete()
|
||||
messages.success(request, _(u'Group "%s" deleted successfully.') % group)
|
||||
except Exception, e:
|
||||
except Exception as exception:
|
||||
messages.error(request, _(u'Error deleting group "%(group)s": %(error)s') % {
|
||||
'group': group, 'error': e
|
||||
'group': group, 'error': exception
|
||||
})
|
||||
|
||||
return HttpResponseRedirect(next)
|
||||
|
||||
Reference in New Issue
Block a user