app/soc/logic/site/id_user.py
changeset 262 52a42831d9d6
parent 245 b14c2c4d3484
child 263 9b39d93b677f
equal deleted inserted replaced
261:76c8de298e98 262:52a42831d9d6
   263     return False
   263     return False
   264   
   264   
   265   return user.is_developer
   265   return user.is_developer
   266 
   266 
   267 
   267 
       
   268 def isIdAvailable(new_id, existing_user=None, existing_key_name=None):
       
   269   """Returns True if Google Account is available for use by existing User.
       
   270   
       
   271   Args:
       
   272     new_id: a Google Account (users.User) object with a (possibly) new email
       
   273     existing_user: an existing User entity; default is None, in which case
       
   274       existing_key_name is used to look up the User entity
       
   275     existing_key_name: the key_name of an existing User entity, used
       
   276       when existing_user is not supplied; default is None
       
   277   """
       
   278   if not existing_user:
       
   279     existing_user = getUserFromKeyName(existing_key_name)
       
   280 
       
   281   if existing_user:
       
   282     old_email = existing_user.id.email()
       
   283   else:
       
   284     old_email = None
       
   285 
       
   286   if new_id.email() == old_email:
       
   287     # "new" email is same as existing User wanting it, so it is "available"
       
   288     return True
       
   289   # else: "new" email truly is new to the existing User, so keep checking
       
   290 
       
   291   if not isIdUser(new_id):
       
   292     # new email address also does not belong to any other User,
       
   293     # so it is available
       
   294     return True
       
   295 
       
   296   # email does not already belong to this User, but to some other User
       
   297   return False
       
   298 
       
   299 
   268 def getUserFromLinkName(link_name):
   300 def getUserFromLinkName(link_name):
   269   """Returns User entity for link_name or None if not found.
   301   """Returns User entity for link_name or None if not found.
   270     
   302     
   271   Args:
   303   Args:
   272     link_name: link name used in URLs to identify user
   304     link_name: link name used in URLs to identify user