Merge branch 'development' into feature/bulk_upload
Conflicts: apps/sources/models.py
This commit is contained in:
@@ -186,9 +186,11 @@ def document_view(request, document_id, advanced=False):
|
|||||||
|
|
||||||
|
|
||||||
def document_delete(request, document_id=None, document_id_list=None):
|
def document_delete(request, document_id=None, document_id_list=None):
|
||||||
|
post_action_redirect = None
|
||||||
|
|
||||||
if document_id:
|
if document_id:
|
||||||
documents = [get_object_or_404(Document, pk=document_id)]
|
documents = [get_object_or_404(Document, pk=document_id)]
|
||||||
post_action_redirect = reverse('document_list')
|
post_action_redirect = reverse('document_list_recent')
|
||||||
elif document_id_list:
|
elif document_id_list:
|
||||||
documents = [get_object_or_404(Document, pk=document_id) for document_id in document_id_list.split(',')]
|
documents = [get_object_or_404(Document, pk=document_id) for document_id in document_id_list.split(',')]
|
||||||
else:
|
else:
|
||||||
@@ -200,8 +202,6 @@ def document_delete(request, document_id=None, document_id_list=None):
|
|||||||
except PermissionDenied:
|
except PermissionDenied:
|
||||||
documents = AccessEntry.objects.filter_objects_by_access(PERMISSION_DOCUMENT_DELETE, request.user, documents, exception_on_empty=True)
|
documents = AccessEntry.objects.filter_objects_by_access(PERMISSION_DOCUMENT_DELETE, request.user, documents, exception_on_empty=True)
|
||||||
|
|
||||||
post_action_redirect = None
|
|
||||||
|
|
||||||
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', '/')))
|
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', '/')))
|
||||||
next = request.POST.get('next', request.GET.get('next', post_action_redirect if post_action_redirect else request.META.get('HTTP_REFERER', '/')))
|
next = request.POST.get('next', request.GET.get('next', post_action_redirect if post_action_redirect else request.META.get('HTTP_REFERER', '/')))
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,14 @@
|
|||||||
from __future__ import absolute_import
|
from __future__ import absolute_import
|
||||||
|
|
||||||
from ast import literal_eval
|
from ast import literal_eval
|
||||||
|
import logging
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from django.contrib.contenttypes import generic
|
from django.contrib.contenttypes import generic
|
||||||
from django.core.exceptions import ValidationError
|
from django.core.exceptions import ValidationError
|
||||||
|
from django.db import transaction
|
||||||
|
|
||||||
from converter.api import get_available_transformations_choices
|
from converter.api import get_available_transformations_choices
|
||||||
from converter.literals import DIMENSION_SEPARATOR
|
from converter.literals import DIMENSION_SEPARATOR
|
||||||
@@ -27,6 +29,8 @@ from .literals import (SOURCE_CHOICES, SOURCE_CHOICES_PLURAL,
|
|||||||
SOURCE_UNCOMPRESS_CHOICE_Y)
|
SOURCE_UNCOMPRESS_CHOICE_Y)
|
||||||
from .compressed_file import CompressedFile, NotACompressedFile
|
from .compressed_file import CompressedFile, NotACompressedFile
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class BaseModel(models.Model):
|
class BaseModel(models.Model):
|
||||||
title = models.CharField(max_length=64, verbose_name=_(u'title'))
|
title = models.CharField(max_length=64, verbose_name=_(u'title'))
|
||||||
@@ -56,6 +60,8 @@ class BaseModel(models.Model):
|
|||||||
return SourceTransformation.transformations.get_for_object_as_list(self)
|
return SourceTransformation.transformations.get_for_object_as_list(self)
|
||||||
|
|
||||||
def upload_file(self, file_object, filename=None, use_file_name=False, document_type=None, expand=False, metadata_dict_list=None, user=None, document=None, new_version_data=None, verbose=False):
|
def upload_file(self, file_object, filename=None, use_file_name=False, document_type=None, expand=False, metadata_dict_list=None, user=None, document=None, new_version_data=None, verbose=False):
|
||||||
|
is_compressed = None
|
||||||
|
|
||||||
if expand:
|
if expand:
|
||||||
try:
|
try:
|
||||||
cf = CompressedFile(file_object)
|
cf = CompressedFile(file_object)
|
||||||
@@ -63,17 +69,23 @@ class BaseModel(models.Model):
|
|||||||
for fp in cf.children():
|
for fp in cf.children():
|
||||||
if verbose:
|
if verbose:
|
||||||
print 'Uploading file #%d: %s' % (count, fp)
|
print 'Uploading file #%d: %s' % (count, fp)
|
||||||
self.upload_single_file(fp, None, document_type, metadata_dict_list, user)
|
self.upload_single_file(file_object=fp, filename=None, document_type=document_type, metadata_dict_list=metadata_dict_list, user=user)
|
||||||
fp.close()
|
fp.close()
|
||||||
count += 1
|
count += 1
|
||||||
|
|
||||||
except NotACompressedFile:
|
except NotACompressedFile:
|
||||||
self.upload_single_file(file_object, filename, document_type, metadata_dict_list, user)
|
is_compressed = False
|
||||||
|
logging.debug('Exception: NotACompressedFile')
|
||||||
|
self.upload_single_file(file_object=file_object, filename=filename, document_type=document_type, metadata_dict_list=metadata_dict_list, user=user)
|
||||||
|
else:
|
||||||
|
is_compressed = True
|
||||||
else:
|
else:
|
||||||
self.upload_single_file(file_object, filename, use_file_name, document_type, metadata_dict_list, user, document, new_version_data)
|
self.upload_single_file(file_object, filename, use_file_name, document_type, metadata_dict_list, user, document, new_version_data)
|
||||||
|
|
||||||
file_object.close()
|
file_object.close()
|
||||||
|
return {'is_compressed': is_compressed}
|
||||||
|
|
||||||
|
@transaction.commit_on_success
|
||||||
def upload_single_file(self, file_object, filename=None, use_file_name=False, document_type=None, metadata_dict_list=None, user=None, document=None, new_version_data=None):
|
def upload_single_file(self, file_object, filename=None, use_file_name=False, document_type=None, metadata_dict_list=None, user=None, document=None, new_version_data=None):
|
||||||
if not document:
|
if not document:
|
||||||
document = Document()
|
document = Document()
|
||||||
@@ -263,20 +275,7 @@ class SourceTransformation(models.Model):
|
|||||||
|
|
||||||
|
|
||||||
class OutOfProcess(BaseModel):
|
class OutOfProcess(BaseModel):
|
||||||
#icon = models.CharField(blank=True, null=True, max_length=24, choices=SOURCE_ICON_CHOICES, verbose_name=_(u'icon'), help_text=_(u'An icon to visually distinguish this source.'))
|
|
||||||
|
|
||||||
#def save(self, *args, **kwargs):
|
|
||||||
# if not self.icon:
|
|
||||||
# self.icon = self.default_icon
|
|
||||||
# super(BaseModel, self).save(*args, **kwargs)
|
|
||||||
|
|
||||||
is_interactive = False
|
is_interactive = False
|
||||||
#source_type = SOURCE_CHOICE_WEB_FORM
|
|
||||||
#default_icon = SOURCE_ICON_DISK
|
|
||||||
|
|
||||||
#uncompress = models.CharField(max_length=1, choices=SOURCE_INTERACTIVE_UNCOMPRESS_CHOICES, verbose_name=_(u'uncompress'), help_text=_(u'Whether to expand or not compressed archives.'))
|
|
||||||
#Default path
|
|
||||||
|
|
||||||
class Meta(BaseModel.Meta):
|
class Meta(BaseModel.Meta):
|
||||||
verbose_name = _(u'out of process')
|
verbose_name = _(u'out of process')
|
||||||
verbose_name_plural = _(u'out of process')
|
verbose_name_plural = _(u'out of process')
|
||||||
|
|||||||
@@ -150,7 +150,7 @@ def upload_interactive(request, source_type=None, source_id=None, document_pk=No
|
|||||||
|
|
||||||
new_filename = get_form_filename(form)
|
new_filename = get_form_filename(form)
|
||||||
|
|
||||||
web_form.upload_file(request.FILES['file'],
|
result = web_form.upload_file(request.FILES['file'],
|
||||||
new_filename, use_file_name=form.cleaned_data.get('use_file_name', False),
|
new_filename, use_file_name=form.cleaned_data.get('use_file_name', False),
|
||||||
document_type=document_type,
|
document_type=document_type,
|
||||||
expand=expand,
|
expand=expand,
|
||||||
@@ -160,10 +160,18 @@ def upload_interactive(request, source_type=None, source_id=None, document_pk=No
|
|||||||
new_version_data=form.cleaned_data.get('new_version_data')
|
new_version_data=form.cleaned_data.get('new_version_data')
|
||||||
)
|
)
|
||||||
if document:
|
if document:
|
||||||
messages.success(request, _(u'Document version uploaded successfully.'))
|
messages.success(request, _(u'New document version uploaded successfully.'))
|
||||||
return HttpResponseRedirect(reverse('document_view_simple', args=[document.pk]))
|
return HttpResponseRedirect(reverse('document_view_simple', args=[document.pk]))
|
||||||
else:
|
else:
|
||||||
messages.success(request, _(u'Document uploaded successfully.'))
|
if result['is_compressed'] == None:
|
||||||
|
messages.success(request, _(u'File uploaded successfully.'))
|
||||||
|
|
||||||
|
if result['is_compressed'] == True:
|
||||||
|
messages.success(request, _(u'File uncompressed successfully and uploaded as individual files.'))
|
||||||
|
|
||||||
|
if result['is_compressed'] == False:
|
||||||
|
messages.warning(request, _(u'File was not a compressed file, uploaded as it was.'))
|
||||||
|
|
||||||
return HttpResponseRedirect(request.get_full_path())
|
return HttpResponseRedirect(request.get_full_path())
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
if settings.DEBUG:
|
if settings.DEBUG:
|
||||||
@@ -206,7 +214,7 @@ def upload_interactive(request, source_type=None, source_id=None, document_pk=No
|
|||||||
expand = False
|
expand = False
|
||||||
else:
|
else:
|
||||||
if staging_folder.uncompress == SOURCE_UNCOMPRESS_CHOICE_ASK:
|
if staging_folder.uncompress == SOURCE_UNCOMPRESS_CHOICE_ASK:
|
||||||
expand = form.cleaned_dataget('expand')
|
expand = form.cleaned_data.get('expand')
|
||||||
else:
|
else:
|
||||||
if staging_folder.uncompress == SOURCE_UNCOMPRESS_CHOICE_Y:
|
if staging_folder.uncompress == SOURCE_UNCOMPRESS_CHOICE_Y:
|
||||||
expand = True
|
expand = True
|
||||||
@@ -215,7 +223,7 @@ def upload_interactive(request, source_type=None, source_id=None, document_pk=No
|
|||||||
|
|
||||||
new_filename = get_form_filename(form)
|
new_filename = get_form_filename(form)
|
||||||
|
|
||||||
staging_folder.upload_file(staging_file.upload(),
|
result = staging_folder.upload_file(staging_file.upload(),
|
||||||
new_filename, use_file_name=form.cleaned_data.get('use_file_name', False),
|
new_filename, use_file_name=form.cleaned_data.get('use_file_name', False),
|
||||||
document_type=document_type,
|
document_type=document_type,
|
||||||
expand=expand,
|
expand=expand,
|
||||||
@@ -227,7 +235,14 @@ def upload_interactive(request, source_type=None, source_id=None, document_pk=No
|
|||||||
if document:
|
if document:
|
||||||
messages.success(request, _(u'Document version from staging file: %s, uploaded successfully.') % staging_file.filename)
|
messages.success(request, _(u'Document version from staging file: %s, uploaded successfully.') % staging_file.filename)
|
||||||
else:
|
else:
|
||||||
messages.success(request, _(u'Staging file: %s, uploaded successfully.') % staging_file.filename)
|
if result['is_compressed'] == None:
|
||||||
|
messages.success(request, _(u'Staging file: %s, uploaded successfully.') % staging_file.filename)
|
||||||
|
|
||||||
|
if result['is_compressed'] == True:
|
||||||
|
messages.success(request, _(u'Staging file: %s, uncompressed successfully and uploaded as individual files.') % staging_file.filename)
|
||||||
|
|
||||||
|
if result['is_compressed'] == False:
|
||||||
|
messages.warning(request, _(u'Staging file: %s, was not compressed, uploaded as a single file.') % staging_file.filename)
|
||||||
|
|
||||||
if staging_folder.delete_after_upload:
|
if staging_folder.delete_after_upload:
|
||||||
transformations, errors = staging_folder.get_transformation_list()
|
transformations, errors = staging_folder.get_transformation_list()
|
||||||
|
|||||||
Reference in New Issue
Block a user