Further improved exception reporting when creating or deleting filesystem links

This commit is contained in:
Roberto Rosario
2011-02-05 03:05:58 -04:00
parent 2ec201e5e4
commit 828bd4e020
2 changed files with 25 additions and 12 deletions

View File

@@ -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 ''

View File

@@ -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: