Fix bug where the login service ID doesn't exist

This commit is contained in:
Joseph Schorr 2017-02-09 12:52:44 -08:00
parent 6736e69ebd
commit 421c5d6012

View file

@ -370,6 +370,13 @@ def update_user_metadata(user, given_name=None, family_name=None, company=None):
remove_user_prompt(user, UserPromptTypes.ENTER_COMPANY) remove_user_prompt(user, UserPromptTypes.ENTER_COMPANY)
def _get_login_service(service_id):
try:
return LoginService.get(LoginService.name == service_id)
except LoginService.DoesNotExist:
return LoginService.create(name=service_id)
def create_federated_user(username, email, service_id, service_ident, def create_federated_user(username, email, service_id, service_ident,
set_password_notification, metadata={}, set_password_notification, metadata={},
email_required=True, prompts=tuple()): email_required=True, prompts=tuple()):
@ -380,12 +387,7 @@ def create_federated_user(username, email, service_id, service_ident,
new_user.verified = True new_user.verified = True
new_user.save() new_user.save()
try: FederatedLogin.create(user=new_user, service=_get_login_service(service_id),
service = LoginService.get(LoginService.name == service_id)
except LoginService.DoesNotExist:
service = LoginService.create(name=service_id)
FederatedLogin.create(user=new_user, service=service,
service_ident=service_ident, service_ident=service_ident,
metadata_json=json.dumps(metadata)) metadata_json=json.dumps(metadata))
@ -395,10 +397,10 @@ def create_federated_user(username, email, service_id, service_ident,
return new_user return new_user
def attach_federated_login(user, service_id, service_ident, metadata={}): def attach_federated_login(user, service_id, service_ident, metadata=None):
service = LoginService.get(LoginService.name == service_id) service = _get_login_service(service_id)
FederatedLogin.create(user=user, service=service, service_ident=service_ident, FederatedLogin.create(user=user, service=service, service_ident=service_ident,
metadata_json=json.dumps(metadata)) metadata_json=json.dumps(metadata or {}))
return user return user