From: Jan Szejko Date: Tue, 25 Apr 2017 14:16:15 +0000 (+0200) Subject: validate value counts in metadata + fix multiple values X-Git-Url: https://git.mdrn.pl/redakcja.git/commitdiff_plain/1b9ba95da190a11d915fc910b62fdfc9d6dca356 validate value counts in metadata + fix multiple values --- diff --git a/apps/catalogue/models/document.py b/apps/catalogue/models/document.py index f190f5a0..a1a0a3ce 100755 --- a/apps/catalogue/models/document.py +++ b/apps/catalogue/models/document.py @@ -43,14 +43,16 @@ def metadata_from_text(text): if c is not None: metadata['cover_url'] = c.text for category in Category.objects.all(): - c = m.find('{http://purl.org/dc/elements/1.1/}' + category.dc_tag) - if c is not None: - if category.multiple: - if category.dc_tag not in metadata: - metadata[category.dc_tag] = [] - metadata[category.dc_tag].append(c.text) - else: - metadata[category.dc_tag] = c.text + for elem in m.findall('{http://purl.org/dc/elements/1.1/}' + category.dc_tag): + if elem.text is not None: + if category.multiple: + if category.dc_tag not in metadata: + metadata[category.dc_tag] = [] + metadata[category.dc_tag].append(elem.text) + else: + if category.dc_tag in metadata: + metadata['multiple_values'] = category.dc_tag + metadata[category.dc_tag] = elem.text return metadata diff --git a/apps/wiki/forms.py b/apps/wiki/forms.py index 3cf5d11c..df6bf85e 100644 --- a/apps/wiki/forms.py +++ b/apps/wiki/forms.py @@ -84,8 +84,12 @@ class DocumentTextSaveForm(forms.Form): raise ValidationError('Invalid cover image format, should be an image file (jpg, png, gif, svg). ' 'Change it in Metadata.') metadata = metadata_from_text(text) + if 'multiple_values' in metadata: + raise ValidationError('Category "%s" does not allow multiple values.' % metadata['multiple_values']) for category in Category.objects.all(): values = metadata.get(category.dc_tag) + if values is None: + continue if not category.multiple: values = [values] if not values: