From 828bd4e020ed5526d7468885beab281752f84429 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Sat, 5 Feb 2011 03:05:58 -0400 Subject: [PATCH] Further improved exception reporting when creating or deleting filesystem links --- apps/documents/models.py | 15 ++++++++------- apps/documents/views.py | 22 +++++++++++++++++----- 2 files changed, 25 insertions(+), 12 deletions(-) diff --git a/apps/documents/models.py b/apps/documents/models.py index dab18e48b6..745167c418 100644 --- a/apps/documents/models.py +++ b/apps/documents/models.py @@ -8,6 +8,7 @@ from django.conf import settings from django.db import models from django.template.defaultfilters import slugify from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import ugettext from dynamic_search.api import register @@ -93,28 +94,28 @@ class Document(models.Model): for target in self.calculate_fs_links(): try: os.makedirs(os.path.dirname(target)) - except OSError as exc: + except OSError, exc: if exc.errno == errno.EEXIST: pass else: - return _(u'Unable to create metadata indexing directory.') + raise OSError(ugettext(u'Unable to create metadata indexing directory: %s') % exc) try: os.symlink(os.path.abspath(self.file.path), target) - except OSError as exc: + except OSError, exc: if exc.errno == errno.EEXIST: pass else: - return _(u'Unable to create metadata indexing symbolic link.') - + raise OSError(ugettext(u'Unable to create metadata indexing symbolic link: %s') % exc) + def delete_fs_links(self): for target in self.calculate_fs_links(): try: os.unlink(target) - except OSError as exc: + except OSError, exc: if exc.errno == errno.ENOENT: pass else: - return _(u'Unable to delete metadata indexing symbolic link.') + raise OSError(ugettext(u'Unable to delete metadata indexing symbolic link: %s') % exc) available_functions_string = (_(u' Available functions: %s') % ','.join(['%s()' % name for name, function in AVAILABLE_FUNCTIONS.items()])) if AVAILABLE_FUNCTIONS else '' diff --git a/apps/documents/views.py b/apps/documents/views.py index b3c7a6061e..ca8ce4d37e 100644 --- a/apps/documents/views.py +++ b/apps/documents/views.py @@ -63,9 +63,10 @@ def upload_document_with_type(request, document_type_id, multiple=True): document_metadata.save() messages.success(request, _(u'Document uploaded successfully.')) - error_msg = instance.create_fs_links() - if error_msg: - messages.error(request, error_msg) + try: + instance.create_fs_links() + except Exception, e: + messages.error(request, e) if multiple: return HttpResponseRedirect(request.get_full_path()) @@ -134,10 +135,21 @@ def document_edit(request, document_id): if request.method == 'POST': form = DocumentForm_edit(request.POST) if form.is_valid(): - document.delete_fs_links() + try: + document.delete_fs_links() + except Exception, e: + messages.error(request, e) + return HttpResponseRedirect(reverse('document_list')) + document.file_filename = form.cleaned_data['new_filename'] document.save() - document.create_fs_links() + + try: + document.create_fs_links() + except Exception, e: + messages.error(request, e) + return HttpResponseRedirect(reverse('document_list')) + messages.success(request, _(u'Document edited and filesystem links updated.')) return HttpResponseRedirect(reverse('document_list')) else: