You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

101 lines
5.8 KiB

from django.contrib.auth.models import Group, Permission
from django.contrib.contenttypes.models import ContentType
from django.core.management import BaseCommand
from django.utils import timezone
import pydash as _; _.map = _.map_; _.filter = _.filter_
import random
from archilance import util
from common.models import Location
from specializations.models import Specialization
from users.models import User, GENDERS
class Command(BaseCommand):
def handle(self, *args, **options):
print('---------------------------------------')
print('Generating users...')
print('---------------------------------------')
# # Fields:
#
# ('contractor_specializations', 'Relation? True', 'Null? False', '(relation)', 'Hidden? False'),
# ('groups', 'Relation? True', 'Null? False', '(relation)', 'Hidden? False'),
# ('user_permissions', 'Relation? True', 'Null? False', '(relation)', 'Hidden? False'),
# ('answers', 'Relation? True', 'Null? True', '(relation)', 'Hidden? False'),
# ('contractor_financial_info', 'Relation? True', 'Null? True', '(relation)', 'Hidden? False'),
# ('location', 'Relation? True', 'Null? True', '(relation)', 'Hidden? False'),
# ('logentry', 'Relation? True', 'Null? True', '(relation)', 'Hidden? False'),
# ('orders', 'Relation? True', 'Null? True', '(relation)', 'Hidden? False'),
# ('portfolios', 'Relation? True', 'Null? True', '(relation)', 'Hidden? False'),
# ('projects', 'Relation? True', 'Null? True', '(relation)', 'Hidden? False'),
# ('realties', 'Relation? True', 'Null? True', '(relation)', 'Hidden? False'),
# ('recipent_messages', 'Relation? True', 'Null? True', '(relation)', 'Hidden? False'),
# ('recipent_notes', 'Relation? True', 'Null? True', '(relation)', 'Hidden? False'),
# ('registrationprofile', 'Relation? True', 'Null? True', '(relation)', 'Hidden? False'),
# ('reviews', 'Relation? True', 'Null? True', '(relation)', 'Hidden? False'),
# ('sender_messages', 'Relation? True', 'Null? True', '(relation)', 'Hidden? False'),
# ('sender_notes', 'Relation? True', 'Null? True', '(relation)', 'Hidden? False'),
# ('social_auth', 'Relation? True', 'Null? True', '(relation)', 'Hidden? False'),
# ('team', 'Relation? True', 'Null? True', '(relation)', 'Hidden? False'),
# ('Team_users+', 'Relation? True', 'Null? True', '(relation)', 'Hidden? True'),
# ('teams', 'Relation? True', 'Null? True', '(relation)', 'Hidden? False'),
# ('User_contractor_specializations+', 'Relation? True', 'Null? True', '(relation)', 'Hidden? True'),
# ('User_groups+', 'Relation? True', 'Null? True', '(relation)', 'Hidden? True'),
# ('User_user_permissions+', 'Relation? True', 'Null? True', '(relation)', 'Hidden? True'),
# ('work_sell', 'Relation? True', 'Null? True', '(relation)', 'Hidden? False'),
# ('contractor_status', 'Relation? False', 'Null? False', 'Blank? False', 'Hidden? False'),
# ('created', 'Relation? False', 'Null? False', 'Blank? False', 'Hidden? False'),
# ('data_joined', 'Relation? False', 'Null? False', 'Blank? False', 'Hidden? False'),
# ('email', 'Relation? False', 'Null? False', 'Blank? False', 'Hidden? False'),
# ('last_time_visit', 'Relation? False', 'Null? False', 'Blank? False', 'Hidden? False'),
# ('password', 'Relation? False', 'Null? False', 'Blank? False', 'Hidden? False'),
# ('username', 'Relation? False', 'Null? False', 'Blank? False', 'Hidden? False'),
# ('avatar', 'Relation? False', 'Null? False', 'Blank? True', 'Hidden? False'),
# ('cro', 'Relation? False', 'Null? False', 'Blank? True', 'Hidden? False'),
# ('date_of_birth', 'Relation? False', 'Null? True', 'Blank? True', 'Hidden? False'),
# ('first_name', 'Relation? False', 'Null? False', 'Blank? True', 'Hidden? False'),
# ('gender', 'Relation? False', 'Null? False', 'Blank? True', 'Hidden? False'),
# ('id', 'Relation? False', 'Null? False', 'Blank? True', 'Hidden? False'),
# ('is_active', 'Relation? False', 'Null? False', 'Blank? True', 'Hidden? False'),
# ('is_superuser', 'Relation? False', 'Null? False', 'Blank? True', 'Hidden? False'),
# ('last_login', 'Relation? False', 'Null? True', 'Blank? True', 'Hidden? False'),
# ('last_name', 'Relation? False', 'Null? False', 'Blank? True', 'Hidden? False'),
# ('patronym', 'Relation? False', 'Null? False', 'Blank? True', 'Hidden? False'),
# ('phone', 'Relation? False', 'Null? True', 'Blank? True', 'Hidden? False'),
# ('skype', 'Relation? False', 'Null? False', 'Blank? True', 'Hidden? False'),
# ('website', 'Relation? False', 'Null? False', 'Blank? True', 'Hidden? False'),
def create_user(i):
username = 'user-%s' % i
return User.objects.create(
first_name='User-%s' % i,
username=username,
email='%s@example.com' % username,
is_active=True,
contractor_status=_.sample(User.STATUSES)[0],
)
users = _.times(create_user, 50)
contractor_group = Group.objects.get(name='Исполнители')
customer_group = Group.objects.get(name='Заказчики')
for user in users:
user.set_password('123')
user.groups.add(customer_group if user.pk % 2 == 0 else contractor_group)
user.contractor_specializations = Specialization.objects.order_by('?')[:_.random(1, 5)]
user.location = Location.objects.root_nodes()[0].get_descendants().order_by('?').first()
user.save()