update_or_insert_values = {'first_name': store_user_firstname,
'last_name': store_user_lastname,
'email': store_user_mail}
# if '@' not in username:
# # user as username
# # ################
# fields = ['first_name', 'last_name', 'email']
# user_in_db = db(db.auth_user.username == username)
# elif '@' in username:
# # user as email
# # #############
# fields = ['first_name', 'last_name']
# user_in_db = db(db.auth_user.email == username)
if '@' not in username:
# user as username
# ################
fields = ['first_name', 'last_name', 'username', 'email']
update_or_insert_values['username'] = username
elif '@' in username:
# user as email
# #############
fields = ['first_name', 'last_name', 'email']
update_or_insert_values['email'] = username
update_or_insert_values = {f: update_or_insert_values[f] for f in fields}
# if user_in_db.count() > 0:
# actual_values = user_in_db.select(*[db.auth_user[f] for f in fields]).first().as_dict()
# if update_or_insert_values != actual_values: # We don't update record if values are the same
# user_in_db.update(**update_or_insert_values)
# else:
# db.auth_user.insert(**update_or_insert_values)
auth.get_or_create_user(keys=update_or_insert_values, update_fields=fields)
I thought that with this implementation I could get rid of the issue with ldap_auth.py contrib of duplicating user already existing... But it seems that `get_or_create_user()` in that... In the book it says that :