diff --git a/mayan/apps/documents/tests.py b/mayan/apps/documents/tests.py index 7c1a85aeb5..64166177c9 100644 --- a/mayan/apps/documents/tests.py +++ b/mayan/apps/documents/tests.py @@ -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): """ diff --git a/mayan/apps/sources/models.py b/mayan/apps/sources/models.py index edd17bdcb3..439784d576 100644 --- a/mayan/apps/sources/models.py +++ b/mayan/apps/sources/models.py @@ -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 = {} diff --git a/mayan/apps/sources/views.py b/mayan/apps/sources/views.py index 10862a38a5..2944876ab4 100644 --- a/mayan/apps/sources/views.py +++ b/mayan/apps/sources/views.py @@ -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)