Merge branch 'development' into feature/bulk_upload

Conflicts:
	apps/sources/models.py
This commit is contained in:
Roberto Rosario
2012-01-26 10:33:08 -04:00
3 changed files with 38 additions and 24 deletions

View File

@@ -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', '/')))

View File

@@ -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')

View File

@@ -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()