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 from models import Document
document_list = {'text':_(u'documents'), 'view':'document_list', 'famfam':'page'} document_list = {'text':_(u'documents'), 'view':'document_list', 'famfam':'page'}
document_create = {'text':_('create document'), 'view':'document_create', 'famfam':'page_add'} document_create = {'text':_('upload a document'), 'view':'document_create', 'famfam':'page_add'}
document_create_multiple = {'text':_('create multiple document'), 'view':'document_create_multiple', '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') 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): def save(self, *args, **kwargs):
self.update_checksum(save=False) self.update_checksum(save=False)
super(Document, self).save(*args, **kwargs) 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(): for metadata in self.documentmetadata_set.all():
if metadata.metadata_type.documenttypemetadatatype_set.all()[0].create_directory_link: 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)) target_directory = os.path.join(FILESERVING_PATH, slugify(metadata.metadata_type.name), slugify(metadata.value))
try: targets.append(os.path.join(target_directory, os.extsep.join([slugify(self.file_filename), slugify(self.file_extension)])))
os.makedirs(target_directory) return targets
except OSError as exc:
if exc.errno == errno.EEXIST:
pass
else:
return _(u'Unable to create metadata indexing directory.')
target_filepath = os.path.join(target_directory, os.extsep.join([slugify(self.file_filename), slugify(self.file_extension)])) def create_fs_links(self):
try: for target in self.calculate_fs_links():
os.symlink(os.path.abspath(self.file.path), target_filepath) try:
except OSError as exc: os.makedirs(os.path.dirname(target))
if exc.errno == errno.EEXIST: except OSError as exc:
pass if exc.errno == errno.EEXIST:
else: pass
return _(u'Unable to create metadata indexing symbolic link.') 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 '' 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/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/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+)/$', '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.contrib import messages
from django.views.generic.list_detail import object_detail, object_list from django.views.generic.list_detail import object_detail, object_list
from django.core.urlresolvers import reverse 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 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', { return render_to_response('generic_form.html', {
'form':form, 'form':form,
'title':_(u'upload a local document'),
'subtemplates_dict':[ 'subtemplates_dict':[
{ {
'name':'generic_list_subtemplate.html', 'name':'generic_list_subtemplate.html',
'title':_(u'files in staging'), 'title':_(u'files in staging'),
'object_list':filelist, 'object_list':filelist,
#'extra_columns':[{'name':_(u'qty'), 'attribute':'qty'}],
}, },
], ],
@@ -116,5 +116,14 @@ def document_view(request, document_id):
}, context_instance=RequestContext(request)) }, 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'),
})