forked from openlp/openlp
Fix to deal with "X.Y.Z" style version (i.e. without the "-bzrXXX").
bzr-revno: 772
This commit is contained in:
commit
638170071b
23
openlp.pyw
23
openlp.pyw
@ -92,16 +92,23 @@ class OpenLP(QtGui.QApplication):
|
|||||||
app_version = {
|
app_version = {
|
||||||
u'full': full_version,
|
u'full': full_version,
|
||||||
u'version': bits[0],
|
u'version': bits[0],
|
||||||
u'build': bits[1]
|
u'build': bits[1] if len(bits) > 1 else None
|
||||||
}
|
}
|
||||||
log.info(u'Openlp version %s build %s' % (
|
if app_version[u'build']:
|
||||||
app_version[u'version'], app_version[u'build']))
|
log.info(
|
||||||
|
u'Openlp version %s build %s',
|
||||||
|
app_version[u'version'],
|
||||||
|
app_version[u'build']
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
log.info(u'Openlp version %s' % app_version[u'version'])
|
||||||
except:
|
except:
|
||||||
app_version = {
|
log.exception('Error in version file.')
|
||||||
u'full': u'1.9.0-bzr000',
|
app_version = {
|
||||||
u'version': u'1.9.0',
|
u'full': u'1.9.0-bzr000',
|
||||||
u'build': u'bzr000'
|
u'version': u'1.9.0',
|
||||||
}
|
u'build': u'bzr000'
|
||||||
|
}
|
||||||
finally:
|
finally:
|
||||||
if fversion:
|
if fversion:
|
||||||
fversion.close()
|
fversion.close()
|
||||||
|
@ -1 +1 @@
|
|||||||
1.9.0-bzr743
|
1.9.0
|
||||||
|
@ -115,7 +115,7 @@ class Ui_AboutDialog(object):
|
|||||||
def retranslateUi(self, AboutDialog):
|
def retranslateUi(self, AboutDialog):
|
||||||
AboutDialog.setWindowTitle(self.trUtf8('About OpenLP'))
|
AboutDialog.setWindowTitle(self.trUtf8('About OpenLP'))
|
||||||
self.AboutTextEdit.setPlainText(self.trUtf8(
|
self.AboutTextEdit.setPlainText(self.trUtf8(
|
||||||
'OpenLP <version> build <revision> - Open Source Lyrics '
|
'OpenLP <version><revision> - Open Source Lyrics '
|
||||||
'Projection\n'
|
'Projection\n'
|
||||||
'\n'
|
'\n'
|
||||||
'OpenLP is free church presentation software, or lyrics '
|
'OpenLP is free church presentation software, or lyrics '
|
||||||
|
@ -39,11 +39,16 @@ class AboutForm(QtGui.QDialog, Ui_AboutDialog):
|
|||||||
QtGui.QDialog.__init__(self, parent)
|
QtGui.QDialog.__init__(self, parent)
|
||||||
self.applicationVersion = applicationVersion
|
self.applicationVersion = applicationVersion
|
||||||
self.setupUi(self)
|
self.setupUi(self)
|
||||||
self.AboutTextEdit.setPlainText(
|
about_text = self.AboutTextEdit.toPlainText()
|
||||||
self.AboutTextEdit.toPlainText()\
|
about_text = about_text.replace(u'<version>',
|
||||||
.replace(u'<version>', self.applicationVersion[u'version'])\
|
self.applicationVersion[u'version'])
|
||||||
.replace(u'<revision>', self.applicationVersion[u'build'])
|
if self.applicationVersion[u'build']:
|
||||||
)
|
build_text = u' %s %s' % (self.trUtf8('build'),
|
||||||
|
self.applicationVersion[u'build'])
|
||||||
|
else:
|
||||||
|
build_text = u''
|
||||||
|
about_text = about_text.replace(u'<revision>', build_text)
|
||||||
|
self.AboutTextEdit.setPlainText(about_text)
|
||||||
QtCore.QObject.connect(self.ContributeButton,
|
QtCore.QObject.connect(self.ContributeButton,
|
||||||
QtCore.SIGNAL(u'clicked()'), self.onContributeButtonClicked)
|
QtCore.SIGNAL(u'clicked()'), self.onContributeButtonClicked)
|
||||||
|
|
||||||
|
@ -71,7 +71,7 @@ class VersionThread(QtCore.QThread):
|
|||||||
Receiver.send_message(u'blank_check')
|
Receiver.send_message(u'blank_check')
|
||||||
version = check_latest_version(self.generalConfig, self.app_version)
|
version = check_latest_version(self.generalConfig, self.app_version)
|
||||||
#new version has arrived
|
#new version has arrived
|
||||||
if version != self.app_version:
|
if version != self.app_version[u'full']:
|
||||||
Receiver.send_message(u'version_check', u'%s' % version)
|
Receiver.send_message(u'version_check', u'%s' % version)
|
||||||
|
|
||||||
|
|
||||||
@ -554,11 +554,12 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
|
|||||||
Checks the version of the Application called from openlp.pyw
|
Checks the version of the Application called from openlp.pyw
|
||||||
"""
|
"""
|
||||||
app_version = self.applicationVersion[u'full']
|
app_version = self.applicationVersion[u'full']
|
||||||
version_text = unicode(self.trUtf8('OpenLP version %s has been updated '
|
version_text = unicode(self.trUtf8('Version %s of OpenLP is now '
|
||||||
'to version %s\n\nYou can obtain the latest version from http://openlp.org'))
|
'available for download (you are currently running version %s).'
|
||||||
|
'\n\nYou can download the latest version from http://openlp.org'))
|
||||||
QtGui.QMessageBox.question(self,
|
QtGui.QMessageBox.question(self,
|
||||||
self.trUtf8('OpenLP Version Updated'),
|
self.trUtf8('OpenLP Version Updated'),
|
||||||
version_text % (app_version, version),
|
version_text % (version, app_version),
|
||||||
QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok),
|
QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok),
|
||||||
QtGui.QMessageBox.Ok)
|
QtGui.QMessageBox.Ok)
|
||||||
|
|
||||||
@ -597,8 +598,8 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
|
|||||||
QtGui.QMessageBox.Ok)
|
QtGui.QMessageBox.Ok)
|
||||||
|
|
||||||
def versionThread(self):
|
def versionThread(self):
|
||||||
app_version = self.applicationVersion[u'full']
|
#app_version = self.applicationVersion[u'full']
|
||||||
vT = VersionThread(self, app_version, self.generalConfig)
|
vT = VersionThread(self, self.applicationVersion, self.generalConfig)
|
||||||
vT.start()
|
vT.start()
|
||||||
|
|
||||||
def onHelpAboutItemClicked(self):
|
def onHelpAboutItemClicked(self):
|
||||||
|
@ -105,19 +105,20 @@ def check_latest_version(config, current_version):
|
|||||||
``current_version``
|
``current_version``
|
||||||
The current version of OpenLP.
|
The current version of OpenLP.
|
||||||
"""
|
"""
|
||||||
version_string = current_version
|
version_string = current_version[u'full']
|
||||||
#set to prod in the distribution confif file.
|
#set to prod in the distribution confif file.
|
||||||
last_test = config.get_config(u'last version test', datetime.now().date())
|
last_test = config.get_config(u'last version test', datetime.now().date())
|
||||||
this_test = unicode(datetime.now().date())
|
this_test = unicode(datetime.now().date())
|
||||||
config.set_config(u'last version test', this_test)
|
config.set_config(u'last version test', this_test)
|
||||||
if last_test != this_test:
|
if last_test != this_test:
|
||||||
version_string = u''
|
version_string = u''
|
||||||
req = urllib2.Request(u'http://www.openlp.org/files/version.txt')
|
if current_version[u'build']:
|
||||||
req.add_header(u'User-Agent', u'OpenLP/%s' % current_version)
|
req = urllib2.Request(u'http://www.openlp.org/files/dev_version.txt')
|
||||||
|
else:
|
||||||
|
req = urllib2.Request(u'http://www.openlp.org/files/version.txt')
|
||||||
|
req.add_header(u'User-Agent', u'OpenLP/%s' % current_version[u'full'])
|
||||||
try:
|
try:
|
||||||
handle = urllib2.urlopen(req, None)
|
version_string = unicode(urllib2.urlopen(req, None).read()).strip()
|
||||||
html = handle.read()
|
|
||||||
version_string = unicode(html).rstrip()
|
|
||||||
except IOError, e:
|
except IOError, e:
|
||||||
if hasattr(e, u'reason'):
|
if hasattr(e, u'reason'):
|
||||||
log.exception(u'Reason for failure: %s', e.reason)
|
log.exception(u'Reason for failure: %s', e.reason)
|
||||||
|
@ -95,6 +95,9 @@ class BibleDB(QtCore.QObject):
|
|||||||
self.get_name()
|
self.get_name()
|
||||||
|
|
||||||
def get_name(self):
|
def get_name(self):
|
||||||
|
"""
|
||||||
|
Returns the version name of the Bible.
|
||||||
|
"""
|
||||||
version_name = self.get_meta(u'Version')
|
version_name = self.get_meta(u'Version')
|
||||||
if version_name:
|
if version_name:
|
||||||
self.name = version_name.value
|
self.name = version_name.value
|
||||||
@ -103,12 +106,22 @@ class BibleDB(QtCore.QObject):
|
|||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
def clean_filename(self, old_filename):
|
def clean_filename(self, old_filename):
|
||||||
|
"""
|
||||||
|
Clean up the version name of the Bible and convert it into a valid
|
||||||
|
file name.
|
||||||
|
|
||||||
|
``old_filename``
|
||||||
|
The "dirty" file name or version name.
|
||||||
|
"""
|
||||||
if not isinstance(old_filename, unicode):
|
if not isinstance(old_filename, unicode):
|
||||||
old_filename = unicode(old_filename, u'utf-8')
|
old_filename = unicode(old_filename, u'utf-8')
|
||||||
old_filename = re.sub(r'[^\w]+', u'_', old_filename).strip(u'_')
|
old_filename = re.sub(r'[^\w]+', u'_', old_filename).strip(u'_')
|
||||||
return old_filename + u'.sqlite'
|
return old_filename + u'.sqlite'
|
||||||
|
|
||||||
def delete(self):
|
def delete(self):
|
||||||
|
"""
|
||||||
|
Remove the Bible database file. Used when a Bible import fails.
|
||||||
|
"""
|
||||||
try:
|
try:
|
||||||
os.remove(self.db_file)
|
os.remove(self.db_file)
|
||||||
return True
|
return True
|
||||||
@ -119,18 +132,27 @@ class BibleDB(QtCore.QObject):
|
|||||||
"""
|
"""
|
||||||
This method basically just initialialises the database. It is called
|
This method basically just initialialises the database. It is called
|
||||||
from the Bible Manager when a Bible is imported. Descendant classes
|
from the Bible Manager when a Bible is imported. Descendant classes
|
||||||
may want to override this method to suVersionpply their own custom
|
may want to override this method to supply their own custom
|
||||||
initialisation as well.
|
initialisation as well.
|
||||||
|
|
||||||
|
``wizard``
|
||||||
|
The actual Qt wizard form.
|
||||||
"""
|
"""
|
||||||
self.wizard = wizard
|
self.wizard = wizard
|
||||||
self.create_tables()
|
self.create_tables()
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
def commit(self):
|
def commit(self):
|
||||||
|
"""
|
||||||
|
Perform a database commit.
|
||||||
|
"""
|
||||||
log.debug('Committing...')
|
log.debug('Committing...')
|
||||||
self.session.commit()
|
self.session.commit()
|
||||||
|
|
||||||
def create_tables(self):
|
def create_tables(self):
|
||||||
|
"""
|
||||||
|
Create some initial metadata.
|
||||||
|
"""
|
||||||
log.debug(u'createTables')
|
log.debug(u'createTables')
|
||||||
self.create_meta(u'dbversion', u'2')
|
self.create_meta(u'dbversion', u'2')
|
||||||
self.create_testament(u'Old Testament')
|
self.create_testament(u'Old Testament')
|
||||||
@ -138,11 +160,29 @@ class BibleDB(QtCore.QObject):
|
|||||||
self.create_testament(u'Apocrypha')
|
self.create_testament(u'Apocrypha')
|
||||||
|
|
||||||
def create_testament(self, testament):
|
def create_testament(self, testament):
|
||||||
|
"""
|
||||||
|
Add a testament to the database.
|
||||||
|
|
||||||
|
``testament``
|
||||||
|
The testament name.
|
||||||
|
"""
|
||||||
log.debug(u'BibleDB.create_testament("%s")', testament)
|
log.debug(u'BibleDB.create_testament("%s")', testament)
|
||||||
self.session.add(Testament.populate(name=testament))
|
self.session.add(Testament.populate(name=testament))
|
||||||
self.commit()
|
self.commit()
|
||||||
|
|
||||||
def create_book(self, name, abbrev, testament=1):
|
def create_book(self, name, abbrev, testament=1):
|
||||||
|
"""
|
||||||
|
Add a book to the database.
|
||||||
|
|
||||||
|
``name``
|
||||||
|
The name of the book.
|
||||||
|
|
||||||
|
``abbrev``
|
||||||
|
The abbreviation of the book.
|
||||||
|
|
||||||
|
``testament``
|
||||||
|
*Defaults to 1.* The id of the testament this book belongs to.
|
||||||
|
"""
|
||||||
log.debug(u'create_book %s,%s', name, abbrev)
|
log.debug(u'create_book %s,%s', name, abbrev)
|
||||||
book = Book.populate(name=name, abbreviation=abbrev,
|
book = Book.populate(name=name, abbreviation=abbrev,
|
||||||
testament_id=testament)
|
testament_id=testament)
|
||||||
@ -151,6 +191,19 @@ class BibleDB(QtCore.QObject):
|
|||||||
return book
|
return book
|
||||||
|
|
||||||
def create_chapter(self, book_id, chapter, textlist):
|
def create_chapter(self, book_id, chapter, textlist):
|
||||||
|
"""
|
||||||
|
Add a chapter and it's verses to a book.
|
||||||
|
|
||||||
|
``book_id``
|
||||||
|
The id of the book being appended.
|
||||||
|
|
||||||
|
``chapter``
|
||||||
|
The chapter number.
|
||||||
|
|
||||||
|
``textlist``
|
||||||
|
A dict of the verses to be inserted. The key is the verse number,
|
||||||
|
and the value is the verse text.
|
||||||
|
"""
|
||||||
log.debug(u'create_chapter %s,%s', book_id, chapter)
|
log.debug(u'create_chapter %s,%s', book_id, chapter)
|
||||||
#text list has book and chapter as first two elements of the array
|
#text list has book and chapter as first two elements of the array
|
||||||
for verse_number, verse_text in textlist.iteritems():
|
for verse_number, verse_text in textlist.iteritems():
|
||||||
@ -164,6 +217,21 @@ class BibleDB(QtCore.QObject):
|
|||||||
self.commit()
|
self.commit()
|
||||||
|
|
||||||
def create_verse(self, book_id, chapter, verse, text):
|
def create_verse(self, book_id, chapter, verse, text):
|
||||||
|
"""
|
||||||
|
Add a single verse to a chapter.
|
||||||
|
|
||||||
|
``book_id``
|
||||||
|
The id of the book being appended.
|
||||||
|
|
||||||
|
``chapter``
|
||||||
|
The chapter number.
|
||||||
|
|
||||||
|
``verse``
|
||||||
|
The verse number.
|
||||||
|
|
||||||
|
``text``
|
||||||
|
The verse text.
|
||||||
|
"""
|
||||||
if not isinstance(text, unicode):
|
if not isinstance(text, unicode):
|
||||||
details = chardet.detect(text)
|
details = chardet.detect(text)
|
||||||
text = unicode(text, details[u'encoding'])
|
text = unicode(text, details[u'encoding'])
|
||||||
|
Loading…
Reference in New Issue
Block a user