47
47
from gettext import gettext as _
49
from softwarecenter.backend.ubuntusso import get_ubuntu_sso_backend
51
49
import piston_mini_client
53
51
from softwarecenter.paths import SOFTWARE_CENTER_CONFIG_DIR
54
52
from softwarecenter.enums import Icons
55
53
from softwarecenter.config import get_config
56
54
from softwarecenter.distro import get_distro, get_current_arch
57
from softwarecenter.backend.login_sso import get_sso_backend
58
55
from softwarecenter.backend.reviews import Review
59
56
from softwarecenter.db.database import Application
60
57
from softwarecenter.gwibber_helper import GwibberHelper, GwibberHelperMock
439
437
self.status_spinner.start()
440
438
self.submit_window.show()
441
439
# now run the loop
440
login_handler = SSOLogInHandler(
441
help_text=_("To review software or to report abuse you need to "
442
"sign in to a Ubuntu Single Sign-On account."),
443
parent_xid=self._get_parent_xid_for_login_window())
444
login_handler.login(self._login_success,
444
447
def quit(self, exitcode=0):
445
448
sys.exit(exitcode)
460
def login(self, show_register=True):
461
logging.debug("login()")
462
login_window_xid = self._get_parent_xid_for_login_window()
463
help_text = _("To review software or to report abuse you need to "
464
"sign in to a Ubuntu Single Sign-On account.")
465
self.sso = get_sso_backend(login_window_xid,
466
self.appname, help_text)
467
self.sso.connect("login-successful", self._maybe_login_successful)
468
self.sso.connect("login-canceled", self._login_canceled)
470
self.sso.login_or_register()
474
def _login_canceled(self, sso):
475
self.status_spinner.hide()
476
self.login_status_label.set_markup('<b><big>%s</big></b>' % _("Login was canceled"))
478
def _maybe_login_successful(self, sso, oauth_result):
479
""" called after we have the token, then we go and figure out our name """
480
logging.debug("_maybe_login_successful")
481
self.token = oauth_result
482
self.ssoapi = get_ubuntu_sso_backend()
483
self.ssoapi.connect("whoami", self._whoami_done)
484
self.ssoapi.connect("error", self._whoami_error)
485
# this will automatically verify the token and retrigger login
489
def _whoami_done(self, ssologin, result):
463
def _login_success(self, result):
490
464
logging.debug("_whoami_done")
491
465
self.display_name = result["displayname"]
492
466
self._create_gratings_api()
493
467
self.login_successful(self.display_name)
495
def _whoami_error(self, ssologin, e):
496
logging.error("whoami error '%s'" % e)
469
def _login_error(self, message):
470
logging.error("login error '%s'" % message)
498
471
self.status_spinner.hide()
499
self.login_status_label.set_markup('<b><big>%s</big></b>' % _("Failed to log in"))
472
self.login_status_label.set_markup('<b><big>%s</big></b>' % message)
501
474
def login_successful(self, display_name):
502
475
""" callback when the login was successful """