diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/leap/bitmask/gui/mainwindow.py | 10 | ||||
| -rw-r--r-- | src/leap/bitmask/gui/preferenceswindow.py | 48 | ||||
| -rw-r--r-- | src/leap/bitmask/services/mail/imap.py | 7 | ||||
| -rw-r--r-- | src/leap/bitmask/services/soledad/soledadbootstrapper.py | 7 | 
4 files changed, 60 insertions, 12 deletions
| diff --git a/src/leap/bitmask/gui/mainwindow.py b/src/leap/bitmask/gui/mainwindow.py index ce3f113b..5eb9e6dc 100644 --- a/src/leap/bitmask/gui/mainwindow.py +++ b/src/leap/bitmask/gui/mainwindow.py @@ -446,13 +446,11 @@ class MainWindow(QtGui.QMainWindow):          Displays the preferences window.          """ -        preferences_window = PreferencesWindow(self, self._srp_auth) +        preferences_window = PreferencesWindow(self, self._srp_auth, +                                               self._provider_config) -        if sameProxiedObjects(self._soledad, None): -            preferences_window.set_soledad_ready(self._soledad) -        else: -            self.soledad_ready.connect( -                lambda: preferences_window.set_soledad_ready(self._soledad)) +        self.soledad_ready.connect( +            lambda: preferences_window.set_soledad_ready(self._soledad))          preferences_window.show() diff --git a/src/leap/bitmask/gui/preferenceswindow.py b/src/leap/bitmask/gui/preferenceswindow.py index b043afe6..acb39b07 100644 --- a/src/leap/bitmask/gui/preferenceswindow.py +++ b/src/leap/bitmask/gui/preferenceswindow.py @@ -40,12 +40,14 @@ class PreferencesWindow(QtGui.QDialog):      """      Window that displays the preferences.      """ -    def __init__(self, parent, srp_auth): +    def __init__(self, parent, srp_auth, provider_config):          """          :param parent: parent object of the PreferencesWindow.          :parent type: QWidget          :param srp_auth: SRPAuth object configured in the main app.          :type srp_auth: SRPAuth +        :param provider_config: ProviderConfig object. +        :type provider_config: ProviderConfig          """          QtGui.QDialog.__init__(self, parent)          self.AUTOMATIC_GATEWAY_LABEL = self.tr("Automatic") @@ -72,6 +74,36 @@ class PreferencesWindow(QtGui.QDialog):          else:              self._add_configured_providers() +        pw_enabled = False + +        # check if the user is logged in +        if srp_auth is not None and srp_auth.get_token() is not None: +            # check if provider has 'mx' ... +            domain = provider_config.get_domain() +            self._select_provider_by_name(domain) +            if provider_config.provides_mx(): +                enabled_services = self._settings.get_enabled_services(domain) +                mx_name = get_service_display_name('mx') + +                # ... and if the user have it enabled +                if 'mx' not in enabled_services: +                    msg = self.tr("You need to enable {0} in order to change " +                                  "the password.".format(mx_name)) +                    self._set_password_change_status(msg, error=True) +                else: +                    msg = self.tr( +                        "You need to wait until {0} is ready in " +                        "order to change the password.".format(mx_name)) +                    self._set_password_change_status(msg) +            else: +                pw_enabled = True +        else: +            msg = self.tr( +                "In order to change your password you need to be logged in.") +            self._set_password_change_status(msg) + +        self.ui.gbPasswordChange.setEnabled(pw_enabled) +      def set_soledad_ready(self, soledad):          """          SLOT @@ -84,6 +116,7 @@ class PreferencesWindow(QtGui.QDialog):          :type soledad: Soledad          """          self._soledad = soledad +        self.ui.lblPasswordChangeStatus.setVisible(False)          self.ui.gbPasswordChange.setEnabled(True)      def _set_password_change_status(self, status, error=False, success=False): @@ -98,6 +131,9 @@ class PreferencesWindow(QtGui.QDialog):          elif success:              status = "<font color='green'><b>%s</b></font>" % (status,) +        if not self.ui.gbPasswordChange.isEnabled(): +            status = "<font color='black'>%s</font>" % (status,) +          self.ui.lblPasswordChangeStatus.setVisible(True)          self.ui.lblPasswordChangeStatus.setText(status) @@ -218,6 +254,16 @@ class PreferencesWindow(QtGui.QDialog):          for provider in self._settings.get_configured_providers():              self.ui.cbProvidersServices.addItem(provider) +    def _select_provider_by_name(self, name): +        """ +        Given a provider name/domain, selects it in the combobox. + +        :param name: name or domain for the provider +        :type name: str +        """ +        provider_index = self.ui.cbProvidersServices.findText(name) +        self.ui.cbProvidersServices.setCurrentIndex(provider_index) +      def _service_selection_changed(self, service, state):          """          SLOT diff --git a/src/leap/bitmask/services/mail/imap.py b/src/leap/bitmask/services/mail/imap.py index 4828180e..2667f156 100644 --- a/src/leap/bitmask/services/mail/imap.py +++ b/src/leap/bitmask/services/mail/imap.py @@ -41,9 +41,10 @@ def get_mail_check_period():      try:          period = int(period_str)      except (ValueError, TypeError): -        logger.warning("BAD value found for %s: %s" % ( -            INCOMING_CHECK_PERIOD_ENV, -            period_str)) +        if period is not None: +            logger.warning("BAD value found for %s: %s" % ( +                INCOMING_CHECK_PERIOD_ENV, +                period_str))      except Exception as exc:          logger.warning("Unhandled error while getting %s: %r" % (              INCOMING_CHECK_PERIOD_ENV, diff --git a/src/leap/bitmask/services/soledad/soledadbootstrapper.py b/src/leap/bitmask/services/soledad/soledadbootstrapper.py index 63596398..54ef67eb 100644 --- a/src/leap/bitmask/services/soledad/soledadbootstrapper.py +++ b/src/leap/bitmask/services/soledad/soledadbootstrapper.py @@ -41,7 +41,7 @@ from leap.common.check import leap_assert, leap_assert_type, leap_check  from leap.common.files import which  from leap.keymanager import KeyManager, openpgp  from leap.keymanager.errors import KeyNotFound -from leap.soledad.client import Soledad +from leap.soledad.client import Soledad, BootstrapSequenceError  logger = logging.getLogger(__name__) @@ -260,7 +260,10 @@ class SoledadBootstrapper(AbstractBootstrapper):              logger.debug("SOLEDAD initialization TIMED OUT...")              self.soledad_timeout.emit()          except socket.error as exc: -            logger.error("Socket error while initializing soledad") +            logger.warning("Socket error while initializing soledad") +            self.soledad_timeout.emit() +        except BootstrapSequenceError as exc: +            logger.warning("Error while initializing soledad")              self.soledad_timeout.emit()          # unrecoverable | 
