This commit is contained in:
Roberto Rosario
2014-08-26 00:27:09 -04:00
parent 77fdefcdf5
commit bb2885f52e
3 changed files with 51 additions and 7 deletions

View File

@@ -21,6 +21,7 @@ TEST_ADMIN_USERNAME = 'test_admin'
TEST_ADMIN_EMAIL = 'admin@admin.com'
TEST_DOCUMENT_PATH = os.path.join(settings.BASE_DIR, 'contrib', 'sample_documents', 'mayan_11_1.pdf')
TEST_SIGNED_DOCUMENT_PATH = os.path.join(settings.BASE_DIR, 'contrib', 'sample_documents', 'mayan_11_1.pdf.gpg')
TEST_DOCUMENT_DESCRIPTION = 'test description'
class DocumentTestCase(TestCase):
@@ -175,6 +176,39 @@ class DocumentUploadFunctionalTestCase(TestCase):
response = self.client.post(reverse('document_delete', args=[self.document.pk]))
self.assertEqual(Document.objects.count(), 0)
def test_issue_25(self):
from sources.models import WebForm
from sources.literals import SOURCE_CHOICE_WEB_FORM
# Login the admin user
logged_in = self.client.login(username=TEST_ADMIN_USERNAME, password=TEST_ADMIN_PASSWORD)
self.assertTrue(logged_in)
self.assertTrue(self.admin_user.is_authenticated())
# Create new webform source
response = self.client.post(reverse('setup_source_create', args=[SOURCE_CHOICE_WEB_FORM]), {'title': 'test', 'uncompress': 'n', 'enabled': True})
self.assertEqual(WebForm.objects.count(), 1)
# Upload the test document
with open(TEST_DOCUMENT_PATH) as file_descriptor:
response = self.client.post(reverse('upload_interactive'), {'file': file_descriptor, 'description': TEST_DOCUMENT_DESCRIPTION})
self.assertEqual(Document.objects.count(), 1)
document = Document.objects.all().first()
# Test for issue 25 during creation
self.failUnlessEqual(document.description, TEST_DOCUMENT_DESCRIPTION)
# Reset description
document.description = ''
document.save()
self.failUnlessEqual(document.description, '')
# Test for issue 25 during editing
response = self.client.post(reverse('document_edit', args=[document.pk]), {'description': TEST_DOCUMENT_DESCRIPTION})
# Fetch document again and test description
document = Document.objects.all().first()
self.failUnlessEqual(document.description, TEST_DOCUMENT_DESCRIPTION)
class DocumentAPICreateDocumentTestCase(TestCase):
"""

View File

@@ -58,7 +58,7 @@ class BaseModel(models.Model):
def get_transformation_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, command_line=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, command_line=False, description=None):
is_compressed = None
if expand:
@@ -68,7 +68,7 @@ class BaseModel(models.Model):
for fp in cf.children():
if command_line:
print 'Uploading file #%d: %s' % (count, fp)
self.upload_single_file(file_object=fp, filename=None, document_type=document_type, metadata_dict_list=metadata_dict_list, user=user)
self.upload_single_file(file_object=fp, filename=None, document_type=document_type, metadata_dict_list=metadata_dict_list, user=user, description=description)
fp.close()
count += 1
@@ -77,23 +77,27 @@ class BaseModel(models.Model):
logging.debug('Exception: NotACompressedFile')
if command_line:
raise
self.upload_single_file(file_object=file_object, filename=filename, document_type=document_type, metadata_dict_list=metadata_dict_list, user=user)
self.upload_single_file(file_object=file_object, filename=filename, document_type=document_type, metadata_dict_list=metadata_dict_list, user=user, description=description)
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)
self.upload_single_file(file_object, filename, use_file_name, document_type, metadata_dict_list, user, document, new_version_data, description=description)
file_object.close()
return {'is_compressed': is_compressed}
@transaction.atomic
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, description=None):
new_document = not document
if not document:
document = Document()
if document_type:
document.document_type = document_type
if description:
document.description = description
document.save()
apply_default_acls(document, user)
@@ -109,6 +113,10 @@ class BaseModel(models.Model):
else:
filename = filename if filename else document.latest_version.filename
if description:
document.description = description
document.save()
if not new_version_data:
new_version_data = {}

View File

@@ -171,7 +171,8 @@ def upload_interactive(request, source_type=None, source_id=None, document_pk=No
metadata_dict_list=decode_metadata_from_url(request.GET),
user=request.user,
document=document,
new_version_data=form.cleaned_data.get('new_version_data')
new_version_data=form.cleaned_data.get('new_version_data'),
description=form.cleaned_data.get('description')
)
if document:
messages.success(request, _(u'New document version uploaded successfully.'))
@@ -247,7 +248,8 @@ def upload_interactive(request, source_type=None, source_id=None, document_pk=No
metadata_dict_list=decode_metadata_from_url(request.GET),
user=request.user,
document=document,
new_version_data=form.cleaned_data.get('new_version_data')
new_version_data=form.cleaned_data.get('new_version_data'),
description=form.cleaned_data.get('description')
)
if document:
messages.success(request, _(u'Document version from staging file: %s, uploaded successfully.') % staging_file.filename)