From e93d23d2e0fc8c3d7f729cfa859ffd96b108f539 Mon Sep 17 00:00:00 2001 From: Stephen Whitmore Date: Sat, 22 Nov 2014 13:56:41 -0800 Subject: [PATCH] Adds new API error codes for black-/white-list manipulation. Refactors loadBlackWhiteList into more generic rerenderBlackWhiteList --- src/api.py | 14 ++++++++--- src/bitmessageqt/__init__.py | 49 +++++++++++------------------------- 2 files changed, 24 insertions(+), 39 deletions(-) diff --git a/src/api.py b/src/api.py index 4b1a1a96..5189b290 100644 --- a/src/api.py +++ b/src/api.py @@ -763,9 +763,9 @@ class MySimpleXMLRPCRequestHandler(SimpleXMLRPCRequestHandler): # black-/white-list. queryreturn = sqlQuery('''select * from '''+table+''' where address=?''', address) if queryreturn != []: - raise APIError(16, 'You have already black-/white-listed that address.') + raise APIError(28, 'You have already black-/white-listed that address.') sqlExecute('''INSERT INTO '''+table+''' VALUES (?,?,?)''',label, address, True) - shared.UISignalQueue.put(('rerenderBlacklist', '')) + shared.UISignalQueue.put(('rerenderBlackWhiteList', '')) return 'Added black-/white-list entry.' elif method == 'removeAddressFromBlackWhiteList': @@ -780,8 +780,14 @@ class MySimpleXMLRPCRequestHandler(SimpleXMLRPCRequestHandler): else: table = 'whitelist' - sqlExecute('''DELETE FROM blacklist WHERE address=?''', address) - shared.UISignalQueue.put(('rerenderBlacklist', '')) + # First we must check to see if the address is already in the + # black-/white-list. + queryreturn = sqlQuery('''select * from '''+table+''' where address=?''', address) + if queryreturn == []: + raise APIError(29, 'That entry does not exist in the black-/white-list.') + + sqlExecute('''DELETE FROM '''+table+''' WHERE address=?''', address) + shared.UISignalQueue.put(('rerenderBlackWhiteList', '')) return 'Deleted black-/white-list entry if it existed.' elif method == 'deleteSubscription': diff --git a/src/bitmessageqt/__init__.py b/src/bitmessageqt/__init__.py index 97013d58..050a2805 100644 --- a/src/bitmessageqt/__init__.py +++ b/src/bitmessageqt/__init__.py @@ -551,13 +551,10 @@ class MyForm(QtGui.QMainWindow): "returnPressed()"), self.sentSearchLineEditPressed) # Initialize the Blacklist or Whitelist - if shared.config.get('bitmessagesettings', 'blackwhitelist') == 'black': - self.loadBlackWhiteList() - else: + if shared.config.get('bitmessagesettings', 'blackwhitelist') == 'white': self.ui.tabWidget.setTabText(6, 'Whitelist') self.ui.radioButtonWhitelist.click() - self.loadBlackWhiteList() - self.rerenderBlacklist() + self.rerenderBlackWhiteList() QtCore.QObject.connect(self.ui.tableWidgetYourIdentities, QtCore.SIGNAL( "itemChanged(QTableWidgetItem *)"), self.tableWidgetYourIdentitiesItemChanged) @@ -623,7 +620,7 @@ class MyForm(QtGui.QMainWindow): QtCore.QObject.connect(self.UISignalThread, QtCore.SIGNAL( "rerenderSubscriptions()"), self.rerenderSubscriptions) QtCore.QObject.connect(self.UISignalThread, QtCore.SIGNAL( - "rerenderBlacklist()"), self.rerenderBlacklist) + "rerenderBlackWhiteList()"), self.rerenderBlackWhiteList) QtCore.QObject.connect(self.UISignalThread, QtCore.SIGNAL( "removeInboxRowByMsgid(PyQt_PyObject)"), self.removeInboxRowByMsgid) QtCore.QObject.connect(self.UISignalThread, QtCore.SIGNAL( @@ -1835,9 +1832,13 @@ class MyForm(QtGui.QMainWindow): newItem.setTextColor(QtGui.QColor(128, 128, 128)) self.ui.tableWidgetSubscriptions.setItem(0, 1, newItem) - def rerenderBlacklist(self): + def rerenderBlackWhiteList(self): self.ui.tableWidgetBlacklist.setRowCount(0) - queryreturn = sqlQuery('SELECT label, address, enabled FROM blacklist') + listType = shared.config.get('bitmessagesettings', 'blackwhitelist') + if listType == 'black': + queryreturn = sqlQuery('''SELECT label, address, enabled FROM blacklist''') + else: + queryreturn = sqlQuery('''SELECT label, address, enabled FROM whitelist''') for row in queryreturn: label, address, enabled = row self.ui.tableWidgetBlacklist.insertRow(0) @@ -2251,28 +2252,6 @@ class MyForm(QtGui.QMainWindow): shared.objectProcessorQueueSize += len(payload) shared.objectProcessorQueue.put((objectType,payload)) - def loadBlackWhiteList(self): - # Initialize the Blacklist or Whitelist table - listType = shared.config.get('bitmessagesettings', 'blackwhitelist') - if listType == 'black': - queryreturn = sqlQuery('''SELECT label, address, enabled FROM blacklist''') - else: - queryreturn = sqlQuery('''SELECT label, address, enabled FROM whitelist''') - for row in queryreturn: - label, address, enabled = row - self.ui.tableWidgetBlacklist.insertRow(0) - newItem = QtGui.QTableWidgetItem(unicode(label, 'utf-8')) - if not enabled: - newItem.setTextColor(QtGui.QColor(128, 128, 128)) - newItem.setIcon(avatarize(address)) - self.ui.tableWidgetBlacklist.setItem(0, 0, newItem) - newItem = QtGui.QTableWidgetItem(address) - newItem.setFlags( - QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled) - if not enabled: - newItem.setTextColor(QtGui.QColor(128, 128, 128)) - self.ui.tableWidgetBlacklist.setItem(0, 1, newItem) - def click_pushButtonStatusIcon(self): print 'click_pushButtonStatusIcon' self.iconGlossaryInstance = iconGlossaryDialog(self) @@ -2505,7 +2484,7 @@ class MyForm(QtGui.QMainWindow): shared.config.write(configfile) # self.ui.tableWidgetBlacklist.clearContents() self.ui.tableWidgetBlacklist.setRowCount(0) - self.loadBlackWhiteList() + self.rerenderBlackWhiteList() self.ui.tabWidget.setTabText(6, 'Blacklist') def click_radioButtonWhitelist(self): @@ -2515,7 +2494,7 @@ class MyForm(QtGui.QMainWindow): shared.config.write(configfile) # self.ui.tableWidgetBlacklist.clearContents() self.ui.tableWidgetBlacklist.setRowCount(0) - self.loadBlackWhiteList() + self.rerenderBlackWhiteList() self.ui.tabWidget.setTabText(6, 'Whitelist') def click_pushButtonAddBlacklist(self): @@ -3204,7 +3183,7 @@ class MyForm(QtGui.QMainWindow): self.rerenderInboxToLabels() self.rerenderSentFromLabels() self.rerenderSentToLabels() - self.rerenderBlacklist() + self.rerenderBlackWhiteList() def on_context_menuYourIdentities(self, point): self.popMenu.exec_( @@ -3860,8 +3839,8 @@ class UISignaler(QThread): self.emit(SIGNAL("rerenderAddressBook()")) elif command == 'rerenderSubscriptions': self.emit(SIGNAL("rerenderSubscriptions()")) - elif command == 'rerenderBlacklist': - self.emit(SIGNAL("rerenderBlacklist()")) + elif command == 'rerenderBlackWhiteList': + self.emit(SIGNAL("rerenderBlackWhiteList()")) elif command == 'removeInboxRowByMsgid': self.emit(SIGNAL("removeInboxRowByMsgid(PyQt_PyObject)"), data) elif command == 'alert':