Books
books
¶
BOOKS
¶
All information about the names of bible books.
The order of the books and the names of the books in all supported languages.
This information is meant to be permanently cached.
Source code in modules/books.py
class BOOKS:
"""All information about the names of bible books.
The order of the books and the names of the books
in all supported languages.
This information is meant to be permanently cached.
"""
def __init__(self):
pass
def getNames(self):
"""Send information about bible booknames.
The info consists of the latin booknames,
the languages in which we have translations for them,
and a translation table for all book names.
The info is wrapped in global Javascript variables,
so that the whole client app can use the info.
"""
jsinit = dedent(
f"""
var bookLatin = {json.dumps(BOOK_NAMES["Hebrew"]["la"])};
var bookTrans = {json.dumps(BOOK_TRANS)};
var bookLangs = {json.dumps(BOOK_LANGS["Hebrew"])};
"""
)
return dict(jsinit=jsinit)
def get(self, vr):
Caching = current.Caching
return Caching.get(f"books_{vr}_", lambda: self.get_c(vr), ALWAYS)
def get_c(self, vr):
"""get book information: number of chapters per book
"""
PASSAGE_DBS = current.PASSAGE_DBS
if vr in PASSAGE_DBS:
booksData = PASSAGE_DBS[vr].executesql(
dedent(
"""
select book.id, book.name, max(chapter_num)
from chapter inner join book
on chapter.book_id = book.id group by name order by book.id
;
"""
)
)
booksOrder = [x[1] for x in booksData]
books = dict((x[1], x[2]) for x in booksData)
bookIds = dict((x[1], x[0]) for x in booksData)
bookName = dict((x[0], x[1]) for x in booksData)
result = (books, booksOrder, bookIds, bookName)
else:
result = ({}, [], {}, {})
return result
__init__(self)
special
¶
Source code in modules/books.py
def __init__(self):
pass
getNames(self)
¶
Send information about bible booknames.
The info consists of the latin booknames, the languages in which we have translations for them, and a translation table for all book names.
The info is wrapped in global Javascript variables, so that the whole client app can use the info.
Source code in modules/books.py
def getNames(self):
"""Send information about bible booknames.
The info consists of the latin booknames,
the languages in which we have translations for them,
and a translation table for all book names.
The info is wrapped in global Javascript variables,
so that the whole client app can use the info.
"""
jsinit = dedent(
f"""
var bookLatin = {json.dumps(BOOK_NAMES["Hebrew"]["la"])};
var bookTrans = {json.dumps(BOOK_TRANS)};
var bookLangs = {json.dumps(BOOK_LANGS["Hebrew"])};
"""
)
return dict(jsinit=jsinit)
get(self, vr)
¶
Source code in modules/books.py
def get(self, vr):
Caching = current.Caching
return Caching.get(f"books_{vr}_", lambda: self.get_c(vr), ALWAYS)
get_c(self, vr)
¶
get book information: number of chapters per book
Source code in modules/books.py
def get_c(self, vr):
"""get book information: number of chapters per book
"""
PASSAGE_DBS = current.PASSAGE_DBS
if vr in PASSAGE_DBS:
booksData = PASSAGE_DBS[vr].executesql(
dedent(
"""
select book.id, book.name, max(chapter_num)
from chapter inner join book
on chapter.book_id = book.id group by name order by book.id
;
"""
)
)
booksOrder = [x[1] for x in booksData]
books = dict((x[1], x[2]) for x in booksData)
bookIds = dict((x[1], x[0]) for x in booksData)
bookName = dict((x[0], x[1]) for x in booksData)
result = (books, booksOrder, bookIds, bookName)
else:
result = ({}, [], {}, {})
return result