~elachuni/software-center/purchase-progress-ui

« back to all changes in this revision

Viewing changes to softwarecenter/backend/reviews/rnr_helpers.py

  • Committer: Anthony Lenton
  • Date: 2012-01-18 21:19:28 UTC
  • Revision ID: anthony.lenton@canonical.com-20120118211928-56jt849o1ybqbetk
Attempted to login by token during purchase setup.

Show diffs side-by-side

added added

removed removed

Lines of Context:
46
46
 
47
47
from gettext import gettext as _
48
48
 
49
 
from softwarecenter.backend.ubuntusso import get_ubuntu_sso_backend
50
 
 
51
49
import piston_mini_client
52
50
 
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
64
61
from softwarecenter.ui.gtk3.widgets.stars import ReactiveStar
65
62
 
66
63
 
 
64
from softwarecenter.backend.login_sso import SSOLogInHandler
67
65
from softwarecenter.backend.piston.rnrclient import RatingsAndReviewsAPI
68
66
from softwarecenter.backend.piston.rnrclient_pristine import ReviewRequest
69
67
 
439
437
        self.status_spinner.start()
440
438
        self.submit_window.show()
441
439
        # now run the loop
442
 
        self.login()
 
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,
 
445
            self._login_error)
443
446
 
444
447
    def quit(self, exitcode=0):
445
448
        sys.exit(exitcode)
457
460
            #~ return None
458
461
        #~ return spell
459
462
 
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)
469
 
        if show_register:
470
 
            self.sso.login_or_register()
471
 
        else:
472
 
            self.sso.login()
473
 
 
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"))
477
 
 
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 
486
 
        # if its expired
487
 
        self.ssoapi.whoami()
488
 
 
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)
494
468
 
495
 
    def _whoami_error(self, ssologin, e):
496
 
        logging.error("whoami error '%s'" % e)
497
 
        # show error
 
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)
500
473
 
501
474
    def login_successful(self, display_name):
502
475
        """ callback when the login was successful """