Implmented conditional show of expand checkbox, initial support for conditional highlight (buggy)
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import os
|
||||
import zipfile
|
||||
|
||||
from django.http import HttpResponseRedirect
|
||||
from django.shortcuts import render_to_response, get_object_or_404
|
||||
@@ -7,6 +8,7 @@ from django.contrib import messages
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.conf import settings
|
||||
from django.core.files.uploadedfile import SimpleUploadedFile
|
||||
|
||||
from converter.exceptions import UnkownConvertError, UnknownFormat
|
||||
from documents.literals import PICTURE_ERROR_SMALL, PICTURE_ERROR_MEDIUM, \
|
||||
@@ -22,14 +24,12 @@ from metadata.forms import MetadataFormSet, MetadataSelectionForm
|
||||
from permissions.api import check_permissions
|
||||
import sendfile
|
||||
|
||||
#TEMP
|
||||
from documents.forms import DocumentForm
|
||||
#TEMP
|
||||
|
||||
from sources.models import WebForm, StagingFolder
|
||||
from sources.models import SOURCE_CHOICE_WEB_FORM, SOURCE_CHOICE_STAGING
|
||||
from sources.models import SOURCE_UNCOMPRESS_CHOICE_Y, \
|
||||
SOURCE_UNCOMPRESS_CHOICE_N, SOURCE_UNCOMPRESS_CHOICE_ASK
|
||||
from sources.staging import create_staging_file_class
|
||||
from sources.forms import StagingDocumentForm
|
||||
from sources.forms import StagingDocumentForm, WebFormForm
|
||||
|
||||
|
||||
def upload_interactive(request, source_type=None, source_id=None):
|
||||
@@ -48,7 +48,8 @@ def upload_interactive(request, source_type=None, source_id=None):
|
||||
'view': 'upload_interactive',
|
||||
'args': [u'"%s"' % web_form.source_type, web_form.pk],
|
||||
'famfam': web_form.icon,
|
||||
'keep_query': True
|
||||
'keep_query': True,
|
||||
'conditional_highlight': lambda context: context['source'].source_type == web_form.source_type and context['source'].pk == web_form.pk,
|
||||
})
|
||||
|
||||
staging_folders = StagingFolder.objects.filter(enabled=True)
|
||||
@@ -58,7 +59,8 @@ def upload_interactive(request, source_type=None, source_id=None):
|
||||
'view': 'upload_interactive',
|
||||
'args': [u'"%s"' % staging_folder.source_type, staging_folder.pk],
|
||||
'famfam': staging_folder.icon,
|
||||
'keep_query': True
|
||||
'keep_query': True,
|
||||
'conditional_highlight': lambda context: context['source'].source_type == staging_folder.source_type and context['source'].pk == staging_folder.pk,
|
||||
})
|
||||
|
||||
if web_forms.count() == 0 and staging_folders.count() == 0:
|
||||
@@ -90,16 +92,24 @@ def upload_interactive(request, source_type=None, source_id=None):
|
||||
source_type = staging_folders[0].source_type
|
||||
source_id = staging_folders[0].pk
|
||||
|
||||
|
||||
if source_type and source_id:
|
||||
if source_type == SOURCE_CHOICE_WEB_FORM:
|
||||
web_form = get_object_or_404(WebForm, pk=source_id)
|
||||
context['source'] = web_form
|
||||
if request.method == 'POST':
|
||||
form = DocumentForm(request.POST, request.FILES, document_type=document_type)
|
||||
form = WebFormForm(request.POST, request.FILES,
|
||||
document_type=document_type,
|
||||
show_expand=(web_form.uncompress==SOURCE_UNCOMPRESS_CHOICE_ASK)
|
||||
)
|
||||
if form.is_valid():
|
||||
try:
|
||||
expand = form.cleaned_data['expand']
|
||||
if web_form.uncompress==SOURCE_UNCOMPRESS_CHOICE_ASK:
|
||||
expand = form.cleaned_data['expand']
|
||||
else:
|
||||
if web_form.uncompress==SOURCE_UNCOMPRESS_CHOICE_Y:
|
||||
expand = True
|
||||
else:
|
||||
expand = False
|
||||
if (not expand) or (expand and not _handle_zip_file(request, request.FILES['file'], document_type)):
|
||||
instance = form.save()
|
||||
instance.save()
|
||||
@@ -112,7 +122,7 @@ def upload_interactive(request, source_type=None, source_id=None):
|
||||
|
||||
return HttpResponseRedirect(request.get_full_path())
|
||||
|
||||
form = DocumentForm(document_type=document_type)
|
||||
form = WebFormForm(show_expand=(web_form.uncompress==SOURCE_UNCOMPRESS_CHOICE_ASK), document_type=document_type)
|
||||
|
||||
subtemplates_list.append({
|
||||
'name': 'generic_form_subtemplate.html',
|
||||
@@ -127,11 +137,19 @@ def upload_interactive(request, source_type=None, source_id=None):
|
||||
StagingFile = create_staging_file_class(request, staging_folder.folder_path)
|
||||
if request.method == 'POST':
|
||||
form = StagingDocumentForm(request.POST, request.FILES,
|
||||
cls=StagingFile, document_type=document_type)
|
||||
cls=StagingFile, document_type=document_type,
|
||||
show_expand=(staging_folder.uncompress==SOURCE_UNCOMPRESS_CHOICE_ASK)
|
||||
)
|
||||
if form.is_valid():
|
||||
try:
|
||||
staging_file = StagingFile.get(form.cleaned_data['staging_file_id'])
|
||||
expand = form.cleaned_data['expand']
|
||||
if staging_folder.uncompress==SOURCE_UNCOMPRESS_CHOICE_ASK:
|
||||
expand = form.cleaned_data['expand']
|
||||
else:
|
||||
if staging_folder.uncompress==SOURCE_UNCOMPRESS_CHOICE_Y:
|
||||
expand = True
|
||||
else:
|
||||
expand = False
|
||||
if (not expand) or (expand and not _handle_zip_file(request, staging_file.upload(), document_type)):
|
||||
document = Document(file=staging_file.upload())
|
||||
if document_type:
|
||||
@@ -141,17 +159,17 @@ def upload_interactive(request, source_type=None, source_id=None):
|
||||
messages.success(request, _(u'Staging file: %s, uploaded successfully.') % staging_file.filename)
|
||||
|
||||
if staging_folder.delete_after_upload:
|
||||
staging_file.delete()
|
||||
staging_file.delete(staging_folder.get_preview_size())
|
||||
messages.success(request, _(u'Staging file: %s, deleted successfully.') % staging_file.filename)
|
||||
except Exception, e:
|
||||
messages.error(request, e)
|
||||
|
||||
#return HttpResponseRedirect(request.META['HTTP_REFERER'])
|
||||
return HttpResponseRedirect(request.get_full_path())
|
||||
|
||||
|
||||
form = StagingDocumentForm(cls=StagingFile,
|
||||
document_type=document_type)
|
||||
document_type=document_type,
|
||||
show_expand=(staging_folder.uncompress==SOURCE_UNCOMPRESS_CHOICE_ASK)
|
||||
)
|
||||
try:
|
||||
staging_filelist = StagingFile.get_all()
|
||||
except Exception, e:
|
||||
@@ -176,7 +194,6 @@ def upload_interactive(request, source_type=None, source_id=None):
|
||||
},
|
||||
]
|
||||
|
||||
|
||||
context.update({
|
||||
'document_type_id': document_type_id,
|
||||
'subtemplates_list': subtemplates_list,
|
||||
@@ -238,124 +255,6 @@ def _handle_zip_file(request, uploaded_file, document_type=None):
|
||||
return False
|
||||
|
||||
|
||||
def upload_document_with_type(request, source):
|
||||
check_permissions(request.user, [PERMISSION_DOCUMENT_CREATE])
|
||||
|
||||
document_type_id = request.GET.get('document_type_id', None)
|
||||
if document_type_id:
|
||||
document_type = get_object_or_404(DocumentType, pk=document_type_id[0])
|
||||
else:
|
||||
document_type = None
|
||||
|
||||
if request.method == 'POST':
|
||||
if source == UPLOAD_SOURCE_LOCAL:
|
||||
form = DocumentForm(request.POST, request.FILES, document_type=document_type)
|
||||
if form.is_valid():
|
||||
try:
|
||||
expand = form.cleaned_data['expand']
|
||||
if (not expand) or (expand and not _handle_zip_file(request, request.FILES['file'], document_type)):
|
||||
instance = form.save()
|
||||
instance.save()
|
||||
if document_type:
|
||||
instance.document_type = document_type
|
||||
_handle_save_document(request, instance, form)
|
||||
messages.success(request, _(u'Document uploaded successfully.'))
|
||||
except Exception, e:
|
||||
messages.error(request, e)
|
||||
|
||||
return HttpResponseRedirect(request.get_full_path())
|
||||
elif (USE_STAGING_DIRECTORY and source == UPLOAD_SOURCE_STAGING) or (PER_USER_STAGING_DIRECTORY and source == UPLOAD_SOURCE_USER_STAGING):
|
||||
StagingFile = create_staging_file_class(request, source)
|
||||
form = StagingDocumentForm(request.POST,
|
||||
request.FILES, cls=StagingFile,
|
||||
document_type=document_type)
|
||||
if form.is_valid():
|
||||
try:
|
||||
staging_file = StagingFile.get(form.cleaned_data['staging_file_id'])
|
||||
expand = form.cleaned_data['expand']
|
||||
if (not expand) or (expand and not _handle_zip_file(request, staging_file.upload(), document_type)):
|
||||
document = Document(file=staging_file.upload())
|
||||
if document_type:
|
||||
document.document_type = document_type
|
||||
document.save()
|
||||
_handle_save_document(request, document, form)
|
||||
messages.success(request, _(u'Staging file: %s, uploaded successfully.') % staging_file.filename)
|
||||
|
||||
if DELETE_STAGING_FILE_AFTER_UPLOAD:
|
||||
staging_file.delete()
|
||||
messages.success(request, _(u'Staging file: %s, deleted successfully.') % staging_file.filename)
|
||||
except Exception, e:
|
||||
messages.error(request, e)
|
||||
|
||||
return HttpResponseRedirect(request.META['HTTP_REFERER'])
|
||||
else:
|
||||
if source == UPLOAD_SOURCE_LOCAL:
|
||||
form = DocumentForm(document_type=document_type)
|
||||
elif (USE_STAGING_DIRECTORY and source == UPLOAD_SOURCE_STAGING) or (PER_USER_STAGING_DIRECTORY and source == UPLOAD_SOURCE_USER_STAGING):
|
||||
StagingFile = create_staging_file_class(request, source)
|
||||
form = StagingDocumentForm(cls=StagingFile,
|
||||
document_type=document_type)
|
||||
|
||||
subtemplates_list = []
|
||||
|
||||
if source == UPLOAD_SOURCE_LOCAL:
|
||||
subtemplates_list.append({
|
||||
'name': 'generic_form_subtemplate.html',
|
||||
'context': {
|
||||
'form': form,
|
||||
'title': _(u'upload a local document'),
|
||||
},
|
||||
})
|
||||
|
||||
elif (USE_STAGING_DIRECTORY and source == UPLOAD_SOURCE_STAGING) or (PER_USER_STAGING_DIRECTORY and source == UPLOAD_SOURCE_USER_STAGING):
|
||||
if source == UPLOAD_SOURCE_STAGING:
|
||||
form_title = _(u'upload a document from staging')
|
||||
list_title = _(u'files in staging')
|
||||
else:
|
||||
form_title = _(u'upload a document from user staging')
|
||||
list_title = _(u'files in user staging')
|
||||
try:
|
||||
staging_filelist = StagingFile.get_all()
|
||||
except Exception, e:
|
||||
messages.error(request, e)
|
||||
staging_filelist = []
|
||||
finally:
|
||||
subtemplates_list = [
|
||||
{
|
||||
'name': 'generic_form_subtemplate.html',
|
||||
'context': {
|
||||
'form': form,
|
||||
'title': form_title,
|
||||
}
|
||||
},
|
||||
{
|
||||
'name': 'generic_list_subtemplate.html',
|
||||
'context': {
|
||||
'title': list_title,
|
||||
'object_list': staging_filelist,
|
||||
'hide_link': True,
|
||||
}
|
||||
},
|
||||
]
|
||||
|
||||
context = {
|
||||
'source': source,
|
||||
'document_type_id': document_type_id,
|
||||
'subtemplates_list': subtemplates_list,
|
||||
'sidebar_subtemplates_list': [
|
||||
{
|
||||
'name': 'generic_subtemplate.html',
|
||||
'context': {
|
||||
'title': _(u'Current metadata'),
|
||||
'paragraphs': metadata_repr_as_list(decode_metadata_from_url(request.GET)),
|
||||
'side_bar': True,
|
||||
}
|
||||
}]
|
||||
}
|
||||
return render_to_response('generic_form.html', context,
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def staging_file_preview(request, source_type, source_id, staging_file_id):
|
||||
check_permissions(request.user, [PERMISSION_DOCUMENT_CREATE])
|
||||
staging_folder = get_object_or_404(StagingFolder, pk=source_id)
|
||||
|
||||
Reference in New Issue
Block a user