add factories for dumy data

prod
Dmitriy Shesterkin 9 years ago
parent 7f42260960
commit e0c2c839bb
  1. 0
      src/commons/management/__init__.py
  2. 1
      src/commons/management/commands/__init__.py
  3. 36
      src/commons/management/commands/dummydata.py
  4. 2
      src/customer/managers.py
  5. 28
      src/factories/models.py
  6. 14
      src/factories/providers.py

@ -0,0 +1,36 @@
# -*- coding: utf-8 -*-
from random import randint
from django.conf import settings
from django.core.management.base import BaseCommand
from factories import models as f
from myauth.models import ConfirmEmail
class Command(BaseCommand):
help = 'Create dummy data'
def add_arguments(self, parser):
parser.add_argument('--number', nargs='+', type=int, default=[1])
def handle(self, *args, **options):
for i in range(1, options['number'][0] + 1):
self.create_user()
def create_user(self):
user = f.UserFactory()
confirm, created = ConfirmEmail.objects.get_or_create(user=user)
confirm.is_confirmed = True
confirm.save()
bank_account = f.BankAccountFactory()
bank_account.company = user.profile
bank_account.save()
lic = f.LicenseFactory()
lic.company = user.profile
lic.save()
self.stdout.write(f'[{__name__}] User {user.pk} created.')

@ -23,7 +23,7 @@ class UserProfileFiltersManager(models.Manager):
try: try:
filters = self.get(company=user.profile) filters = self.get(company=user.profile)
except ObjectDoesNotExist: except ObjectDoesNotExist:
filters = self.create_filters(company=user.profile) filters = self.create_filters(user)
filters.save() filters.save()
return filters return filters

@ -9,7 +9,7 @@ from django.contrib.auth import get_user_model
from factories.providers import CustomDataProvider from factories.providers import CustomDataProvider
from myauth.models import ConfirmEmail from myauth.models import ConfirmEmail
from customer.models import UserProfile, License from customer.models import UserProfile, License, BankAccount
USER_PASSWORD = 'test' USER_PASSWORD = 'test'
@ -23,9 +23,9 @@ class ProfileFactory(factory.django.DjangoModelFactory):
boss_surname = Faker('last_name') boss_surname = Faker('last_name')
boss_name = Faker('first_name') boss_name = Faker('first_name')
boss_midname = Faker('middle_name') boss_midname = Faker('middle_name')
inn = str(factory.Faker('inn')) inn = factory.Faker('inn')
ogrn = str(factory.Faker('isbn10')) ogrn = factory.Faker('ogrn')
okpo = str(factory.Faker('isbn10')) okpo = factory.Faker('okpo')
glavbuh_surname = Faker('last_name') glavbuh_surname = Faker('last_name')
glavbuh_name = Faker('first_name') glavbuh_name = Faker('first_name')
glavbuh_midname = Faker('middle_name') glavbuh_midname = Faker('middle_name')
@ -39,8 +39,8 @@ class ProfileFactory(factory.django.DjangoModelFactory):
svid_gos_reg = factory.Faker('isbn10') svid_gos_reg = factory.Faker('isbn10')
ip_reg_date = factory.Faker('date') ip_reg_date = factory.Faker('date')
name = Faker('company') name = Faker('company')
full_name = f'{Faker("company_prefix")} {Faker("company")}' full_name = Faker('company')
kpp = factory.Faker('ean8') kpp = factory.Faker('kpp')
boss_title = Faker('job') boss_title = Faker('job')
na_osnovanii = factory.fuzzy.FuzzyChoice(['устава', 'положения']) na_osnovanii = factory.fuzzy.FuzzyChoice(['устава', 'положения'])
active = True active = True
@ -110,3 +110,19 @@ class LicenseFactory(factory.django.DjangoModelFactory):
class Meta: class Meta:
model = License model = License
class BankAccountFactory(factory.django.DjangoModelFactory):
company = factory.SubFactory(ProfileFactory)
bik = factory.Faker('bik')
name = Faker('company')
short_name = Faker('company')
korr_account = factory.Faker('corr_acc')
account = factory.Faker('corr_acc')
is_main = True
class Meta:
model = BankAccount

@ -12,16 +12,22 @@ def random_digits(n):
class CustomDataProvider(BaseProvider): class CustomDataProvider(BaseProvider):
def inn(self): def inn(self):
return random_digits(12) return str(random_digits(12))
def kpp(self): def kpp(self):
return random_digits(9) return str(random_digits(9))
def ogrn(self):
return str(random_digits(15))
def okpo(self):
return str(random_digits(10))
def checking_account(self): def checking_account(self):
return random_digits(25) return random_digits(25)
def bik(self): def bik(self):
return random_digits(9) return str(random_digits(9))
def corr_acc(self): def corr_acc(self):
return random_digits(20) return str(random_digits(20))

Loading…
Cancel
Save