Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def is_available_username(name):
- # print("profiles.models.is_available_username('{n}')".format(n=name))
- try:
- User.objects.get(username=name)
- except User.DoesNotExist:
- return True
- else:
- return False
- def make_a_user(first_name, last_name, verbose=False, **kwargs):
- # print("profiles.models.make_a_user('{f}', '{l}')".format(f=first_name, l=last_name))
- flat_first_name = fmt.strip_and_compact_str(cast.to_ascii(first_name).lower()).replace(' ', '')
- flat_last_name = fmt.strip_and_compact_str(cast.to_ascii(last_name).lower()).replace(' ', '')
- if 'email' in kwargs:
- flat_email = fmt.strip_and_compact_str(cast.to_ascii(kwargs['email']).lower()).replace(' ', '')
- else:
- flat_email = None
- if verbose:
- print('*** flat_first_name: {}'.format(flat_first_name))
- print('*** flat_last_name: {}'.format(flat_last_name))
- print('*** flat_email: {}'.format(flat_email))
- # Given:
- # first_name = 'Jon'
- # last_name = 'Doe'
- # email = 'Jon76@aol.com'
- # zip_code = 90210
- #
- # ...we'll try:
- #
- # jondoe
- username_attempts = [
- '{f}{l}'.format(f=flat_first_name, l=flat_last_name),
- ]
- # jdoe
- try:
- username_attempts.append('{f}{l}'.format(f=flat_first_name[0], l=flat_last_name))
- except:
- pass
- # doe
- try:
- username_attempts.append(flat_last_name)
- except:
- pass
- # jon76
- if flat_email:
- username_attempts.append(flat_email.split('@'))
- # jondoe90210
- if 'zipcode' in kwargs:
- arg_zip = extract.just_numbers(kwargs['zipcode'])
- username_attempts.append('{f}{l}{zip}'.format(f=flat_first_name, l=flat_last_name, zip=arg_zip))
- # jondoeXX <- where XX is a two-digit, random number
- username_attempts.append('{f}{l}{ran}'.format(f=flat_first_name, l=flat_last_name, ran=randint(10, 99)))
- username_attempts.append('{f}{l}{ran}'.format(f=flat_first_name, l=flat_last_name, ran=randint(10, 99)))
- username_attempts.append('{f}{l}{ran}'.format(f=flat_first_name, l=flat_last_name, ran=randint(10, 99)))
- # something random as a fallback, should the above all be taken
- username_attempts.append(str(uuid.uuid4()).replace('-', '')[:12])
- username_attempts.append(str(uuid.uuid4()).replace('-', '')[:12])
- if verbose:
- print('*** username_attempts: {}'.format(username_attempts))
- new_username = None
- for un in username_attempts:
- if verbose:
- print('*** trying username: {}'.format(un))
- if is_available_username(un):
- if verbose:
- print('*** username is available!: {}'.format(un))
- new_username = un
- break
- if new_username:
- if verbose:
- print('*** calling create_user()')
- the_user = User.objects.create_user(username=new_username, password=str(uuid.uuid4()))
- if 'email' in kwargs and kwargs['email']:
- the_user.email = kwargs['email']
- if first_name:
- the_user.first_name = first_name
- if last_name:
- the_user.last_name = last_name
- the_user.save()
- # Create the UserProfile too
- try:
- up = the_user.userprofile
- except: # RelatedObjectDoesNotExist
- up = UserProfile(user=the_user)
- up.save()
- # Success
- return the_user
- # Fail
- return None
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement