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 |