From e0c2c839bbd8f5d5bc3112379c1f411d3374c5da Mon Sep 17 00:00:00 2001 From: Dmitriy Shesterkin Date: Sat, 8 Jul 2017 16:49:10 +0300 Subject: [PATCH] add factories for dumy data --- src/commons/management/__init__.py | 0 src/commons/management/commands/__init__.py | 1 + src/commons/management/commands/dummydata.py | 36 ++++++++++++++++++++ src/customer/managers.py | 2 +- src/factories/models.py | 28 +++++++++++---- src/factories/providers.py | 14 +++++--- 6 files changed, 70 insertions(+), 11 deletions(-) create mode 100644 src/commons/management/__init__.py create mode 100644 src/commons/management/commands/__init__.py create mode 100644 src/commons/management/commands/dummydata.py diff --git a/src/commons/management/__init__.py b/src/commons/management/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/commons/management/commands/__init__.py b/src/commons/management/commands/__init__.py new file mode 100644 index 0000000..40a96af --- /dev/null +++ b/src/commons/management/commands/__init__.py @@ -0,0 +1 @@ +# -*- coding: utf-8 -*- diff --git a/src/commons/management/commands/dummydata.py b/src/commons/management/commands/dummydata.py new file mode 100644 index 0000000..4579439 --- /dev/null +++ b/src/commons/management/commands/dummydata.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.') diff --git a/src/customer/managers.py b/src/customer/managers.py index 420c782..9253ccb 100644 --- a/src/customer/managers.py +++ b/src/customer/managers.py @@ -23,7 +23,7 @@ class UserProfileFiltersManager(models.Manager): try: filters = self.get(company=user.profile) except ObjectDoesNotExist: - filters = self.create_filters(company=user.profile) + filters = self.create_filters(user) filters.save() return filters diff --git a/src/factories/models.py b/src/factories/models.py index db64844..9704b4b 100755 --- a/src/factories/models.py +++ b/src/factories/models.py @@ -9,7 +9,7 @@ from django.contrib.auth import get_user_model from factories.providers import CustomDataProvider from myauth.models import ConfirmEmail -from customer.models import UserProfile, License +from customer.models import UserProfile, License, BankAccount USER_PASSWORD = 'test' @@ -23,9 +23,9 @@ class ProfileFactory(factory.django.DjangoModelFactory): boss_surname = Faker('last_name') boss_name = Faker('first_name') boss_midname = Faker('middle_name') - inn = str(factory.Faker('inn')) - ogrn = str(factory.Faker('isbn10')) - okpo = str(factory.Faker('isbn10')) + inn = factory.Faker('inn') + ogrn = factory.Faker('ogrn') + okpo = factory.Faker('okpo') glavbuh_surname = Faker('last_name') glavbuh_name = Faker('first_name') glavbuh_midname = Faker('middle_name') @@ -39,8 +39,8 @@ class ProfileFactory(factory.django.DjangoModelFactory): svid_gos_reg = factory.Faker('isbn10') ip_reg_date = factory.Faker('date') name = Faker('company') - full_name = f'{Faker("company_prefix")} {Faker("company")}' - kpp = factory.Faker('ean8') + full_name = Faker('company') + kpp = factory.Faker('kpp') boss_title = Faker('job') na_osnovanii = factory.fuzzy.FuzzyChoice(['устава', 'положения']) active = True @@ -110,3 +110,19 @@ class LicenseFactory(factory.django.DjangoModelFactory): class Meta: 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 diff --git a/src/factories/providers.py b/src/factories/providers.py index f128fcf..231b7f1 100644 --- a/src/factories/providers.py +++ b/src/factories/providers.py @@ -12,16 +12,22 @@ def random_digits(n): class CustomDataProvider(BaseProvider): def inn(self): - return random_digits(12) + return str(random_digits(12)) 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): return random_digits(25) def bik(self): - return random_digits(9) + return str(random_digits(9)) def corr_acc(self): - return random_digits(20) + return str(random_digits(20))