Hide keyboard shortcuts

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""" 

3 

4import logging 

5 

6from django.core.exceptions import ValidationError 

7from django.utils.translation import gettext_lazy as _ 

8 

9from . import isbn 

10 

11 

12logger = logging.getLogger(__name__) 

13 

14 

15def validate_isbn(value): 

16 """validate an ISBN's field value 

17 

18 :param value: ISBN's field value 

19 :type value: map 

20 

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 ) 

28 

29 

30def validate_doi(value): 

31 """validate a DOI's field value 

32 

33 :param value: DOI's field value 

34 :type value: map 

35 

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 )