import pytz import factory import factory.fuzzy from functools import partial from django.contrib.auth import get_user_model from factories.providers import CustomDataProvider from myauth.models import ConfirmEmail from customer.models import UserProfile, License, BankAccount USER_PASSWORD = 'test' factory.Faker.add_provider(CustomDataProvider) Faker = partial(factory.Faker, locale='ru_RU') class ProfileFactory(factory.django.DjangoModelFactory): profile_type = factory.Iterator([1, 2]) boss_surname = Faker('last_name') boss_name = Faker('first_name') boss_midname = Faker('middle_name') 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') address = Faker('address') jur_address = Faker('address') real_address = Faker('address') phone = Faker('phone_number') fax = Faker('phone_number') email = Faker('email') site = Faker('url') svid_gos_reg = factory.Faker('isbn10') ip_reg_date = factory.Faker('date') name = Faker('company') full_name = Faker('company') kpp = factory.Faker('kpp') boss_title = Faker('job') na_osnovanii = factory.fuzzy.FuzzyChoice(['устава', 'положения']) active = True confirmed = True user_session_key = Faker('sha1') class Meta: model = UserProfile class UserFactory(factory.django.DjangoModelFactory): first_name = Faker('first_name') last_name = Faker('last_name') username = Faker('user_name') email = Faker('email') password = factory.PostGenerationMethodCall('set_password', USER_PASSWORD) is_active = True is_staff = False date_joined = Faker( 'past_datetime', start_date='-30d', tzinfo=pytz.UTC ) profile = factory.SubFactory(ProfileFactory) class Meta: model = get_user_model() django_get_or_create = ('username',) class ConfirmEmailFactory(factory.django.DjangoModelFactory): user = factory.SubFactory(UserFactory) is_confirmed = True class Meta: model = ConfirmEmail class LicenseFactory(factory.django.DjangoModelFactory): company = factory.SubFactory(ProfileFactory) term = factory.fuzzy.FuzzyChoice([1, 6, 12, 24]) date_from = Faker( 'past_datetime', start_date='-30d', tzinfo=pytz.UTC ) date_to = Faker( 'future_datetime', end_date='+30d', tzinfo=pytz.UTC ) payform = factory.fuzzy.FuzzyChoice([0, 1]) status = factory.fuzzy.FuzzyChoice([1, 2]) order_date = Faker( 'past_datetime', start_date='-30d', tzinfo=pytz.UTC ) paid_date = Faker( 'past_datetime', start_date='-30d', tzinfo=pytz.UTC ) pay_sum = factory.fuzzy.FuzzyChoice([100, 200, 1000, 2000]) deleted = False 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