diff --git a/apps/documents/views.py b/apps/documents/views.py index af77a2f1aa..e6c10db735 100644 --- a/apps/documents/views.py +++ b/apps/documents/views.py @@ -186,9 +186,11 @@ def document_view(request, document_id, advanced=False): def document_delete(request, document_id=None, document_id_list=None): + post_action_redirect = None + if 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: documents = [get_object_or_404(Document, pk=document_id) for document_id in document_id_list.split(',')] else: @@ -200,8 +202,6 @@ def document_delete(request, document_id=None, document_id_list=None): except PermissionDenied: 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', '/'))) next = request.POST.get('next', request.GET.get('next', post_action_redirect if post_action_redirect else request.META.get('HTTP_REFERER', '/'))) diff --git a/apps/sources/models.py b/apps/sources/models.py index 7243583f90..195022cfcf 100644 --- a/apps/sources/models.py +++ b/apps/sources/models.py @@ -1,12 +1,14 @@ from __future__ import absolute_import from ast import literal_eval +import logging from django.db import models from django.utils.translation import ugettext_lazy as _ from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes import generic from django.core.exceptions import ValidationError +from django.db import transaction from converter.api import get_available_transformations_choices from converter.literals import DIMENSION_SEPARATOR @@ -27,6 +29,8 @@ from .literals import (SOURCE_CHOICES, SOURCE_CHOICES_PLURAL, SOURCE_UNCOMPRESS_CHOICE_Y) from .compressed_file import CompressedFile, NotACompressedFile +logger = logging.getLogger(__name__) + class BaseModel(models.Model): 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) 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: try: cf = CompressedFile(file_object) @@ -63,17 +69,23 @@ class BaseModel(models.Model): for fp in cf.children(): if verbose: 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() count += 1 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: self.upload_single_file(file_object, filename, use_file_name, document_type, metadata_dict_list, user, document, new_version_data) 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): if not document: document = Document() @@ -263,20 +275,7 @@ class SourceTransformation(models.Model): 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 - #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): verbose_name = _(u'out of process') verbose_name_plural = _(u'out of process') diff --git a/apps/sources/views.py b/apps/sources/views.py index f116dfad64..900c3aba50 100644 --- a/apps/sources/views.py +++ b/apps/sources/views.py @@ -150,7 +150,7 @@ def upload_interactive(request, source_type=None, source_id=None, document_pk=No 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), document_type=document_type, 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') ) 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])) 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()) except Exception, e: if settings.DEBUG: @@ -206,7 +214,7 @@ def upload_interactive(request, source_type=None, source_id=None, document_pk=No expand = False else: if staging_folder.uncompress == SOURCE_UNCOMPRESS_CHOICE_ASK: - expand = form.cleaned_dataget('expand') + expand = form.cleaned_data.get('expand') else: if staging_folder.uncompress == SOURCE_UNCOMPRESS_CHOICE_Y: 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) - 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), document_type=document_type, expand=expand, @@ -227,7 +235,14 @@ def upload_interactive(request, source_type=None, source_id=None, document_pk=No if document: messages.success(request, _(u'Document version from staging file: %s, uploaded successfully.') % staging_file.filename) 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: transformations, errors = staging_folder.get_transformation_list()