Skip to content

Instantly share code, notes, and snippets.

@ThiefMaster
Last active February 12, 2020 11:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ThiefMaster/b9e9c9d663941b9be7e5aafd49934884 to your computer and use it in GitHub Desktop.
Save ThiefMaster/b9e9c9d663941b9be7e5aafd49934884 to your computer and use it in GitHub Desktop.
from indico.core.db import db
from indico.modules.users import User
from indico.modules.users.models.emails import UserEmail
from indico.web.flask.app import make_app
def sync_user_email(user):
identity = user._get_synced_identity(refresh=True)
if identity is None:
return
email = identity.data.get('email')
if not email:
return
email = email.lower()
if email in user.secondary_emails:
user.make_email_primary(email)
elif UserEmail.query.filter_by(is_user_deleted=False, email=email).join(User).filter(~User.is_pending).has_rows():
print 'Email used by another user!'
return
else:
user.secondary_emails.add(email)
user.make_email_primary(email)
db.session.flush()
with make_app().app_context():
for user in User.query.filter_by(is_deleted=False):
sync_user_email(user)
db.session.commit()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment