Beispiel #1
0
def seed_bible_books():
    BibleBook = get_bible_book_model()
    count = 0
    for book_name in BIBLE_BOOKS:
        testament = BibleTestament.OT if count < 39 else BibleTestament.NT
        book = BibleBook.objects.create(name=book_name,
                                        testament=testament.value)
        count += 1
Beispiel #2
0
def seed_bible_chapters():
    BibleBook = get_bible_book_model()
    BibleChapter = get_bible_chapter_model()

    for book_data in BIBLE_BOOKS_DATA:
        book = BibleBook.objects.get(name=book_data['name'])
        for i in range(book_data['chapters']):
            chapter = BibleChapter.objects.create(book=book, chapter=i + 1)
Beispiel #3
0
    def from_reference(cls, reference):
        pattern = r'^(?P<book_name>.+) (?P<chapter_start>\d+)(?P<verse_start_separator>:?)(?P<verse_start>\d+)(?P<separator>-?)(?P<chapter_end>\d*)(?P<verse_end_separator>:?)(?P<verse_end>\d*)$'

        match = re.match(pattern, reference)
        if match:
            book_name = match.group('book_name')
            chapter_start = match.group('chapter_start')
            verse_start_separator = match.group('verse_start_separator')
            verse_start = match.group('verse_start')
            verse_start = int(verse_start) if verse_start else None
            separator = match.group('separator')
            chapter_end = match.group('chapter_end')
            chapter_end = int(chapter_end) if chapter_end else None
            verse_end_separator = match.group('verse_end_separator')
            verse_end = match.group('verse_end')
            verse_end = int(verse_end) if verse_end else None

            if verse_end is None:
                # verse_end is missing
                # determine if another part was captured as verse_end

                if chapter_end:
                    if verse_start:
                        # chapter_end is actually verse_end for same passage that starts and ends in the same chapter
                        verse_end = chapter_end
                        chapter_end = chapter_start
                    else:
                        # reference is an entire Bible chapter
                        pass
                else:
                    # there is no chapter_end either, do nothing
                    pass
            else:
                # there is a verse_end, do nothing
                pass

            BibleBook = get_bible_book_model()
            BibleChapter = get_bible_chapter_model()

            book = BibleBook.from_reference(book_name)
            chapter_start_obj = BibleChapter.objects.get(
                book=book,
                chapter=chapter_start
            )
            if chapter_end:
                chapter_end_obj = BibleChapter.objects.get(
                    book=book,
                    chapter=chapter_end
                )
            elif verse_end:
                chapter_end_obj = chapter_start_obj
            else:
                chapter_end_obj = None

            bible_passage, was_created = cls.objects.get_or_create(
                book=book,
                chapter_start=chapter_start_obj,
                verse_start=verse_start,
                chapter_end=chapter_end_obj,
                verse_end=verse_end
            )

        else:
            bible_passage = None

        return bible_passage
Beispiel #4
0
    def from_reference(cls, reference, persist=False):
        pattern = r'^(?P<book_name>.+) (?P<chapter_start>\d+)(?P<verse_start_separator>:?)(?P<verse_start>\d*)(?P<separator>-?)(?P<chapter_end>\d*)(?P<verse_end_separator>:?)(?P<verse_end>\d*)$'

        match = re.match(pattern, reference)
        if match:
            book_name = match.group('book_name')
            chapter_start = match.group('chapter_start')
            verse_start_separator = match.group('verse_start_separator')
            verse_start = match.group('verse_start')
            verse_start = int(verse_start) if verse_start else None
            separator = match.group('separator')
            chapter_end = match.group('chapter_end')
            chapter_end = int(chapter_end) if chapter_end else None
            verse_end_separator = match.group('verse_end_separator')
            verse_end = match.group('verse_end')
            verse_end = int(verse_end) if verse_end else None

            if verse_end is None:
                # verse_end is missing
                # determine if another part was captured as verse_end

                if chapter_end:
                    if verse_start:
                        # chapter_end is actually verse_end for same passage that starts and ends in the same chapter
                        verse_end = chapter_end
                        chapter_end = chapter_start
                    else:
                        # reference is an entire Bible chapter
                        pass
                else:
                    # there is no chapter_end either, do nothing
                    pass
            else:
                # there is a verse_end, do nothing
                pass

            BibleBook = get_bible_book_model()
            BibleChapter = get_bible_chapter_model()

            book = BibleBook.from_reference(book_name)
            chapter_start_obj = BibleChapter.objects.get(book=book,
                                                         chapter=chapter_start)
            if chapter_end:
                chapter_end_obj = BibleChapter.objects.get(book=book,
                                                           chapter=chapter_end)
            elif verse_end:
                chapter_end_obj = chapter_start_obj
            else:
                chapter_end_obj = None

            if persist:
                bible_passage, was_created = cls.objects.get_or_create(
                    book=book,
                    chapter_start=chapter_start_obj,
                    verse_start=verse_start,
                    chapter_end=chapter_end_obj,
                    verse_end=verse_end)
            else:
                bible_passage = cls(book=book,
                                    chapter_start=chapter_start_obj,
                                    verse_start=verse_start,
                                    chapter_end=chapter_end_obj,
                                    verse_end=verse_end)
        else:
            bible_passage = None

        return bible_passage