Implemented document delete view

This commit is contained in:
Roberto Rosario
2011-02-05 02:02:36 -04:00
parent 03f7b7c9ab
commit f709a40a27
4 changed files with 52 additions and 24 deletions

View File

@@ -5,10 +5,11 @@ from common.api import register_links, register_menu
from models import Document
document_list = {'text':_(u'documents'), 'view':'document_list', 'famfam':'page'}
document_create = {'text':_('create document'), 'view':'document_create', 'famfam':'page_add'}
document_create_multiple = {'text':_('create multiple document'), 'view':'document_create_multiple', 'famfam':'page_add'}
document_create = {'text':_('upload a document'), 'view':'document_create', 'famfam':'page_add'}
document_create_multiple = {'text':_('upload multiple document'), 'view':'document_create_multiple', 'famfam':'page_add'}
document_delete = {'text':_('delete'), 'view':'document_delete', 'args':'object.id', 'famfam':'page_delete'}
#register_links(Document, [purchase_order_item_update, purchase_order_item_delete, jump_to_template, purchase_order_item_close, purchase_order_item_transfer])
register_links(Document, [document_delete])
register_links(['document_list', 'document_create', 'upload_document_with_type'], [document_create, document_create_multiple], menu_name='sidebar')

View File

@@ -76,27 +76,45 @@ class Document(models.Model):
def save(self, *args, **kwargs):
self.update_checksum(save=False)
super(Document, self).save(*args, **kwargs)
def delete(self, *args, **kwargs):
self.delete_fs_links()
super(Document, self).delete(*args, **kwargs)
def create_fs_links(self):
def calculate_fs_links(self):
targets = []
for metadata in self.documentmetadata_set.all():
if metadata.metadata_type.documenttypemetadatatype_set.all()[0].create_directory_link:
target_directory = os.path.join(FILESERVING_PATH, slugify(metadata.metadata_type.name), slugify(metadata.value))
try:
os.makedirs(target_directory)
except OSError as exc:
if exc.errno == errno.EEXIST:
pass
else:
return _(u'Unable to create metadata indexing directory.')
targets.append(os.path.join(target_directory, os.extsep.join([slugify(self.file_filename), slugify(self.file_extension)])))
return targets
target_filepath = os.path.join(target_directory, os.extsep.join([slugify(self.file_filename), slugify(self.file_extension)]))
try:
os.symlink(os.path.abspath(self.file.path), target_filepath)
except OSError as exc:
if exc.errno == errno.EEXIST:
pass
else:
return _(u'Unable to create metadata indexing symbolic link.')
def create_fs_links(self):
for target in self.calculate_fs_links():
try:
os.makedirs(os.path.dirname(target))
except OSError as exc:
if exc.errno == errno.EEXIST:
pass
else:
return _(u'Unable to create metadata indexing directory.')
try:
os.symlink(os.path.abspath(self.file.path), target)
except OSError as exc:
if exc.errno == errno.EEXIST:
pass
else:
return _(u'Unable to create metadata indexing symbolic link.')
def delete_fs_links(self):
for target in self.calculate_fs_links():
try:
os.unlink(target)
except OSError as exc:
if exc.errno == errno.ENOENT:
pass
else:
return _(u'Unable to delete metadata indexing symbolic link.')
available_functions_string = (_(u' Available functions: %s') % ','.join(['%s()' % name for name, function in AVAILABLE_FUNCTIONS.items()])) if AVAILABLE_FUNCTIONS else ''

View File

@@ -10,5 +10,5 @@ urlpatterns = patterns('documents.views',
url(r'^document/type/(?P<document_type_id>\d+)/upload/single/$', 'upload_document_with_type', {'multiple':False}, 'upload_document_with_type'),
url(r'^document/type/(?P<document_type_id>\d+)/upload/multiple/$', 'upload_document_with_type', {'multiple':True}, 'upload_multiple_documents_with_type'),
url(r'^document/(?P<document_id>\d+)/$', 'document_view', (), 'document_view'),
url(r'^document/(?P<document_id>\d+)/delete/$', 'document_delete', (), 'document_delete'),
)

View File

@@ -8,7 +8,7 @@ from django.template import RequestContext
from django.contrib import messages
from django.views.generic.list_detail import object_detail, object_list
from django.core.urlresolvers import reverse
from django.views.generic.create_update import create_object
from django.views.generic.create_update import create_object, delete_object
from django.forms.formsets import formset_factory
@@ -78,12 +78,12 @@ def upload_document_with_type(request, document_type_id, multiple=True):
return render_to_response('generic_form.html', {
'form':form,
'title':_(u'upload a local document'),
'subtemplates_dict':[
{
'name':'generic_list_subtemplate.html',
'title':_(u'files in staging'),
'object_list':filelist,
#'extra_columns':[{'name':_(u'qty'), 'attribute':'qty'}],
},
],
@@ -116,5 +116,14 @@ def document_view(request, document_id):
}, context_instance=RequestContext(request))
#def document_edit(request, document_id):
def document_delete(request, document_id):
document = get_object_or_404(Document, pk=document_id)
return delete_object(request, model=Document, object_id=document_id,
template_name='generic_confirm.html',
post_delete_redirect=reverse('document_list'),
extra_context={
'delete_view':True,
'object':document,
'object_name':_(u'document'),
})