Versescontent
versescontent
¶
VERSESCONTENT
¶
Source code in modules/versescontent.py
class VERSESCONTENT:
def __init__(
self,
vr,
mr,
verseIds=None,
chapter=None,
tp=None,
tr=None,
lang="en",
):
"""my docs"""
if tr is None:
tr = "hb"
self.version = vr
self.mr = mr
self.tp = tp
self.tr = tr
self.lang = lang
self.chapter = chapter
self.verseIds = verseIds
self.process()
def process(self):
vr = self.version
mr = self.mr
tp = self.tp
tr = self.tr
lang = self.lang
chapter = self.chapter
verseIds = self.verseIds
PASSAGE_DBS = current.PASSAGE_DBS
passageDb = PASSAGE_DBS.get(vr, None)
if passageDb is None:
return
self.verses = []
if self.mr == "r" and (verseIds is None or len(verseIds) == 0):
return
verseIdsStr = (
",".join((str(verse_id) for verse_id in verseIds))
if verseIds is not None
else None
)
verseIdField = "verse.id"
wordVerseField = "word_verse.verse_id"
conditionPre = (
dedent(
f"""
where {{}} in ({verseIdsStr})
"""
)
if verseIds is not None
else dedent(
f"""
where chapter_id = {chapter}
"""
)
if chapter is not None
else ""
)
condition = conditionPre.format(verseIdField)
wcondition = conditionPre.format(wordVerseField)
verseInfo = (
passageDb.executesql(
dedent(
f"""
select
verse.id,
book.name,
chapter.chapter_num,
verse.verse_num
{", verse.xml" if tp == "txtp" else ""}
from verse
inner join chapter on verse.chapter_id=chapter.id
inner join book on chapter.book_id=book.id
{condition}
order by verse.id
;
"""
)
)
if passageDb
else []
)
wordRecords = []
wordRecords = (
passageDb.executesql(
dedent(
f"""
select {",".join(FIELDNAMES[tp])}, verse_id, lexicon_id from word
inner join word_verse on word_number = word_verse.anchor
inner join verse on verse.id = word_verse.verse_id
{wcondition}
order by word_number
;
"""
),
as_dict=True,
)
if passageDb
else []
)
wordData = collections.defaultdict(lambda: [])
for record in wordRecords:
wordData[record["verse_id"]].append(
dict(
(
x,
hEsc(str(y), not (x.endswith("_border") or x in NOTFILLFIELDS)),
)
for (x, y) in record.items()
)
)
for verse in verseInfo:
verse_id = int(verse[0])
xml = verse[4] if tp == "txtp" else ""
self.verses.append(
VERSECONTENT(
vr,
verse[1],
verse[2],
verse[3],
xml=xml,
wordData=wordData[verse_id],
tp=tp,
tr=tr,
mr=mr,
lang=lang,
)
)
__init__(self, vr, mr, verseIds=None, chapter=None, tp=None, tr=None, lang='en')
special
¶
my docs
Source code in modules/versescontent.py
def __init__(
self,
vr,
mr,
verseIds=None,
chapter=None,
tp=None,
tr=None,
lang="en",
):
"""my docs"""
if tr is None:
tr = "hb"
self.version = vr
self.mr = mr
self.tp = tp
self.tr = tr
self.lang = lang
self.chapter = chapter
self.verseIds = verseIds
self.process()
process(self)
¶
Source code in modules/versescontent.py
def process(self):
vr = self.version
mr = self.mr
tp = self.tp
tr = self.tr
lang = self.lang
chapter = self.chapter
verseIds = self.verseIds
PASSAGE_DBS = current.PASSAGE_DBS
passageDb = PASSAGE_DBS.get(vr, None)
if passageDb is None:
return
self.verses = []
if self.mr == "r" and (verseIds is None or len(verseIds) == 0):
return
verseIdsStr = (
",".join((str(verse_id) for verse_id in verseIds))
if verseIds is not None
else None
)
verseIdField = "verse.id"
wordVerseField = "word_verse.verse_id"
conditionPre = (
dedent(
f"""
where {{}} in ({verseIdsStr})
"""
)
if verseIds is not None
else dedent(
f"""
where chapter_id = {chapter}
"""
)
if chapter is not None
else ""
)
condition = conditionPre.format(verseIdField)
wcondition = conditionPre.format(wordVerseField)
verseInfo = (
passageDb.executesql(
dedent(
f"""
select
verse.id,
book.name,
chapter.chapter_num,
verse.verse_num
{", verse.xml" if tp == "txtp" else ""}
from verse
inner join chapter on verse.chapter_id=chapter.id
inner join book on chapter.book_id=book.id
{condition}
order by verse.id
;
"""
)
)
if passageDb
else []
)
wordRecords = []
wordRecords = (
passageDb.executesql(
dedent(
f"""
select {",".join(FIELDNAMES[tp])}, verse_id, lexicon_id from word
inner join word_verse on word_number = word_verse.anchor
inner join verse on verse.id = word_verse.verse_id
{wcondition}
order by word_number
;
"""
),
as_dict=True,
)
if passageDb
else []
)
wordData = collections.defaultdict(lambda: [])
for record in wordRecords:
wordData[record["verse_id"]].append(
dict(
(
x,
hEsc(str(y), not (x.endswith("_border") or x in NOTFILLFIELDS)),
)
for (x, y) in record.items()
)
)
for verse in verseInfo:
verse_id = int(verse[0])
xml = verse[4] if tp == "txtp" else ""
self.verses.append(
VERSECONTENT(
vr,
verse[1],
verse[2],
verse[3],
xml=xml,
wordData=wordData[verse_id],
tp=tp,
tr=tr,
mr=mr,
lang=lang,
)
)