Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1"""field validators for publications
2"""
4import logging
6from django.core.exceptions import ValidationError
7from django.utils.translation import gettext_lazy as _
9from . import isbn
12logger = logging.getLogger(__name__)
15def validate_isbn(value):
16 """validate an ISBN's field value
18 :param value: ISBN's field value
19 :type value: map
21 :raises ValidationError: invalid ISBN
22 """
23 if not isbn.is_valid_isbn(value):
24 raise ValidationError(
25 _("%(value)s is not a valid ISBN"),
26 params={"value": value},
27 )
30def validate_doi(value):
31 """validate a DOI's field value
33 :param value: DOI's field value
34 :type value: map
36 :raises ValidationError: invalid DOI
37 """
38 # find() returns -1 if not found
39 if value.find("doi") != -1:
40 raise ValidationError(_("Remove URL parts (e.g. http://doi.org/) from DOI."))
41 if not value.startswith("10."):
42 raise ValidationError(
43 _("%(value)s is not a valid DOI"),
44 params={"value": value},
45 )