Fix to deal with "X.Y.Z" style version (i.e. without the "-bzrXXX").

This commit is contained in:
Raoul Snyman 2010-03-27 14:37:21 +02:00
parent 8f095a2fc5
commit abfc977b17
7 changed files with 110 additions and 28 deletions

View File

@ -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()

View File

@ -1 +1 @@
1.9.0-bzr743 1.9.0

View File

@ -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 '

View File

@ -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)

View File

@ -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):

View File

@ -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)

View File

@ -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'])