forked from openlp/openlp
More updates
bzr-revno: 263
This commit is contained in:
parent
03b5ae79ef
commit
0385a13773
@ -0,0 +1,17 @@
|
|||||||
|
"""
|
||||||
|
OpenLP - Open Source Lyrics Projection
|
||||||
|
Copyright (c) 2008 Raoul Snyman
|
||||||
|
Portions copyright (c) 2008 Martin Thompson, Tim Bentley, Carsten Tinggaard
|
||||||
|
|
||||||
|
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
|
||||||
|
"""
|
@ -1,9 +1,21 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
|
||||||
Module implementing AuthorsForm.
|
|
||||||
"""
|
"""
|
||||||
|
OpenLP - Open Source Lyrics Projection
|
||||||
|
Copyright (c) 2008 Raoul Snyman
|
||||||
|
Portions copyright (c) 2008 Martin Thompson, Tim Bentley, Carsten Tinggaard
|
||||||
|
|
||||||
|
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
|
||||||
|
"""
|
||||||
from openlp.core.resources import *
|
from openlp.core.resources import *
|
||||||
|
|
||||||
from PyQt4 import QtGui, QtCore
|
from PyQt4 import QtGui, QtCore
|
||||||
@ -26,6 +38,7 @@ class AuthorsForm(QDialog, Ui_AuthorsDialog):
|
|||||||
self.AuthorListView.setColumnHidden(0, True)
|
self.AuthorListView.setColumnHidden(0, True)
|
||||||
self.AuthorListView.setColumnWidth(1, 300)
|
self.AuthorListView.setColumnWidth(1, 300)
|
||||||
self.AuthorListView.setHorizontalHeaderLabels(QtCore.QStringList([" ","Author"]))
|
self.AuthorListView.setHorizontalHeaderLabels(QtCore.QStringList([" ","Author"]))
|
||||||
|
self.authorid = 0 # this is the selected authorid for updates and deletes
|
||||||
|
|
||||||
self.songmanager = songmanager
|
self.songmanager = songmanager
|
||||||
|
|
||||||
@ -90,4 +103,13 @@ class AuthorsForm(QDialog, Ui_AuthorsDialog):
|
|||||||
"""
|
"""
|
||||||
Slot documentation goes here.
|
Slot documentation goes here.
|
||||||
"""
|
"""
|
||||||
print "alv ic " + str(item)
|
cr = self.AuthorListView.currentRow()
|
||||||
|
id = int(self.AuthorListView.item(cr, 0).text())
|
||||||
|
author = self.songmanager.get_author(id)
|
||||||
|
print author
|
||||||
|
self.authorid = author[0]
|
||||||
|
self.DisplayEdit.setText(author[1])
|
||||||
|
self.FirstNameEdit.setText(author[2])
|
||||||
|
self.LastNameEdit.setText(author[3])
|
||||||
|
|
||||||
|
|
||||||
|
@ -53,21 +53,9 @@ class EditSongForm(QWidget, Ui_EditSongDialog):
|
|||||||
def load_song(self, songid):
|
def load_song(self, songid):
|
||||||
self.songid = songid
|
self.songid = songid
|
||||||
song = self.songmanager.get_song(songid)
|
song = self.songmanager.get_song(songid)
|
||||||
print song
|
|
||||||
#print song[2].encode('hex')
|
|
||||||
#print song
|
|
||||||
lyrics = song[2]
|
|
||||||
if lyrics.find("\x0a0d0a0d"):
|
|
||||||
print "new line"
|
|
||||||
lyrics = lyrics.replace("\x0a0d0a0d","\x23200a0d")
|
|
||||||
if lyrics.find("\xa0"):
|
|
||||||
print "Alt"
|
|
||||||
lyrics = lyrics.replace("\xa0","\x20")
|
|
||||||
|
|
||||||
print lyrics
|
|
||||||
|
|
||||||
self.TitleEditItem.setText(song[1])
|
self.TitleEditItem.setText(song[1])
|
||||||
self.LyricsTextEdit.setText(lyrics)
|
self.LyricsTextEdit.setText(song[2])
|
||||||
self.CopyrightEditItem.setText(song[3])
|
self.CopyrightEditItem.setText(song[3])
|
||||||
|
|
||||||
@pyqtSignature("")
|
@pyqtSignature("")
|
||||||
|
@ -1,7 +1,20 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Module implementing SongBookForm.
|
OpenLP - Open Source Lyrics Projection
|
||||||
|
Copyright (c) 2008 Raoul Snyman
|
||||||
|
Portions copyright (c) 2008 Martin Thompson, Tim Bentley, Carsten Tinggaard
|
||||||
|
|
||||||
|
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
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from openlp.core.resources import *
|
from openlp.core.resources import *
|
||||||
|
@ -1,9 +1,21 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
|
||||||
Module implementing TopicsForm.
|
|
||||||
"""
|
"""
|
||||||
|
OpenLP - Open Source Lyrics Projection
|
||||||
|
Copyright (c) 2008 Raoul Snyman
|
||||||
|
Portions copyright (c) 2008 Martin Thompson, Tim Bentley, Carsten Tinggaard
|
||||||
|
|
||||||
|
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
|
||||||
|
"""
|
||||||
from openlp.core.resources import *
|
from openlp.core.resources import *
|
||||||
|
|
||||||
from PyQt4 import QtGui, QtCore
|
from PyQt4 import QtGui, QtCore
|
||||||
|
@ -22,10 +22,9 @@ import datetime
|
|||||||
import logging
|
import logging
|
||||||
import string
|
import string
|
||||||
|
|
||||||
#from sqlalchemy import *
|
from sqlalchemy import *
|
||||||
#from sqlalchemy.sql import select
|
from sqlalchemy.sql import select
|
||||||
#from sqlalchemy.orm import sessionmaker, mapper
|
from sqlalchemy.orm import sessionmaker, mapper
|
||||||
import sqlite3
|
|
||||||
|
|
||||||
from openlp.plugins.bibles.lib.biblecommon import BibleCommon
|
from openlp.plugins.bibles.lib.biblecommon import BibleCommon
|
||||||
from openlp.core.utils import ConfigHelper
|
from openlp.core.utils import ConfigHelper
|
||||||
@ -37,7 +36,7 @@ class BibleDBException(Exception):
|
|||||||
class BibleInvalidDatabaseError(Exception):
|
class BibleInvalidDatabaseError(Exception):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
#metadata = MetaData()
|
metadata = MetaData()
|
||||||
#authors = Table('authors', metadata, autoload=True)
|
#authors = Table('authors', metadata, autoload=True)
|
||||||
|
|
||||||
class SongDBImpl(BibleCommon):
|
class SongDBImpl(BibleCommon):
|
||||||
@ -49,27 +48,22 @@ class SongDBImpl(BibleCommon):
|
|||||||
self.songfile = os.path.join(songpath, "songs."+suffix)
|
self.songfile = os.path.join(songpath, "songs."+suffix)
|
||||||
log.debug( "Load Song on path %s", self.songfile)
|
log.debug( "Load Song on path %s", self.songfile)
|
||||||
|
|
||||||
#c = conn.cursor()
|
|
||||||
if btype == 'sqlite':
|
if btype == 'sqlite':
|
||||||
self.db = sqlite3.connect(self.songfile)
|
self.db = create_engine("sqlite:///"+self.songfile, convert_unicode=True)
|
||||||
#self.db = create_engine("sqlite:///"+self.songfile, convert_unicode=False)
|
elif btype == 'mysql':
|
||||||
#elif btype == 'mysql':
|
self.db = create_engine("mysql://tim:@192.168.0.100:3306/openlp_rsv_bible")
|
||||||
#self.db = create_engine("mysql://tim:@192.168.0.100:3306/openlp_rsv_bible")
|
|
||||||
else:
|
else:
|
||||||
raise BibleInvalidDatabaseError("Database not mysql or sqlite")
|
raise BibleInvalidDatabaseError("Database not mysql or sqlite")
|
||||||
#c = conn.cursor()
|
self.db.echo = True
|
||||||
self.db.text_factory = str
|
self.db.convert_unicode=False
|
||||||
#self.db.echo = True
|
metadata.bind = self.db
|
||||||
#self.db.convert_unicode=False
|
metadata.bind.echo = False
|
||||||
#self.metadata = metaData()
|
self.Session = sessionmaker()
|
||||||
#metadata.bind = self.db
|
self.Session.configure(bind=self.db)
|
||||||
#metadata.bind.echo = False
|
self.authors = Table('authors', metadata, autoload=True)
|
||||||
#self.Session = sessionmaker()
|
self.settings = Table('settings', metadata, autoload=True)
|
||||||
#self.Session.configure(bind=self.db)
|
self.songauthors = Table('songauthors', metadata, autoload=True)
|
||||||
#self.authors = Table('authors', metadata, autoload=True)
|
self.songs = Table('songs', metadata, autoload=True)
|
||||||
#self.settings = Table('settings', metadata, autoload=True)
|
|
||||||
#self.songauthors = Table('songauthors', metadata, autoload=True)
|
|
||||||
#self.songs = Table('songs', metadata, autoload=True)
|
|
||||||
|
|
||||||
def create_tables(self):
|
def create_tables(self):
|
||||||
log.debug( "createTables")
|
log.debug( "createTables")
|
||||||
@ -90,27 +84,6 @@ class SongDBImpl(BibleCommon):
|
|||||||
session.add(versemeta)
|
session.add(versemeta)
|
||||||
session.commit()
|
session.commit()
|
||||||
|
|
||||||
def create_chapter(self, bookid, chap, textlist):
|
|
||||||
log.debug( "create_chapter %s,%s,%s", bookid, chap, textlist)
|
|
||||||
metadata.bind.echo = False
|
|
||||||
session = self.Session()
|
|
||||||
#s = text (""" select id FROM book where book.name == :b """)
|
|
||||||
#data = self.db.execute(s, b=bookname).fetchone()
|
|
||||||
#id = data[0] # id is first record in list.
|
|
||||||
#log.debug( "id = " , id
|
|
||||||
for v , t in textlist.iteritems():
|
|
||||||
versemeta = Verse(book_id=bookid, chapter=int(chap), verse=int(v), text=(t))
|
|
||||||
session.add(versemeta)
|
|
||||||
session.commit()
|
|
||||||
|
|
||||||
def create_book(self, bookid, bookname, bookabbrev):
|
|
||||||
log.debug( "create_book %s,%s,%s", bookid, bookname, bookabbrev)
|
|
||||||
metadata.bind.echo = False
|
|
||||||
session = self.Session()
|
|
||||||
bookmeta = Book(int(5), bookname, bookabbrev)
|
|
||||||
session.add(bookmeta)
|
|
||||||
session.commit()
|
|
||||||
|
|
||||||
def save_meta(self, key, value):
|
def save_meta(self, key, value):
|
||||||
metadata.bind.echo = False
|
metadata.bind.echo = False
|
||||||
session = self.Session()
|
session = self.Session()
|
||||||
@ -127,38 +100,29 @@ class SongDBImpl(BibleCommon):
|
|||||||
s = text (""" delete FROM meta where key == :k """)
|
s = text (""" delete FROM meta where key == :k """)
|
||||||
self.db.execute(s, k=key)
|
self.db.execute(s, k=key)
|
||||||
|
|
||||||
def _load_testaments(self):
|
|
||||||
log.debug("load_testaments")
|
|
||||||
metadata.bind.echo = False
|
|
||||||
session = self.Session()
|
|
||||||
testmeta = ONTestament(name="Old Testament")
|
|
||||||
session.add(testmeta)
|
|
||||||
testmeta = ONTestament(name="New Testament")
|
|
||||||
session.add(testmeta)
|
|
||||||
testmeta = ONTestament(name="Apocrypha")
|
|
||||||
session.add(testmeta)
|
|
||||||
session.commit()
|
|
||||||
|
|
||||||
def get_song(self, songid):
|
def get_song(self, songid):
|
||||||
log.debug( "get_song ")
|
log.debug( "get_song ")
|
||||||
#metadata.bind.echo = False
|
metadata.bind.echo = True
|
||||||
#s = text (""" select * FROM songs where songid = :c """)
|
s = text (""" select * FROM songs where songid = :c """)
|
||||||
s = " select * FROM songs where songid = " +str(songid)
|
return self.db.execute(s, c=songid).fetchone()
|
||||||
return self.db.cursor().execute(s).fetchone()
|
|
||||||
|
|
||||||
def get_authors(self):
|
def get_authors(self):
|
||||||
log.debug( "get_authors ")
|
log.debug( "get_authors ")
|
||||||
#metadata.bind.echo = False
|
metadata.bind.echo = False
|
||||||
#s = text (""" select * FROM authors order by authorname """)
|
s = text (""" select authorid, authorname FROM authors order by authorname """)
|
||||||
s = """ select * FROM authors order by authorname """
|
return self.db.execute(s).fetchall()
|
||||||
return self.db.cursor().execute(s).fetchall()
|
|
||||||
|
def get_author(self, authorid):
|
||||||
|
log.debug( "get_author %s" , authorid)
|
||||||
|
metadata.bind.echo = True
|
||||||
|
s = text (""" select * FROM authors where authorid = :i """)
|
||||||
|
return self.db.execute(s, i=authorid).fetchone()
|
||||||
|
|
||||||
def get_song_authors(self, song):
|
def get_song_authors(self, song):
|
||||||
log.debug( "get_song_authors ")
|
log.debug( "get_song_authors ")
|
||||||
#metadata.bind.echo = False
|
metadata.bind.echo = False
|
||||||
#s = text (""" select * FROM songauthors where songid = ;c """)
|
s = text (""" select * FROM songauthors where songid = ;c """)
|
||||||
s = """ select * FROM songauthors where songid = ;c """
|
return self.db.execute(s, c=songid).fetchall()
|
||||||
return self.db.cursor().execute(s, c=songid).fetchall()
|
|
||||||
|
|
||||||
|
|
||||||
def get_max_bible_book_verses(self, bookname, chapter):
|
def get_max_bible_book_verses(self, bookname, chapter):
|
||||||
|
@ -57,77 +57,6 @@ class SongManager():
|
|||||||
def process_dialog(self, dialogobject):
|
def process_dialog(self, dialogobject):
|
||||||
self.dialogobject = dialogobject
|
self.dialogobject = dialogobject
|
||||||
|
|
||||||
def register_HTTP_bible(self, biblename, biblesource, mode="lazy", proxyurl=None, proxyid=None, proxypass=None):
|
|
||||||
"""
|
|
||||||
Return a list of bibles from a given URL.
|
|
||||||
The selected Bible can then be registered and LazyLoaded into a database
|
|
||||||
"""
|
|
||||||
log.debug( "register_HTTP_bible %s,%s,%s,%s,%s", biblename, biblesource, proxyurl, proxyid, proxypass, mode)
|
|
||||||
if self._is_new_bible(biblename):
|
|
||||||
nbible = BibleDBImpl(self.biblePath, biblename, self.bibleSuffix) # Create new Bible
|
|
||||||
nbible.createTables() # Create Database
|
|
||||||
self.bibleDBCache[biblename] = nbible
|
|
||||||
|
|
||||||
nhttp = BibleHTTPImpl()
|
|
||||||
nhttp.setBibleSource(biblesource)
|
|
||||||
self.bibleHTTPCache[biblename] = nhttp
|
|
||||||
nbible.save_meta("WEB", biblesource) # register a lazy loading interest
|
|
||||||
if proxyurl != None:
|
|
||||||
nbible.save_meta("proxy", proxyurl) # store the proxy URL
|
|
||||||
nhttp.setProxy(proxyurl)
|
|
||||||
if proxyid != None:
|
|
||||||
nbible.save_meta("proxyid", proxyid) # store the proxy userid
|
|
||||||
if proxypass != None:
|
|
||||||
nbible.save_meta("proxypass", proxypass) # store the proxy password
|
|
||||||
|
|
||||||
|
|
||||||
def register_CVS_file_bible(self, biblename, booksfile, versefile):
|
|
||||||
"""
|
|
||||||
Method to load a bible from a set of files into a database.
|
|
||||||
If the database exists it is deleted and the database is reloaded
|
|
||||||
from scratch.
|
|
||||||
"""
|
|
||||||
if self._is_new_bible(biblename):
|
|
||||||
nbible = BibleDBImpl(self.biblePath, biblename, self.bibleSuffix) # Create new Bible
|
|
||||||
nbible.createTables() # Create Database
|
|
||||||
self.bibleDBCache[biblename] = nbible # cache the database for use later
|
|
||||||
bcsv = BibleCSVImpl(nbible) # create the loader and pass in the database
|
|
||||||
bcsv.load_data(booksfile, versefile)
|
|
||||||
|
|
||||||
def register_OSIS_file_bible(self, biblename, osisfile):
|
|
||||||
"""
|
|
||||||
Method to load a bible from a osis xml file extracted from Sword bible viewer.
|
|
||||||
If the database exists it is deleted and the database is reloaded
|
|
||||||
from scratch.
|
|
||||||
"""
|
|
||||||
log.debug( "register_OSIS_file_bible %s , %s", biblename, osisfile)
|
|
||||||
if self._is_new_bible(biblename):
|
|
||||||
nbible = BibleDBImpl(self.biblePath, biblename, self.bibleSuffix) # Create new Bible
|
|
||||||
nbible.createTables() # Create Database
|
|
||||||
self.bibleDBCache[biblename] = nbible # cache the database for use later
|
|
||||||
bcsv = BibleOSISImpl(self.biblePath, nbible) # create the loader and pass in the database
|
|
||||||
bcsv.loadData(osisfile, self.dialogobject)
|
|
||||||
|
|
||||||
|
|
||||||
# def loadBible(self,biblename):
|
|
||||||
# """
|
|
||||||
# Downloads all the books of the bible
|
|
||||||
# and loads it into the database
|
|
||||||
# """
|
|
||||||
# log.debug( "loadBible %s", biblename)
|
|
||||||
# bookabbrev = ""
|
|
||||||
# for bookname in self.listOfBooks:
|
|
||||||
# cptrs = self.booksChapters[ self.booksOfBible[bookname]]
|
|
||||||
# log.debug( "book and chapter %s %s", bookname , self.booksChapters[ self.booksOfBible[bookname]] )
|
|
||||||
# for chptr in range(1 , int(cptrs)): # loop through all the chapters in book
|
|
||||||
# c = self.bibleDBCache[biblename].getBibleChapter(bookname, chptr) # check to see if book/chapter exists
|
|
||||||
# log.debug( "got chapter %s", c)
|
|
||||||
# if not c:
|
|
||||||
# bookid = self.booksOfBible[bookname] # convert to id ie Genesis --> 1 Revelation --> 73
|
|
||||||
# log.debug( "missing %s,%s", bookname, chptr)
|
|
||||||
# self._loadBook(biblename,bookid, bookname, bookabbrev)
|
|
||||||
# self._loadChapter(biblename,bookid, bookname, chptr)
|
|
||||||
|
|
||||||
def get_song(self, songid):
|
def get_song(self, songid):
|
||||||
"""
|
"""
|
||||||
Returns the details of a song
|
Returns the details of a song
|
||||||
@ -136,10 +65,29 @@ class SongManager():
|
|||||||
|
|
||||||
def get_authors(self):
|
def get_authors(self):
|
||||||
"""
|
"""
|
||||||
Returns a list of all the authos
|
Returns a list of all the authors
|
||||||
"""
|
"""
|
||||||
return self.songDBCache.get_authors()
|
return self.songDBCache.get_authors()
|
||||||
|
|
||||||
|
def get_author(self, authorid):
|
||||||
|
"""
|
||||||
|
Details of the Author
|
||||||
|
"""
|
||||||
|
return self.songDBCache.get_author(authorid)
|
||||||
|
|
||||||
|
def save_author(self, author_name, first_name, last_name):
|
||||||
|
"""
|
||||||
|
Details of the Author
|
||||||
|
"""
|
||||||
|
return self.songDBCache.get_author(authorid)
|
||||||
|
|
||||||
|
def delete_author(self, authorid):
|
||||||
|
"""
|
||||||
|
Details of the Author
|
||||||
|
"""
|
||||||
|
return self.songDBCache.get_author(authorid)
|
||||||
|
|
||||||
|
|
||||||
def get_song_authors(self, songid):
|
def get_song_authors(self, songid):
|
||||||
"""
|
"""
|
||||||
Returns the details of a song
|
Returns the details of a song
|
||||||
|
Loading…
Reference in New Issue
Block a user