Implemented document delete view
This commit is contained in:
@@ -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')
|
||||
|
||||
|
||||
|
||||
@@ -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 ''
|
||||
|
||||
@@ -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'),
|
||||
)
|
||||
|
||||
@@ -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'),
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user