diff --git a/apiserver/generate_users.py b/apiserver/generate_users.py new file mode 100755 index 0000000..90866e3 --- /dev/null +++ b/apiserver/generate_users.py @@ -0,0 +1,78 @@ +import django, sys, os +os.environ['DJANGO_SETTINGS_MODULE'] = 'apiserver.settings' +django.setup() + +from django.contrib.auth.models import User + +from apiserver.api import models, utils +from uuid import uuid4 +import re + +random_email = lambda: 'spaceport-' + str(uuid4()).split('-')[0] + '@protospace.ca' + +members = models.Member.objects.all() + +print('Deleting duplicates...') + +for mid in [5203, 5257, 5261, 5277, 5278, 5299, 5307, 5310, 5240]: + member = models.Member.objects.get(id=mid) + print('Deleting:', member.first_name, member.last_name) + member.delete() + +print() +print('Generating Users') + +count = 0 + +for member in members: + if member.user: + continue + + print('Member', member.id, member.first_name, member.last_name) + + if not member.first_name.isalpha(): + print(' Non-alpha first name.') + + if not member.last_name.isalpha(): + print(' Non-alpha last name.') + + first_name = member.first_name.lower() + last_name = member.last_name.lower() + + first_name = re.sub(r'[^a-z ]+', '', first_name) + last_name = re.sub(r'[^a-z ]+', '', last_name) + + first_name = first_name.replace(' ', '.') + last_name = last_name.replace(' ', '.') + + username = first_name + '.' + last_name + print(' Username:', username) + + if member.old_email: + email = member.old_email + else: + email = random_email() + print(' No email, using:', email) + + user = User.objects.create_user(username, email, str(uuid4())) + + member.user = user + member.save() + + x = models.Transaction.objects.filter(member_id=member.id) + x.update(user=user) + print(' Linked', x.count(), 'transactions') + + x = models.Card.objects.filter(member_id=member.id) + x.update(user=user) + print(' Linked', x.count(), 'cards') + + x = models.Training.objects.filter(member_id=member.id) + x.update(user=user) + print(' Linked', x.count(), 'trainings') + + + count += 1 + print() + +print('Generated', count, 'users.')