Fix issue #25
This commit is contained in:
@@ -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):
|
||||
"""
|
||||
|
||||
@@ -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 = {}
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user