diff --git a/bookwyrm/tests/test_book_search.py b/bookwyrm/tests/test_book_search.py index f5c8b43f7..16435ffff 100644 --- a/bookwyrm/tests/test_book_search.py +++ b/bookwyrm/tests/test_book_search.py @@ -28,24 +28,6 @@ class BookSearch(TestCase): openlibrary_key="hello", ) - # isbn13 entry - self.third_edition = models.Edition.objects.create( - title="Python Testing", - parent_work=self.work, - isbn_13="9781680502404", - physical_format="Paperback", - published_date=datetime.datetime(2017, 9, 1, 0, 0, tzinfo=timezone.utc), - ) - - # isbn10 entry - self.fourth_edition = models.Edition.objects.create( - title="Pride and Prejudice: Jane Austen", - parent_work=self.work, - isbn_13="190962165X", - physical_format="Paperback", - published_date=datetime.datetime(2017, 9, 1, 0, 0, tzinfo=timezone.utc), - ) - def test_search(self): """search for a book in the db""" # title/author @@ -57,18 +39,6 @@ class BookSearch(TestCase): results = book_search.search("0000000000") self.assertEqual(len(results), 1) self.assertEqual(results[0], self.first_edition) - - results = book_search.search("9781680502404") - self.assertEqual(len(results), 1) - self.assertEqual(results[0], self.third_edition) - - results = book_search.search("9-781-68050-2-404") - self.assertEqual(len(results), 1) - self.assertEqual(results[0], self.third_edition) - - results = book_search.search("1-9096-2165-X") - self.assertEqual(len(results), 1) - self.assertEqual(results[0], self.fourth_edition) # identifier results = book_search.search("hello") diff --git a/bookwyrm/views/search.py b/bookwyrm/views/search.py index ba3127003..d6257cba4 100644 --- a/bookwyrm/views/search.py +++ b/bookwyrm/views/search.py @@ -25,7 +25,7 @@ class Search(View): """that search bar up top""" query = request.GET.get("q") # check if query is isbn - query = isbn_check(query) + query = isbn_check(query) min_confidence = request.GET.get("min_confidence", 0) search_type = request.GET.get("type") search_remote = ( @@ -128,26 +128,26 @@ def list_search(query, viewer, *_): def isbn_check(query): - n = query.replace('-','').replace(' ', '') - if len(n) == 13: - # Multiply every other digit by 3 - # Add these numbers and the other digits - product = (sum(int(ch) for ch in n[::2]) - + sum(int(ch) * 3 for ch in n[1::2])) - if product % 10 == 0: - return n - elif len(n) == 10: - if n[0:8].isdigit() and (n[9].isdigit() or n[9].lower() == "x"): - product = 0 - # Iterate through code_string - for i in range(9): - # for each character, multiply by a different decreasing number: 10 - x - product = product + int(n[i]) * (10 - i) - # Handle last character - if n[9].lower() == "x": - product += 10 - else: - product += int(n[9]) - if product % 11 == 0: - return n + if query: + su_num = query.replace("-", "").replace(" ", "") + if len(su_num) == 13: + # Multiply every other digit by 3 + # Add these numbers and the other digits + product = sum(int(ch) for ch in su_num[::2]) + sum(int(ch) * 3 for ch in su_num[1::2]) + if product % 10 == 0: + return su_num + elif len(su_num) == 10: + if su_num[0:8].isdigit() and (su_num[9].isdigit() or su_num[9].lower() == "x"): + product = 0 + # Iterate through code_string + for i in range(9): + # for each character, multiply by a different decreasing number: 10 - x + product = product + int(su_num[i]) * (10 - i) + # Handle last character + if su_num[9].lower() == "x": + product += 10 + else: + product += int(su_num[9]) + if product % 11 == 0: + return su_num return query