forked from openlp/openlp
New Plugins for BibleManager
bzr-revno: 39
This commit is contained in:
parent
1529747324
commit
028f2490ec
169
openlp/database/BibleDBImpl.py
Normal file
169
openlp/database/BibleDBImpl.py
Normal file
@ -0,0 +1,169 @@
|
||||
"""
|
||||
OpenLP - Open Source Lyrics Projection
|
||||
Copyright (c) 2008 Raoul Snyman
|
||||
Portions copyright (c) 2008 Martin Thompson, Tim Bentley
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free Software
|
||||
Foundation; version 2 of the License.
|
||||
|
||||
This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along with
|
||||
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
|
||||
Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
"""
|
||||
import os, os.path
|
||||
import sys
|
||||
import time
|
||||
import datetime
|
||||
import logging
|
||||
import string
|
||||
|
||||
from sqlalchemy import *
|
||||
from sqlalchemy.sql import select
|
||||
from sqlalchemy.ext.declarative import declarative_base
|
||||
from sqlalchemy.orm import sessionmaker
|
||||
|
||||
mypath=os.path.split(os.path.abspath(__file__))[0]
|
||||
sys.path.insert(0,(os.path.join(mypath, '..', '..')))
|
||||
|
||||
from openlp.utils import ConfigHelper
|
||||
|
||||
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(levelname)s %(message)s')
|
||||
|
||||
Base = declarative_base()
|
||||
#Define the tables and indexes
|
||||
class BibleMeta(Base):
|
||||
__tablename__ = "meta"
|
||||
key = Column(String(255), primary_key=True)
|
||||
value = Column(String(255))
|
||||
def __init__(self, key, value):
|
||||
self.key = key
|
||||
self.value =value
|
||||
|
||||
def __repr__(self):
|
||||
return "<biblemeta('%s','%s')>" %(self.key, self.value)
|
||||
|
||||
class Testament(Base):
|
||||
__tablename__ = "testament"
|
||||
id = Column(Integer, primary_key=True)
|
||||
name = Column(String(30))
|
||||
def __init__(self, name):
|
||||
self.name = name
|
||||
|
||||
def __repr__(self):
|
||||
return "<testament('%s')>" %(self.name)
|
||||
|
||||
class Books(Base):
|
||||
__tablename__ = "books"
|
||||
id = Column(Integer, primary_key=True)
|
||||
testament_id = Column(Integer)
|
||||
name = Column(String(30))
|
||||
abbrev = Column(String(30))
|
||||
def __init__(self, testament_id, name, abbrev):
|
||||
self.testament_id = testament_id
|
||||
self.name = name
|
||||
self.abbrev = abbrev
|
||||
|
||||
def __repr__(self):
|
||||
return "<books('%s','%s','%s')>" %(self.testament_id, self.name, self.abbrev)
|
||||
|
||||
class Verses(Base):
|
||||
__tablename__ = "verses"
|
||||
id = Column(Integer, primary_key=True)
|
||||
book_id = Column(Integer)
|
||||
chapter = Column(Integer)
|
||||
verse = Column(Integer)
|
||||
text = Column(Text)
|
||||
|
||||
def __init__(self, book_id, chapter, verse, text):
|
||||
self.book_id = book_id
|
||||
self.chapter = chapter
|
||||
self.verse = verse
|
||||
self.text = text
|
||||
|
||||
def __repr__(self):
|
||||
return "<verses('%s','%s','%s','%s')>" %(self.book_id, self.chapter, self.verse, self.text)
|
||||
|
||||
|
||||
class BibleDBImpl:
|
||||
def __init__(self, biblename):
|
||||
# Connect to database
|
||||
path = ConfigHelper.getBiblePath()
|
||||
#print path
|
||||
#print biblename
|
||||
self.biblefile = os.path.join(path, biblename+".bible")
|
||||
#print self.biblefile
|
||||
self.db = create_engine("sqlite:///"+self.biblefile)
|
||||
self.db.echo = False
|
||||
self.metadata = MetaData()
|
||||
self.metadata = Base.metadata
|
||||
self.metadata.bind = self.db
|
||||
self.metadata.bind.echo = False
|
||||
|
||||
def createTables(self):
|
||||
if os.path.exists(self.biblefile): # delete bible file and set it up again
|
||||
os.remove(self.biblefile)
|
||||
self.metadata.create_all(self.db)
|
||||
self.Session = sessionmaker()
|
||||
self.Session.configure(bind=self.db)
|
||||
|
||||
def loadData(self, booksfile, versesfile):
|
||||
session = self.Session()
|
||||
bmeta= BibleMeta("dbversion", "0.1")
|
||||
session.add(bmeta)
|
||||
bmeta= BibleMeta("version", "Bible Version")
|
||||
session.add(bmeta)
|
||||
bmeta= BibleMeta("Copyright", "(c) Some Bible company")
|
||||
session.add(bmeta)
|
||||
bmeta= BibleMeta("Permission", "You Have Some")
|
||||
session.add(bmeta)
|
||||
|
||||
|
||||
#Populate the Tables
|
||||
testmeta = Testament(name="Old Testament")
|
||||
session.add(testmeta)
|
||||
testmeta = Testament(name="New Testament")
|
||||
session.add(testmeta)
|
||||
session.commit()
|
||||
|
||||
fbooks=open(booksfile, 'r')
|
||||
fverse=open(versesfile, 'r')
|
||||
|
||||
for line in fbooks:
|
||||
print line
|
||||
p = line.split(",")
|
||||
bookmeta = Books(int(p[1]), p[2], p[3])
|
||||
session.add(bookmeta)
|
||||
session.commit()
|
||||
|
||||
# for row in session.query(Books).all():
|
||||
# print row
|
||||
|
||||
book_ptr = ""
|
||||
|
||||
for line in fverse:
|
||||
print line
|
||||
p = line.split(",", 3) # split into 3 units and leave the rest as a single field
|
||||
if book_ptr is not p[0]:
|
||||
query = session.query(Books).filter(Books.name==p[0])
|
||||
print query.first().id
|
||||
book_ptr = p[0]
|
||||
print p[3]
|
||||
versemeta = Verses(book_id=query.first().id, chapter=int(p[1]), verse=int(p[2]), text=p[3])
|
||||
session.add(versemeta)
|
||||
session.commit()
|
||||
|
||||
|
||||
def Run_Tests(self):
|
||||
print "test print"
|
||||
session = self.Session()
|
||||
print session.query(Books).filter(Books.name=='"John"').all()
|
||||
print session.query(Verses).filter(Verses.book_id==9).all()
|
||||
#print b
|
||||
#v = self.db.execute(verses.select(verses.c.chapter==1 and verses.c.verse==1 and verses.c.book_id == b[0])).fetchone()
|
||||
#print v
|
||||
|
34
openlp/database/BibleHTTPImpl.py
Normal file
34
openlp/database/BibleHTTPImpl.py
Normal file
@ -0,0 +1,34 @@
|
||||
"""
|
||||
OpenLP - Open Source Lyrics Projection
|
||||
Copyright (c) 2008 Raoul Snyman
|
||||
Portions copyright (c) 2008 Martin Thompson, Tim Bentley
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free Software
|
||||
Foundation; version 2 of the License.
|
||||
|
||||
This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along with
|
||||
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
|
||||
Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
"""
|
||||
|
||||
import os, os.path
|
||||
import sys
|
||||
mypath=os.path.split(os.path.abspath(__file__))[0]
|
||||
sys.path.insert(0,(os.path.join(mypath, '..', '..')))
|
||||
|
||||
from openlp.utils import ConfigHelper
|
||||
|
||||
class BibleHTTPImpl:
|
||||
def __init__(self):
|
||||
"""
|
||||
Finds all the bibles defined for the system
|
||||
Creates an Interface Object for each bible containing connection information
|
||||
Throws Exception if no Bibles are found.
|
||||
|
||||
Init confirms the bible exists and stores the database path.
|
||||
"""
|
Loading…
Reference in New Issue
Block a user