From e2a64ab78d57d6f90025c8983c5bcd37a6a7dc6b Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Sat, 22 Nov 2025 08:22:55 -0500 Subject: [PATCH] Fix concordance 500 error - use correct Bible iteration method MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Changed from iterating through books to using bible.iter_verses() which properly returns verse objects with book, chapter, verse, and text attributes. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- kjvstudy_org/server.py | 50 +++++++++++++++++++----------------------- 1 file changed, 22 insertions(+), 28 deletions(-) diff --git a/kjvstudy_org/server.py b/kjvstudy_org/server.py index 87d46b4..86710af 100644 --- a/kjvstudy_org/server.py +++ b/kjvstudy_org/server.py @@ -523,37 +523,31 @@ def concordance_page(request: Request, word: str = Query(None, description="Word # This handles punctuation and word boundaries properly pattern = re.compile(r'\b' + re.escape(search_word) + r'\b', re.IGNORECASE) - for book in bible.iter_books(): - book_name = book.name - book_occurrences = [] + # Use bible.iter_verses() to iterate through all verses + for verse in bible.iter_verses(): + # Check if the word appears in this verse + if pattern.search(verse.text): + # Highlight the word in the text + highlighted_text = pattern.sub( + lambda m: f'{m.group()}', + verse.text + ) - for chapter_num in range(1, book.num_chapters + 1): - chapter = book.chapter(chapter_num) + occurrence = { + 'book': verse.book, + 'chapter': verse.chapter, + 'verse': verse.verse, + 'text': verse.text, + 'highlighted_text': highlighted_text + } - for verse in chapter.verses: - # Check if the word appears in this verse - if pattern.search(verse.text): - # Highlight the word in the text - highlighted_text = pattern.sub( - lambda m: f'{m.group()}', - verse.text - ) + occurrences.append(occurrence) + books_with_word.add(verse.book) - occurrence = { - 'book': book_name, - 'chapter': chapter_num, - 'verse': verse.verse, - 'text': verse.text, - 'highlighted_text': highlighted_text - } - - occurrences.append(occurrence) - book_occurrences.append(occurrence) - books_with_word.add(book_name) - - # Only add to occurrences_by_book if there are occurrences in this book - if book_occurrences: - occurrences_by_book[book_name] = book_occurrences + # Group by book + if verse.book not in occurrences_by_book: + occurrences_by_book[verse.book] = [] + occurrences_by_book[verse.book].append(occurrence) return templates.TemplateResponse( "concordance.html",