fixed CQ for bitmessageqt.addressvalidator module

This commit is contained in:
coolguy-cell 2020-05-31 18:51:49 +05:30
parent 859eeafcfe
commit 1699c2b015
No known key found for this signature in database
GPG Key ID: CD3A42E1D470AD70
1 changed files with 52 additions and 16 deletions

View File

@ -1,14 +1,29 @@
"""
Address validator module.
"""
# pylint: disable=too-many-branches,too-many-arguments
from PyQt4 import QtGui from PyQt4 import QtGui
from Queue import Empty from Queue import Empty
from addresses import decodeAddress, addBMIfNotPresent
from account import getSortedAccounts from account import getSortedAccounts
from addresses import decodeAddress, addBMIfNotPresent
from queues import apiAddressGeneratorReturnQueue, addressGeneratorQueue from queues import apiAddressGeneratorReturnQueue, addressGeneratorQueue
from tr import _translate from tr import _translate
from utils import str_chan from utils import str_chan
class AddressPassPhraseValidatorMixin():
def setParams(self, passPhraseObject=None, addressObject=None, feedBackObject=None, buttonBox=None, addressMandatory=True): class AddressPassPhraseValidatorMixin(object):
"""Bitmessage address or passphrase validator class for Qt UI"""
def setParams(
self,
passPhraseObject=None,
addressObject=None,
feedBackObject=None,
buttonBox=None,
addressMandatory=True,
):
"""Initialisation"""
self.addressObject = addressObject self.addressObject = addressObject
self.passPhraseObject = passPhraseObject self.passPhraseObject = passPhraseObject
self.feedBackObject = feedBackObject self.feedBackObject = feedBackObject
@ -19,6 +34,7 @@ class AddressPassPhraseValidatorMixin():
self.okButtonLabel = self.buttonBox.button(QtGui.QDialogButtonBox.Ok).text() self.okButtonLabel = self.buttonBox.button(QtGui.QDialogButtonBox.Ok).text()
def setError(self, string): def setError(self, string):
"""Indicate that the validation is pending or failed"""
if string is not None and self.feedBackObject is not None: if string is not None and self.feedBackObject is not None:
font = QtGui.QFont() font = QtGui.QFont()
font.setBold(True) font.setBold(True)
@ -29,11 +45,14 @@ class AddressPassPhraseValidatorMixin():
if self.buttonBox: if self.buttonBox:
self.buttonBox.button(QtGui.QDialogButtonBox.Ok).setEnabled(False) self.buttonBox.button(QtGui.QDialogButtonBox.Ok).setEnabled(False)
if string is not None and self.feedBackObject is not None: if string is not None and self.feedBackObject is not None:
self.buttonBox.button(QtGui.QDialogButtonBox.Ok).setText(_translate("AddressValidator", "Invalid")) self.buttonBox.button(QtGui.QDialogButtonBox.Ok).setText(
_translate("AddressValidator", "Invalid"))
else: else:
self.buttonBox.button(QtGui.QDialogButtonBox.Ok).setText(_translate("AddressValidator", "Validating...")) self.buttonBox.button(QtGui.QDialogButtonBox.Ok).setText(
_translate("AddressValidator", "Validating..."))
def setOK(self, string): def setOK(self, string):
"""Indicate that the validation succeeded"""
if string is not None and self.feedBackObject is not None: if string is not None and self.feedBackObject is not None:
font = QtGui.QFont() font = QtGui.QFont()
font.setBold(False) font.setBold(False)
@ -46,12 +65,13 @@ class AddressPassPhraseValidatorMixin():
self.buttonBox.button(QtGui.QDialogButtonBox.Ok).setText(self.okButtonLabel) self.buttonBox.button(QtGui.QDialogButtonBox.Ok).setText(self.okButtonLabel)
def checkQueue(self): def checkQueue(self):
"""Validator queue loop"""
gotOne = False gotOne = False
# wait until processing is done # wait until processing is done
if not addressGeneratorQueue.empty(): if not addressGeneratorQueue.empty():
self.setError(None) self.setError(None)
return return None
while True: while True:
try: try:
@ -60,25 +80,30 @@ class AddressPassPhraseValidatorMixin():
if gotOne: if gotOne:
break break
else: else:
return return None
else: else:
gotOne = True gotOne = True
if len(addressGeneratorReturnValue) == 0: if not addressGeneratorReturnValue:
self.setError(_translate("AddressValidator", "Address already present as one of your identities.")) self.setError(_translate("AddressValidator", "Address already present as one of your identities."))
return (QtGui.QValidator.Intermediate, 0) return (QtGui.QValidator.Intermediate, 0)
if addressGeneratorReturnValue[0] == 'chan name does not match address': if addressGeneratorReturnValue[0] == 'chan name does not match address':
self.setError(_translate("AddressValidator", "Although the Bitmessage address you entered was valid, it doesn\'t match the chan name.")) self.setError(
_translate(
"AddressValidator",
"Although the Bitmessage address you "
"entered was valid, it doesn't match the chan name."))
return (QtGui.QValidator.Intermediate, 0) return (QtGui.QValidator.Intermediate, 0)
self.setOK(_translate("MainWindow", "Passphrase and address appear to be valid.")) self.setOK(_translate("MainWindow", "Passphrase and address appear to be valid."))
def returnValid(self): def returnValid(self):
"""Return the value of whether the validation was successful"""
if self.isValid: if self.isValid:
return QtGui.QValidator.Acceptable return QtGui.QValidator.Acceptable
else: return QtGui.QValidator.Intermediate
return QtGui.QValidator.Intermediate
def validate(self, s, pos): def validate(self, s, pos):
"""Top level validator method"""
if self.addressObject is None: if self.addressObject is None:
address = None address = None
else: else:
@ -105,9 +130,15 @@ class AddressPassPhraseValidatorMixin():
# version too high # version too high
if decodeAddress(address)[0] == 'versiontoohigh': if decodeAddress(address)[0] == 'versiontoohigh':
self.setError(_translate("AddressValidator", "Address too new. Although that Bitmessage address might be valid, its version number is too new for us to handle. Perhaps you need to upgrade Bitmessage.")) self.setError(
_translate(
"AddressValidator",
"Address too new. Although that Bitmessage"
" address might be valid, its version number"
" is too new for us to handle. Perhaps you need"
" to upgrade Bitmessage."))
return (QtGui.QValidator.Intermediate, pos) return (QtGui.QValidator.Intermediate, pos)
# invalid # invalid
if decodeAddress(address)[0] != 'success': if decodeAddress(address)[0] != 'success':
self.setError(_translate("AddressValidator", "The Bitmessage address is not valid.")) self.setError(_translate("AddressValidator", "The Bitmessage address is not valid."))
@ -122,23 +153,28 @@ class AddressPassPhraseValidatorMixin():
if address is None: if address is None:
addressGeneratorQueue.put(('createChan', 4, 1, str_chan + ' ' + str(passPhrase), passPhrase, False)) addressGeneratorQueue.put(('createChan', 4, 1, str_chan + ' ' + str(passPhrase), passPhrase, False))
else: else:
addressGeneratorQueue.put(('joinChan', addBMIfNotPresent(address), str_chan + ' ' + str(passPhrase), passPhrase, False)) addressGeneratorQueue.put(
('joinChan', addBMIfNotPresent(address),
"{} {}".format(str_chan, passPhrase), passPhrase, False))
if self.buttonBox.button(QtGui.QDialogButtonBox.Ok).hasFocus(): if self.buttonBox.button(QtGui.QDialogButtonBox.Ok).hasFocus():
return (self.returnValid(), pos) return (self.returnValid(), pos)
else: return (QtGui.QValidator.Intermediate, pos)
return (QtGui.QValidator.Intermediate, pos)
def checkData(self): def checkData(self):
"""Validator Qt signal interface"""
return self.validate("", 0) return self.validate("", 0)
class AddressValidator(QtGui.QValidator, AddressPassPhraseValidatorMixin): class AddressValidator(QtGui.QValidator, AddressPassPhraseValidatorMixin):
"""AddressValidator class for Qt UI"""
def __init__(self, parent=None, passPhraseObject=None, feedBackObject=None, buttonBox=None, addressMandatory=True): def __init__(self, parent=None, passPhraseObject=None, feedBackObject=None, buttonBox=None, addressMandatory=True):
super(AddressValidator, self).__init__(parent) super(AddressValidator, self).__init__(parent)
self.setParams(passPhraseObject, parent, feedBackObject, buttonBox, addressMandatory) self.setParams(passPhraseObject, parent, feedBackObject, buttonBox, addressMandatory)
class PassPhraseValidator(QtGui.QValidator, AddressPassPhraseValidatorMixin): class PassPhraseValidator(QtGui.QValidator, AddressPassPhraseValidatorMixin):
"""PassPhraseValidator class for Qt UI"""
def __init__(self, parent=None, addressObject=None, feedBackObject=None, buttonBox=None, addressMandatory=False): def __init__(self, parent=None, addressObject=None, feedBackObject=None, buttonBox=None, addressMandatory=False):
super(PassPhraseValidator, self).__init__(parent) super(PassPhraseValidator, self).__init__(parent)
self.setParams(parent, addressObject, feedBackObject, buttonBox, addressMandatory) self.setParams(parent, addressObject, feedBackObject, buttonBox, addressMandatory)