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
|
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')
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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 ''
|
||||||
|
|||||||
@@ -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'),
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -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'),
|
||||||
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user