From c4ad09983a812210b4e42547c83da673ca843684 Mon Sep 17 00:00:00 2001 From: Arthur de Jong Date: Tue, 20 Sep 2011 20:52:03 +0000 Subject: fix a problem with an ISBN13 with a valid check digit but with an unknown bookland prefix git-svn-id: http://arthurdejong.org/svn/python-stdnum/python-stdnum@78 9dea7c4f-944c-4273-ac1a-574ede026edc --- stdnum/isbn.py | 15 +++++++-------- tests/test_isbn.doctest | 2 ++ 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/stdnum/isbn.py b/stdnum/isbn.py index d2fbe4d..382b13d 100644 --- a/stdnum/isbn.py +++ b/stdnum/isbn.py @@ -120,19 +120,18 @@ def split(number, convert=False): # clean up number number = compact(number, convert) # get Bookland prefix if any + delprefix = False if len(number) == 10: - oprefix = '' - prefix = '978' - else: - oprefix = prefix = number[:3] - number = number[3:] + number = '978' + number + delprefix = True # split the number - result = numdb.get('isbn').split(prefix + number[:-1])[1:] - itemnr = result.pop() + result = numdb.get('isbn').split(number[:-1]) + itemnr = result.pop() if result else '' + prefix = result.pop(0) if result else '' group = result.pop(0) if result else '' publisher = result.pop(0) if result else '' # return results - return (oprefix, group, publisher, itemnr, number[-1]) + return ('' if delprefix else prefix, group, publisher, itemnr, number[-1]) def format(number, separator='-', convert=False): diff --git a/tests/test_isbn.doctest b/tests/test_isbn.doctest index 84143ec..a14a15d 100644 --- a/tests/test_isbn.doctest +++ b/tests/test_isbn.doctest @@ -59,3 +59,5 @@ Regrouping tests. ('', '99996', '', '7827', '0') >>> isbn.split('979-20-1234567-8') ('979', '', '', '201234567', '8') +>>> isbn.split('5413170121522') # valid checkdigit, unknown prefix +('', '', '', '541317012152', '2') -- cgit v1.2.3