def create_account(db_session, email_address, response): # See if the account exists in db, otherwise create it try: account = db_session.query(GmailAccount) \ .filter_by(email_address=email_address).one() except NoResultFound: namespace = Namespace() account = GmailAccount(namespace=namespace) tok = response.get('access_token') expires_in = response.get('expires_in') account.set_access_token(tok, expires_in) account.refresh_token = response.get('refresh_token') account.scope = response.get('scope') account.email_address = response.get('email') account.family_name = response.get('family_name') account.given_name = response.get('given_name') account.name = response.get('name') account.gender = response.get('gender') account.g_id = response.get('id') account.g_user_id = response.get('user_id') account.g_id_token = response.get('id_token') account.link = response.get('link') account.locale = response.get('locale') account.picture = response.get('picture') account.home_domain = response.get('hd') account.client_id = response.get('client_id') account.client_secret = response.get('client_secret') return account
def create_account(db_session, email_address, response): # See if the account exists in db, otherwise create it try: account = db_session.query(GmailAccount) \ .filter_by(email_address=email_address).one() except NoResultFound: namespace = Namespace() account = GmailAccount(namespace=namespace) tok = response.get('access_token') expires_in = response.get('expires_in') account.set_access_token(tok, expires_in) account.refresh_token = response.get('refresh_token') account.scope = response.get('scope') account.email_address = response.get('email') account.family_name = response.get('family_name') account.given_name = response.get('given_name') account.name = response.get('name') account.gender = response.get('gender') account.g_id = response.get('id') account.g_user_id = response.get('user_id') account.g_id_token = response.get('id_token') account.link = response.get('link') account.locale = response.get('locale') account.picture = response.get('picture') account.home_domain = response.get('hd') account.client_id = response.get('client_id') account.client_secret = response.get('client_secret') return account
def create_account(self, db_session, email_address, response): email_address = response.get('email') # See if the account exists in db, otherwise create it try: account = db_session.query(GmailAccount) \ .filter_by(email_address=email_address).one() except NoResultFound: namespace = Namespace() account = GmailAccount(namespace=namespace) # We only get refresh tokens on initial login (or failed credentials) # otherwise, we don't force the login screen and therefore don't get a # refresh token back from google. new_refresh_token = response.get('refresh_token') if new_refresh_token: account.refresh_token = new_refresh_token else: if not account.refresh_token or account.sync_state == 'invalid': # We got a new auth without a refresh token, so we need to back # out and force the auth flow, since we don't already have # a refresh (or the one we have doesn't work.) raise OAuthError("Missing refresh token") tok = response.get('access_token') expires_in = response.get('expires_in') account.set_access_token(tok, expires_in) account.scope = response.get('scope') account.email_address = email_address account.family_name = response.get('family_name') account.given_name = response.get('given_name') account.name = response.get('name') account.gender = response.get('gender') account.g_id = response.get('id') account.g_user_id = response.get('user_id') account.g_id_token = response.get('id_token') account.link = response.get('link') account.locale = response.get('locale') account.picture = response.get('picture') account.home_domain = response.get('hd') account.client_id = response.get('client_id') account.client_secret = response.get('client_secret') account.sync_contacts = response.get('contacts', True) account.sync_events = response.get('events', True) try: self.verify_config(account) except GmailSettingError as e: raise UserRecoverableConfigError(e) # Hack to ensure that account syncs get restarted if they were stopped # because of e.g. invalid credentials and the user re-auths. # TODO(emfree): remove after status overhaul. if account.sync_state != 'running': account.sync_state = None return account
def create_account(self, db_session, email_address, response): email_address = response.get('email') # See if the account exists in db, otherwise create it try: account = db_session.query(GmailAccount) \ .filter_by(email_address=email_address).one() except NoResultFound: namespace = Namespace() account = GmailAccount(namespace=namespace) # We only get refresh tokens on initial login (or failed credentials) # otherwise, we don't force the login screen and therefore don't get a # refresh token back from google. new_refresh_token = response.get('refresh_token') if new_refresh_token: account.refresh_token = new_refresh_token else: if not account.refresh_token or account.sync_state == 'invalid': # We got a new auth without a refresh token, so we need to back # out and force the auth flow, since we don't already have # a refresh (or the one we have doesn't work.) raise OAuthError("Missing refresh token") tok = response.get('access_token') expires_in = response.get('expires_in') account.set_access_token(tok, expires_in) account.scope = response.get('scope') account.email_address = email_address account.family_name = response.get('family_name') account.given_name = response.get('given_name') account.name = response.get('name') account.gender = response.get('gender') account.g_id = response.get('id') account.g_user_id = response.get('user_id') account.g_id_token = response.get('id_token') account.link = response.get('link') account.locale = response.get('locale') account.picture = response.get('picture') account.home_domain = response.get('hd') account.client_id = response.get('client_id') account.client_secret = response.get('client_secret') account.sync_contacts = response.get('contacts', True) account.sync_events = response.get('events', True) try: self.verify_config(account) except GmailSettingError as e: raise UserRecoverableConfigError(e) # Hack to ensure that account syncs get restarted if they were stopped # because of e.g. invalid credentials and the user re-auths. # TODO(emfree): remove after status overhaul. if account.sync_state != 'running': account.sync_state = None return account
def create_account(db_session, response): email_address = response.get('email') # See if the account exists in db, otherwise create it try: account = db_session.query(GmailAccount) \ .filter_by(email_address=email_address).one() except NoResultFound: namespace = Namespace() account = GmailAccount(namespace=namespace) # We only get refresh tokens on initial login (or failed credentials) # otherwise, we don't force the login screen and therefore don't get a # refresh token back from google. new_refresh_token = response.get('refresh_token') if new_refresh_token: account.refresh_token = new_refresh_token tok = response.get('access_token') expires_in = response.get('expires_in') account.set_access_token(tok, expires_in) account.scope = response.get('scope') account.email_address = email_address account.family_name = response.get('family_name') account.given_name = response.get('given_name') account.name = response.get('name') account.gender = response.get('gender') account.g_id = response.get('id') account.g_user_id = response.get('user_id') account.g_id_token = response.get('id_token') account.link = response.get('link') account.locale = response.get('locale') account.picture = response.get('picture') account.home_domain = response.get('hd') account.client_id = response.get('client_id') account.client_secret = response.get('client_secret') return account
def create_account(db_session, response): email_address = response.get('email') # See if the account exists in db, otherwise create it try: account = db_session.query(GmailAccount) \ .filter_by(email_address=email_address).one() except NoResultFound: namespace = Namespace() account = GmailAccount(namespace=namespace) # We only get refresh tokens on initial login (or failed credentials) # otherwise, we don't force the login screen and therefore don't get a # refresh token back from google. new_refresh_token = response.get('refresh_token') if new_refresh_token: account.refresh_token = new_refresh_token tok = response.get('access_token') expires_in = response.get('expires_in') account.set_access_token(tok, expires_in) account.scope = response.get('scope') account.email_address = email_address account.family_name = response.get('family_name') account.given_name = response.get('given_name') account.name = response.get('name') account.gender = response.get('gender') account.g_id = response.get('id') account.g_user_id = response.get('user_id') account.g_id_token = response.get('id_token') account.link = response.get('link') account.locale = response.get('locale') account.picture = response.get('picture') account.home_domain = response.get('hd') account.client_id = response.get('client_id') account.client_secret = response.get('client_secret') return account