def check_isbn(item, errors): """ Checks ISBN for validity. Will accept both ISBN-10 and ISBN-13 formats """ isbn_list = item.get("isbn") if isbn_list is None: return for idx, single_isbn in enumerate(isbn_list): if not isbn.is_valid(single_isbn): errors.add("ISBN #{idx} isn't valid".format( idx=idx )) continue formatted = isbn.format(single_isbn) if (formatted != single_isbn): errors.add("ISBN #{idx} ({single_isbn}) should be reformatted to {formatted}".format( idx=idx, single_isbn=single_isbn, formatted=formatted )) if (isbn.isbn_type(single_isbn) != 'ISBN13'): errors.add("ISBN-10 #{idx} ({single_isbn}) should be reformatted to ISBN-13 {formatted}".format( idx=idx, single_isbn=single_isbn, formatted=isbn.to_isbn13(single_isbn) ))
def validate_isbn(item, errors): """ Checks ISBN for validity. Will accept both ISBN-10 and ISBN-13 formats """ isbn_list = item.get("isbn") if isbn_list is None: return for idx, single_isbn in enumerate(isbn_list): if not isbn.is_valid(single_isbn): errors.add("ISBN #{idx} isn't valid".format( idx=idx )) continue formatted = isbn.format(single_isbn) if (formatted != single_isbn): errors.add("ISBN #{idx} ({single_isbn}) should be reformatted to {formatted}".format( idx=idx, single_isbn=single_isbn, formatted=formatted )) if (isbn.isbn_type(single_isbn) != 'ISBN13'): errors.add("ISBN-10 #{idx} ({single_isbn}) should be reformatted to ISBN-13 {formatted}".format( idx=idx, single_isbn=single_isbn, formatted=isbn.to_isbn13(single_isbn) ))
def compute_isbn_qobj(isbn, prefix, op): if stdisbn.is_valid(isbn): isbn_compact = stdisbn.compact(isbn) q_obj = Q(**{ '%svalid_isbn' % prefix: isbn_compact}) # need to search for both ISBNs to be safe if stdisbn.isbn_type(isbn_compact) == 'ISBN13' and \ isbn_compact.startswith('978'): isbn10 = isbn_compact[3:-1] isbn10 += stdisbn._calc_isbn10_check_digit(isbn10) q_obj |= Q(**{ '%svalid_isbn' % prefix: isbn10}) elif stdisbn.isbn_type(isbn_compact) == 'ISBN10': q_obj |= Q(**{ '%svalid_isbn' % prefix: stdisbn.to_isbn13(isbn_compact)}) else: q_obj = Q(**{ '%sisbn__%s' % (prefix, op): isbn}) return q_obj
def compute_isbn_qobj(isbn, prefix, op): if stdisbn.is_valid(isbn): isbn_compact = stdisbn.compact(isbn) q_obj = Q(**{'%svalid_isbn' % prefix: isbn_compact}) # need to search for both ISBNs to be safe if stdisbn.isbn_type(isbn_compact) == 'ISBN13' and \ isbn_compact.startswith('978'): isbn10 = isbn_compact[3:-1] isbn10 += stdisbn._calc_isbn10_check_digit(isbn10) q_obj |= Q(**{'%svalid_isbn' % prefix: isbn10}) elif stdisbn.isbn_type(isbn_compact) == 'ISBN10': q_obj |= Q( **{'%svalid_isbn' % prefix: stdisbn.to_isbn13(isbn_compact)}) else: q_obj = Q(**{'%sisbn__%s' % (prefix, op): isbn}) return q_obj