Advertisement
Guest User

Untitled

a guest
May 19th, 2016
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.41 KB | None | 0 0
  1. def is_available_username(name):
  2. # print("profiles.models.is_available_username('{n}')".format(n=name))
  3.  
  4. try:
  5. User.objects.get(username=name)
  6. except User.DoesNotExist:
  7. return True
  8. else:
  9. return False
  10.  
  11.  
  12. def make_a_user(first_name, last_name, verbose=False, **kwargs):
  13. # print("profiles.models.make_a_user('{f}', '{l}')".format(f=first_name, l=last_name))
  14.  
  15. flat_first_name = fmt.strip_and_compact_str(cast.to_ascii(first_name).lower()).replace(' ', '')
  16. flat_last_name = fmt.strip_and_compact_str(cast.to_ascii(last_name).lower()).replace(' ', '')
  17.  
  18. if 'email' in kwargs:
  19. flat_email = fmt.strip_and_compact_str(cast.to_ascii(kwargs['email']).lower()).replace(' ', '')
  20. else:
  21. flat_email = None
  22.  
  23. if verbose:
  24. print('*** flat_first_name: {}'.format(flat_first_name))
  25. print('*** flat_last_name: {}'.format(flat_last_name))
  26. print('*** flat_email: {}'.format(flat_email))
  27.  
  28. # Given:
  29. # first_name = 'Jon'
  30. # last_name = 'Doe'
  31. # email = 'Jon76@aol.com'
  32. # zip_code = 90210
  33. #
  34. # ...we'll try:
  35. #
  36. # jondoe
  37. username_attempts = [
  38. '{f}{l}'.format(f=flat_first_name, l=flat_last_name),
  39. ]
  40.  
  41. # jdoe
  42. try:
  43. username_attempts.append('{f}{l}'.format(f=flat_first_name[0], l=flat_last_name))
  44. except:
  45. pass
  46.  
  47. # doe
  48. try:
  49. username_attempts.append(flat_last_name)
  50. except:
  51. pass
  52.  
  53. # jon76
  54. if flat_email:
  55. username_attempts.append(flat_email.split('@'))
  56.  
  57. # jondoe90210
  58. if 'zipcode' in kwargs:
  59. arg_zip = extract.just_numbers(kwargs['zipcode'])
  60.  
  61. username_attempts.append('{f}{l}{zip}'.format(f=flat_first_name, l=flat_last_name, zip=arg_zip))
  62.  
  63. # jondoeXX <- where XX is a two-digit, random number
  64. username_attempts.append('{f}{l}{ran}'.format(f=flat_first_name, l=flat_last_name, ran=randint(10, 99)))
  65. username_attempts.append('{f}{l}{ran}'.format(f=flat_first_name, l=flat_last_name, ran=randint(10, 99)))
  66. username_attempts.append('{f}{l}{ran}'.format(f=flat_first_name, l=flat_last_name, ran=randint(10, 99)))
  67.  
  68. # something random as a fallback, should the above all be taken
  69. username_attempts.append(str(uuid.uuid4()).replace('-', '')[:12])
  70. username_attempts.append(str(uuid.uuid4()).replace('-', '')[:12])
  71.  
  72. if verbose:
  73. print('*** username_attempts: {}'.format(username_attempts))
  74.  
  75. new_username = None
  76.  
  77. for un in username_attempts:
  78. if verbose:
  79. print('*** trying username: {}'.format(un))
  80.  
  81. if is_available_username(un):
  82. if verbose:
  83. print('*** username is available!: {}'.format(un))
  84.  
  85. new_username = un
  86. break
  87.  
  88. if new_username:
  89. if verbose:
  90. print('*** calling create_user()')
  91.  
  92. the_user = User.objects.create_user(username=new_username, password=str(uuid.uuid4()))
  93.  
  94. if 'email' in kwargs and kwargs['email']:
  95. the_user.email = kwargs['email']
  96.  
  97. if first_name:
  98. the_user.first_name = first_name
  99.  
  100. if last_name:
  101. the_user.last_name = last_name
  102.  
  103. the_user.save()
  104.  
  105. # Create the UserProfile too
  106. try:
  107. up = the_user.userprofile
  108. except: # RelatedObjectDoesNotExist
  109. up = UserProfile(user=the_user)
  110. up.save()
  111.  
  112. # Success
  113. return the_user
  114.  
  115. # Fail
  116. return None
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement