from ubuntu_sso.qt.ui.proxy_credentials_dialog_ui import Ui_ProxyCredsDialog from ubuntu_sso.utils import compat from ubuntu_sso.utils.ui import ( CANCEL_BUTTON, PROXY_CREDS_DIALOG_TITLE, PROXY_CREDS_HEADER, PROXY_CREDS_EXPLANATION, PROXY_CREDS_CONNECTION, PROXY_CREDS_ERROR, PROXY_CREDS_USER_LABEL, PROXY_CREDS_PSWD_LABEL, PROXY_CREDS_HELP_BUTTON, PROXY_CREDS_SAVE_BUTTON, ) logger = setup_gui_logging("ubuntu_sso.qt.proxy_dialog") class ProxyCredsDialog(QDialog): """Dialog used to require the proxy credentials.""" def __init__(self, retry=False, domain=None): """Create a new instance.""" super(ProxyCredsDialog, self).__init__() if domain is None: logger.debug('Domain passed as None.') domain = '' self.domain = domain self.keyring = Keyring() self.ui = Ui_ProxyCredsDialog() self.ui.setupUi(self)
from ubuntu_sso import NO_OP from ubuntu_sso.logger import setup_gui_logging from ubuntu_sso.qt import build_general_error_message from ubuntu_sso.qt.sso_wizard_page import SSOWizardPage from ubuntu_sso.qt.ui.email_verification_ui import Ui_EmailVerificationPage from ubuntu_sso.utils import compat from ubuntu_sso.utils.ui import ( ERROR_EMAIL_TOKEN, NEXT, VERIFICATION_CODE, VERIFY_EMAIL_TITLE, VERIFY_EMAIL_CONTENT, ) logger = setup_gui_logging('ubuntu_sso.email_verification_page') class EmailVerificationPage(SSOWizardPage): """Widget used to input the email verification code.""" ui_class = Ui_EmailVerificationPage registrationSuccess = QtCore.pyqtSignal(compat.text_type) def __init__(self, *args, **kwargs): self.email = '' self.password = '' super(EmailVerificationPage, self).__init__(*args, **kwargs) @property def _signals(self):
from ubuntu_sso import NO_OP from ubuntu_sso.logger import setup_gui_logging, log_call from ubuntu_sso.qt.sso_wizard_page import SSOWizardEnhancedEditPage from ubuntu_sso.qt.ui.forgotten_password_ui import Ui_ForgottenPasswordPage from ubuntu_sso.utils import compat from ubuntu_sso.utils.ui import ( EMAIL_LABEL, FORGOTTEN_PASSWORD_TITLE, FORGOTTEN_PASSWORD_SUBTITLE, is_correct_email, RESET_PASSWORD, REQUEST_PASSWORD_TOKEN_WRONG_EMAIL, ) logger = setup_gui_logging('ubuntu_sso.forgotten_password_page') class ForgottenPasswordPage(SSOWizardEnhancedEditPage): """Widget used to deal with users that forgot the password.""" ui_class = Ui_ForgottenPasswordPage passwordResetTokenSent = QtCore.pyqtSignal(compat.text_type) @property def _signals(self): """The signals to connect to the backend.""" result = { 'PasswordResetTokenSent': self._filter_by_app_name(self.on_password_reset_token_sent), 'PasswordResetError':
USER_SUCCESS, ) from ubuntu_sso.logger import setup_gui_logging from ubuntu_sso.utils import compat from ubuntu_sso.qt import PREFERED_UI_SIZE, WINDOW_TITLE from ubuntu_sso.qt.current_user_sign_in_page import CurrentUserSignInPage from ubuntu_sso.qt.email_verification_page import EmailVerificationPage from ubuntu_sso.qt.error_page import ErrorPage from ubuntu_sso.qt.forgotten_password_page import ForgottenPasswordPage from ubuntu_sso.qt.loadingoverlay import LoadingOverlay from ubuntu_sso.qt.network_detection_page import NetworkDetectionPage from ubuntu_sso.qt.reset_password_page import ResetPasswordPage from ubuntu_sso.qt.setup_account_page import SetupAccountPage from ubuntu_sso.qt.success_page import SuccessPage logger = setup_gui_logging('ubuntu_sso.gui') class UbuntuSSOWizard(QWizard): """Wizard used to create or use sso.""" # definition of the signals raised by the widget recoverableError = pyqtSignal('QString', 'QString') loginSuccess = pyqtSignal('QString', 'QString') registrationSuccess = pyqtSignal('QString', 'QString') def __init__(self, app_name, **kwargs): """Create a new wizard.""" logger.debug('UbuntuSSOWizard: app_name %r, kwargs %r.', app_name, kwargs) parent = kwargs.pop('parent', None)
RESET_PASSWORD, SET_NEW_PASSWORD_LABEL, SUCCESS, TC_BUTTON, TC_NOT_ACCEPTED, VERIFY_EMAIL_LABEL, YES_TO_TC, YES_TO_UPDATES, ) # Instance of 'UbuntuSSOClientGUI' has no 'yyy' member # pylint: disable=E1101 logger = setup_gui_logging('ubuntu_sso.gui.gtk') # pylint: disable=C0103 def parse_color(color): """Parse a string color into Gdk.Color.""" c = Gdk.RGBA() result = c.parse(color) if not result: logger.warning('Could not parse color %r.', color) return c # pylint: enable=C0103 DEFAULT_WIDTH = 30 # To be replaced by values from the theme (LP: #616526) HELP_TEXT_COLOR = parse_color("#bfbfbf")
from ubuntu_sso.qt.ui.current_user_sign_in_ui import Ui_CurrentUserSignInPage from ubuntu_sso.utils import compat from ubuntu_sso.utils.ui import ( CANCEL_BUTTON, CREATE_ACCOUNT_LABEL, EMAIL_LABEL, FORGOTTEN_PASSWORD_BUTTON, is_correct_email, LOGIN_PASSWORD_LABEL, LOGIN_TITLE, LOGIN_SUBTITLE, SIGN_IN_BUTTON, ) logger = setup_gui_logging('ubuntu_sso.current_user_sign_in_page') class CurrentUserSignInPage(SSOWizardPage): """Wizard Page that lets a current user Sign into Ubuntu Single Sign On.""" ui_class = Ui_CurrentUserSignInPage userLoggedIn = QtCore.pyqtSignal(compat.text_type) passwordForgotten = QtCore.pyqtSignal() createAccount = QtCore.pyqtSignal() userNotValidated = QtCore.pyqtSignal(compat.text_type) @property def _signals(self): """The signals to connect to the backend.""" result = {'LoggedIn':
from ubuntu_sso.qt.sso_wizard_page import SSOWizardEnhancedEditPage from ubuntu_sso.qt.ui.reset_password_ui import Ui_ResetPasswordPage from ubuntu_sso.utils import compat from ubuntu_sso.utils.ui import ( is_min_required_password, PASSWORD1_ENTRY, PASSWORD2_ENTRY, PASSWORD_HELP, RESET_CODE_ENTRY, RESET_PASSWORD, RESET_TITLE, RESET_SUBTITLE, ) logger = setup_gui_logging('ubuntu_sso.reset_password_page') class ResetPasswordPage(SSOWizardEnhancedEditPage): """Widget used to allow the user change his password.""" ui_class = Ui_ResetPasswordPage passwordChanged = pyqtSignal(compat.text_type) @property def _signals(self): """The signals to connect to the backend.""" result = { 'PasswordChanged': self._filter_by_app_name(self.on_password_changed), 'PasswordChangeError':
) from twisted.internet import defer from ubuntu_sso import main from ubuntu_sso.constants import APP_NAME, TC_URL, POLICY_URL, PING_URL from ubuntu_sso.logger import setup_gui_logging, log_call from ubuntu_sso.qt import ( ERROR_STYLE, maybe_elide_text, PREFERED_UI_SIZE, TITLE_STYLE, ) from ubuntu_sso.utils.ui import GENERIC_BACKEND_ERROR logger = setup_gui_logging('ubuntu_sso.sso_wizard_page') class WizardHeader(QFrame): """WizardHeader Class for Title and Subtitle in all wizard pages.""" def __init__(self, max_width, parent=None): """Create a new instance.""" super(WizardHeader, self).__init__(parent=parent) self.max_width = max_width self.max_title_width = self.max_width * 0.95 self.max_subtitle_width = self.max_width * 1.8 vbox = QVBoxLayout(self) vbox.setContentsMargins(0, 0, 0, 0) self.title_label = QLabel()
from ubuntu_sso.qt import build_general_error_message, common from ubuntu_sso.qt.sso_wizard_page import SSOWizardEnhancedEditPage from ubuntu_sso.qt.ui.reset_password_ui import Ui_ResetPasswordPage from ubuntu_sso.utils import compat from ubuntu_sso.utils.ui import ( is_min_required_password, PASSWORD1_ENTRY, PASSWORD2_ENTRY, PASSWORD_HELP, RESET_CODE_ENTRY, RESET_PASSWORD, RESET_TITLE, RESET_SUBTITLE, ) logger = setup_gui_logging('ubuntu_sso.reset_password_page') class ResetPasswordPage(SSOWizardEnhancedEditPage): """Widget used to allow the user change his password.""" ui_class = Ui_ResetPasswordPage passwordChanged = pyqtSignal(compat.text_type) @property def _signals(self): """The signals to connect to the backend.""" result = { 'PasswordChanged': self._filter_by_app_name(self.on_password_changed), 'PasswordChangeError':
PASSWORD, PASSWORD1_ENTRY, PASSWORD2_ENTRY, PASSWORD_HELP, PASSWORD_MISMATCH, PASSWORD_TOO_WEAK, PRIVACY_POLICY_TEXT, RETYPE_EMAIL, RETYPE_PASSWORD, SET_UP_ACCOUNT_BUTTON, SIGN_IN_LABEL, TERMS_TEXT, REGISTER_TITLE, ) logger = setup_gui_logging('ubuntu_sso.setup_account_page') ERROR_EMAIL = 'email' class SetupAccountPage(SSOWizardEnhancedEditPage): """Customized Setup Account page for SSO.""" ui_class = Ui_SetUpAccountPage userRegistered = QtCore.pyqtSignal(compat.text_type) signIn = QtCore.pyqtSignal() def __init__(self, *args, **kwargs): self.captcha_file = None self.captcha_id = None self.captcha_received = False
PASSWORD1_ENTRY, PASSWORD2_ENTRY, PASSWORD_HELP, PASSWORD_MISMATCH, PASSWORD_TOO_WEAK, PRIVACY_POLICY_TEXT, RETYPE_EMAIL, RETYPE_PASSWORD, SET_UP_ACCOUNT_BUTTON, SIGN_IN_LABEL, TERMS_TEXT, REGISTER_TITLE, ) logger = setup_gui_logging("ubuntu_sso.setup_account_page") ERROR_EMAIL = "email" class SetupAccountPage(SSOWizardEnhancedEditPage): """Customized Setup Account page for SSO.""" ui_class = Ui_SetUpAccountPage userRegistered = QtCore.pyqtSignal(compat.text_type) signIn = QtCore.pyqtSignal() def __init__(self, *args, **kwargs): self.captcha_file = None self.captcha_id = None self.captcha_received = False
# do not wish to do so, delete this exception statement from your # version. If you delete this exception statement from all source # files in the program, then also delete it here. """The Qt graphical interface for the Ubuntu Single Sign On Client.""" from __future__ import unicode_literals import sys import collections from PyQt4 import QtGui, QtCore from ubuntu_sso.logger import setup_gui_logging from ubuntu_sso.utils.ui import GENERIC_BACKEND_ERROR logger = setup_gui_logging('ubuntu_sso.qt') LINK_STYLE = ('<a href="{link_url}">' '<span style="color:#df2d1f;">{link_text}</span></a>') ERROR_ALL = '__all__' ERROR_STYLE = '<font color="#df2d1f" style="font-size:small"><b>%s</b></font>' ERROR_MESSAGE = 'message' PREFERED_UI_SIZE = {'width': 550, 'height': 525} TITLE_STYLE = '<span style="font-size:xx-large;font-weight:bold;">%s</span>' WINDOW_TITLE = 'Ubuntu Single Sign On' # TODO: There is a pixel discrepancy between Qt on Linux and Windows # and Mac OS X. On Mac OS X, one test fails with the height being # off. For now, we're forcing a different UI height on darwin. if sys.platform == 'darwin': PREFERED_UI_SIZE['height'] = 533
SSL_THIRD_REASON, SSL_CERT_DETAILS, SSL_NOT_SURE, SSL_REMEMBER_DECISION, SSL_HELP_BUTTON, SSL_CONNECT_BUTTON, ) REASONS_TEMPLATE = ('<p>%(explanation)s</p>' '<ul style="margin-left:-10px">' '<li style="margin-bottom:5px;">%(first_reason)s</li>' '<li style="margin-bottom:5px;">%(second_reason)s</li>' '<li>%(third_reason)s</li>' '</ul>') logger = setup_gui_logging("ubuntu_sso.qt.proxy_dialog") assert(resources_rc) class SSLDialog(QDialog): """"Dialog used to show SSL exceptions.""" def __init__(self, app_name, domain=None, details=None, parent=None): """Create a new instance.""" super(SSLDialog, self).__init__() if domain is None: logger.debug('Domain passed as None.') domain = '' self.domain = domain if details is None: logger.debug('Details passed as None.')
from ubuntu_sso.qt.sso_wizard_page import SSOWizardPage from ubuntu_sso.qt.ui.current_user_sign_in_ui import Ui_CurrentUserSignInPage from ubuntu_sso.utils import compat from ubuntu_sso.utils.ui import ( CANCEL_BUTTON, CREATE_ACCOUNT_LABEL, EMAIL_LABEL, FORGOTTEN_PASSWORD_BUTTON, is_correct_email, LOGIN_PASSWORD_LABEL, LOGIN_TITLE, LOGIN_SUBTITLE, SIGN_IN_BUTTON, ) logger = setup_gui_logging('ubuntu_sso.current_user_sign_in_page') class CurrentUserSignInPage(SSOWizardPage): """Wizard Page that lets a current user Sign into Ubuntu Single Sign On.""" ui_class = Ui_CurrentUserSignInPage userLoggedIn = QtCore.pyqtSignal(compat.text_type) passwordForgotten = QtCore.pyqtSignal() createAccount = QtCore.pyqtSignal() userNotValidated = QtCore.pyqtSignal(compat.text_type) @property def _signals(self): """The signals to connect to the backend.""" result = {