示例#1
0
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
示例#4
0
文件: search.py 项目: jochengcd/gcd
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