def github_callback_get_account(db, gh_api):
"""Processing GitHub callback action
:param db: Database for storing GitHub user info
:type db: ``flask_sqlalchemy.SQLAlchemy``
:param gh_api: GitHub API client ready for the communication
:type gh_api: ``repocribro.github.GitHubAPI``
:return: User account and flag if it's new one
:rtype: tuple of ``repocribro.models.UserAccount``, bool
"""
user_data = gh_api.get('/user').data
gh_user = db.session.query(User).filter(
User.github_id == user_data['id']
).first()
is_new = False
if gh_user is None:
user_account = UserAccount()
db.session.add(user_account)
gh_user = User.create_from_dict(user_data, user_account)
db.session.add(gh_user)
db.session.commit()
is_new = True
return gh_user.user_account, is_new
评论列表
文章目录