import logging from pingcap_sso.discourse.models import ( DiscourseSingleSignOnRecord ) from pingcap_sso.models import User logger = logging.getLogger(__name__) def _get_sso_user(asktug_user): if not asktug_user: return None if asktug_user.id < 0: # It's a bot, does not have sso account. return None try: external_id = DiscourseSingleSignOnRecord.objects.get(user=asktug_user).external_id sso_user = User.objects.get(openid=external_id) return sso_user except DiscourseSingleSignOnRecord.DoesNotExist: logger.error('AskTUG user({}) do not have single-sign-on record'.format(asktug_user.id)) except User.DoesNotExist: logger.error('SSO user does not found by external_id {}'.format(external_id)) return None