def bible(request, version=KJV, template_name=None, template_loader=loader, extra_context=None, context_processors=None, template_object_name='bible', mimetype=None): """ Renders a list of books for a given Bible. @args:: `version`: The Bible version to be used. You can use either the actual object or a string representing the translation attribute (eg: KJV or 'KJV') """ if extra_context is None: extra_context = {} if type(version) in (str, unicode): bible = lookup_translation(version) else: bible = version # Perhaps we were sent a VerseText implementation like the KJV. bible = bible.bible # The Bible() object implementation. if not template_name: template_name = "bibletext/bible_detail.html" t = template_loader.get_template(template_name) c = RequestContext(request, { template_object_name: bible, }, context_processors) for key, value in extra_context.items(): if callable(value): c[key] = value() else: c[key] = value return HttpResponse(t.render(c), mimetype=mimetype)
def chapter(request, book_id, chapter_id, version=KJV, template_name=None, template_loader=loader, extra_context=None, context_processors=None, template_object_name='verse_list', mimetype=None): """ Renders an entire chapter based on the given book and chapter. @args:: `book_id`: (int) Pk of the Book to be used. `chapter_id`: (int) The chapter to render. `version`: The Bible version to be used. You can use either the actual object or a string representing the translation attribute (eg: KJV or 'KJV') """ if extra_context is None: extra_context = {} if not (book_id or chapter_id): raise AttributeError("Chapter detail view must be called with a book_id and a chapter.") if type(version) in (str, unicode): bible = lookup_translation(version) else: bible = version # Perhaps we were sent a VerseText implementation like the KJV. book_id = int(book_id) chapter_id = int(chapter_id) try: chapter = bible.bible[book_id][chapter_id] verse_list = bible.objects.filter(book_id=book_id, chapter_id=chapter_id) except (IndexError, bible.DoesNotExist): raise Http404("Chapter not found in the given book of %s." % bible.translation) if not template_name: template_name = "bibletext/chapter_detail.html" t = template_loader.get_template(template_name) c = RequestContext(request, { template_object_name: verse_list, 'book': chapter.book, 'chapter': chapter, 'bible': bible, }, context_processors) for key, value in extra_context.items(): if callable(value): c[key] = value() else: c[key] = value return HttpResponse(t.render(c), mimetype=mimetype)
def verse(request, book_id, chapter_id, verse_id, version=KJV, template_name=None, template_loader=loader, extra_context=None, context_processors=None, template_object_name='verse', mimetype=None): """ Renders a single verse based on the given book, chapter, and verse. @args:: `book_id`: (int) Pk of the Book to be used. `chapter`: (int) The chapter to render. `version`: The Bible version to be used. """ if extra_context is None: extra_context = {} if not (book_id or chapter_id or verse_id): raise AttributeError("Verse detail view must be called with a book_id, chapter_id, and a verse_id.") if type(version) in (str, unicode): bible = lookup_translation(version) else: bible = version # Perhaps we were sent a VerseText implementation like the KJV. verse = get_object_or_404(bible, book_id=book_id, chapter_id=chapter_id, verse_id=verse_id) if not template_name: template_name = "bibletext/verse_detail.html" t = template_loader.get_template(template_name) c = RequestContext(request, { template_object_name: verse, 'book': verse.book, 'chapter': verse.chapter, 'bible': bible, }, context_processors) for key, value in extra_context.items(): if callable(value): c[key] = value() else: c[key] = value return HttpResponse(t.render(c), mimetype=mimetype)