Mercurial > hg > Feedworm
changeset 50:4b0d686493fb
better error handling while adding feeds: data is only saved if a feed could be created and entries could be retrieved. MainWindow displays feedback in the status bar if an exception occurred while adding a feed.
author | Dirk Olmes <dirk@xanthippe.ping.de> |
---|---|
date | Mon, 17 May 2010 04:30:55 +0200 |
parents | 6eba4168fd54 |
children | 8eee0e671696 |
files | AddFeed.py FeedUpdater.py MainWindow.py |
diffstat | 3 files changed, 18 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/AddFeed.py Mon May 17 03:52:13 2010 +0200 +++ b/AddFeed.py Mon May 17 04:30:55 2010 +0200 @@ -4,15 +4,21 @@ import FeedUpdater class AddFeed(QtGui.QDialog): - def __init__(self, session=None): + def __init__(self, session): QtGui.QWidget.__init__(self, None) self.session = session + self.exception = None self.ui = Ui_AddFeed() self.ui.setupUi(self) self.ui.url.setFocus() def accept(self): - self.createFeed() + try: + self.createFeed() + self.session.commit() + except AttributeError as ae: + self.exception = ae + self.session.rollback() QtGui.QDialog.accept(self) def createFeed(self):
--- a/FeedUpdater.py Mon May 17 03:52:13 2010 +0200 +++ b/FeedUpdater.py Mon May 17 04:30:55 2010 +0200 @@ -25,10 +25,8 @@ title = result["feed"].title newFeed = Feed(title, url) session.add(newFeed) - session.commit() FeedUpdater(session, newFeed).update() - session.commit() class FeedUpdater(object): def __init__(self, session, feed):
--- a/MainWindow.py Mon May 17 03:52:13 2010 +0200 +++ b/MainWindow.py Mon May 17 04:30:55 2010 +0200 @@ -11,6 +11,8 @@ from Ui_MainWindow import Ui_MainWindow import subprocess +STATUS_MESSAGE_DISPLAY_MILLIS = 20000 + class MainWindow(QtGui.QMainWindow): def __init__(self, session=None): QtGui.QWidget.__init__(self, None) @@ -66,7 +68,14 @@ def addFeed(self): addFeed = AddFeed(self.session) success = addFeed.exec_() - if success: + if not success: + return + + if addFeed.exception is not None: + message = "Error while adding feed: " + str(addFeed.exception) + self.ui.statusbar.showMessage(message, STATUS_MESSAGE_DISPLAY_MILLIS) + else: + self.session.commit() self.updateFeedList() def openSelectedEntryInBrowser(self):