Fix allow editing a required metadata after changing the document type. Closes issue GL #204.

This commit is contained in:
Roberto Rosario
2015-10-15 16:40:35 -04:00
parent 572ceb50ec
commit 8744bd82ee
3 changed files with 56 additions and 3 deletions

View File

@@ -3,11 +3,15 @@ from __future__ import unicode_literals
TEST_CORRECT_LOOKUP_VALUE = '1'
TEST_DATE_PARSER = 'metadata.parsers.DateParser'
TEST_DATE_VALIDATOR = 'metadata.validators.DateValidator'
TEST_DOCUMENT_METADATA_VALUE_2 = 'test document metadata value 2'
TEST_DOCUMENT_TYPE_2 = 'test document type 2'
TEST_DEFAULT_VALUE = 'test'
TEST_INCORRECT_LOOKUP_VALUE = '0'
TEST_INVALID_DATE = '___________'
TEST_LOOKUP_TEMPLATE = '1,2,3'
TEST_METADATA_TYPE_NAME = 'test'
TEST_METADATA_TYPE_LABEL = 'test'
TEST_METADATA_TYPE_LABEL_2 = 'test metadata type label 2'
TEST_METADATA_TYPE_NAME = 'test'
TEST_METADATA_TYPE_NAME_2 = 'test metadata type name 2'
TEST_PARSED_VALID_DATE = '2001-01-01'
TEST_VALID_DATE = '2001-1-1'

View File

@@ -14,7 +14,11 @@ from documents.tests.literals import (
from ..models import MetadataType, DocumentMetadata
from .literals import TEST_METADATA_TYPE_NAME, TEST_METADATA_TYPE_LABEL
from .literals import (
TEST_DOCUMENT_TYPE_2, TEST_DOCUMENT_METADATA_VALUE_2,
TEST_METADATA_TYPE_LABEL, TEST_METADATA_TYPE_LABEL_2,
TEST_METADATA_TYPE_NAME, TEST_METADATA_TYPE_NAME_2
)
class DocumentMetadataTestCase(TestCase):
@@ -83,3 +87,48 @@ class DocumentMetadataTestCase(TestCase):
self.assertContains(response, 'Success', status_code=200)
self.assertEqual(len(self.document.metadata.all()), 0)
def test_metadata_edit_after_document_type_change(self):
# Gitlab issue #204
# Problems to add required metadata after changin the document type
document_type_2 = DocumentType.objects.create(
label=TEST_DOCUMENT_TYPE_2
)
metadata_type_2 = MetadataType.objects.create(
name=TEST_METADATA_TYPE_NAME_2, label=TEST_METADATA_TYPE_LABEL_2
)
document_metadata_2 = document_type_2.metadata.create(
metadata_type=metadata_type_2, required=True
)
self.document.set_document_type(document_type=document_type_2)
response = self.client.get(
reverse(
'metadata:metadata_edit', args=(self.document.pk,),
), follow=True
)
self.assertContains(response, 'Edit', status_code=200)
response = self.client.post(
reverse(
'metadata:metadata_edit', args=(self.document.pk,),
), data={
'form-0-id': document_metadata_2.pk,
'form-0-update': True,
'form-0-value': TEST_DOCUMENT_METADATA_VALUE_2,
'form-TOTAL_FORMS': '1',
'form-INITIAL_FORMS': '0',
'form-MAX_NUM_FORMS': '',
}, follow=True
)
self.assertContains(response, 'Metadata for document', status_code=200)
self.assertEqual(
self.document.metadata.get(metadata_type=metadata_type_2
).value, TEST_DOCUMENT_METADATA_VALUE_2)

View File

@@ -70,7 +70,7 @@ def metadata_edit(request, document_id=None, document_id_list=None):
)
)
if set(documents.values_list('metadata__value', flat=True)) == set([None]):
if set(documents.values_list('metadata__metadata_type', flat=True)) == set([None]):
message = ungettext(
'The selected document doesn\'t have any metadata.',
'The selected documents don\'t have any metadata.',