summaryrefslogtreecommitdiff
path: root/src/leap/gui/firstrun/selectprovider.py
diff options
context:
space:
mode:
authorkali <kali@leap.se>2012-11-07 06:06:40 +0900
committerkali <kali@leap.se>2012-11-07 06:06:40 +0900
commit63fc5b19e39072f4bda26f2649e83832d68b5000 (patch)
tree3d5cf060e4cecb1effcacdaceb9d8e3c6582acb9 /src/leap/gui/firstrun/selectprovider.py
parent6032f776cabcd04aa7f4e1f55a34ecfec2775e85 (diff)
fix issue with refresh timing
using end_sentinel as a workaround for the lack of refresh. doing a pause so user gets some feedback about what's going on. error messages on select provider page should be all covered now.
Diffstat (limited to 'src/leap/gui/firstrun/selectprovider.py')
-rw-r--r--src/leap/gui/firstrun/selectprovider.py95
1 files changed, 28 insertions, 67 deletions
diff --git a/src/leap/gui/firstrun/selectprovider.py b/src/leap/gui/firstrun/selectprovider.py
index d26fdbbb..e95a4af2 100644
--- a/src/leap/gui/firstrun/selectprovider.py
+++ b/src/leap/gui/firstrun/selectprovider.py
@@ -1,6 +1,8 @@
"""
Select Provider Page, used in First Run Wizard
"""
+import logging
+
from PyQt4 import QtCore
from PyQt4 import QtGui
@@ -11,6 +13,8 @@ from leap.eip import exceptions as eipexceptions
from leap.gui.constants import APP_LOGO
from leap.gui.styles import ErrorLabelStyleSheet
+logger = logging.getLogger(__name__)
+
class SelectProviderPage(QtGui.QWizardPage):
def __init__(self, parent=None, providers=None):
@@ -136,77 +140,34 @@ class SelectProviderPage(QtGui.QWizardPage):
return True
return False
+ def populateErrors(self):
+ # XXX could move this to ValidationMixin
+
+ #logger.debug('getting errors')
+ errors = self.wizard().get_validation_error('providerselection')
+ if errors:
+ #logger.debug('errors! -> %s', errors)
+ self.validationMsg.setText(errors)
+
+ def paintEvent(self, event):
+ """
+ we hook our populate errors
+ on paintEvent because we need it to catch
+ when user enters the page coming from next,
+ and initializePage does not cover that case.
+ Maybe there's a better event to hook upon.
+ """
+ super(SelectProviderPage, self).paintEvent(event)
+ self.populateErrors()
+
def initializePage(self):
+ self.validationMsg.setText('')
self.certinfoGroup.hide()
def validatePage(self):
- ##################################
- # XXX FIXME!
- ##################################
- ##################################
- ##################################
- ##################################
- ##### validation skipped !!! #####
- ##################################
- ##################################
- return True
- ##################################
- ##################################
- ##################################
-
- # XXX move to ProviderInfo...
-
- wizard = self.wizard()
- netchecker = wizard.netchecker()
- providercertchecker = wizard.providercertchecker()
- eipconfigchecker = wizard.eipconfigchecker()
-
- domain = self.providerNameEdit.text()
-
- # try name resolution
- try:
- netchecker.check_name_resolution(
- domain)
-
- except baseexceptions.LeapException as exc:
- self.set_validation_status(exc.usermessage)
- return False
-
- # try https connection
- try:
- providercertchecker.is_https_working(
- "https://%s" % domain,
- verify=True)
-
- except eipexceptions.HttpsBadCertError as exc:
- if self.trustProviderCertCheckBox.isChecked():
- pass
- else:
- self.set_validation_status(exc.usermessage)
- fingerprint = certs.get_cert_fingerprint(
- domain=domain, sep=" ")
-
- # it's ok if we've trusted this fgprt before
- trustedcrts = self.wizard().trusted_certs
- if trustedcrts and fingerprint.replace(' ', '') in trustedcrts:
- pass
- else:
- # let your user face panick :P
- self.add_cert_info(fingerprint)
- self.did_cert_check = True
- self.completeChanged.emit()
- return False
-
- except baseexceptions.LeapException as exc:
- self.set_validation_status(exc.usermessage)
- return False
-
- # try download provider info...
- eipconfigchecker.fetch_definition(domain=domain)
- wizard.set_providerconfig(
- eipconfigchecker.defaultprovider.config)
-
- # all ok, go on...
+ """
+ we are doing validation in next page
+ """
return True
def nextId(self):