class DealFactory(DjangoModelFactory): tenant = SubFactory(TenantFactory) account = SubFactory(AccountFactory, tenant=SelfAttribute('..tenant')) contact = SubFactory(ContactFactory, tenant=SelfAttribute('..tenant')) amount_once = FuzzyDecimal(42.7) amount_recurring = FuzzyDecimal(42.7) assigned_to = SubFactory(LilyUserFactory, tenant=SelfAttribute('..tenant')) card_sent = FuzzyChoice([True, False]) contacted_by = SubFactory(DealContactedByFactory, tenant=SelfAttribute('..tenant')) currency = FuzzyChoice(dict(CURRENCIES).keys()) found_through = SubFactory(DealFoundThroughFactory, tenant=SelfAttribute('..tenant')) is_checked = FuzzyChoice([True, False]) name = LazyAttribute(lambda o: faker.word()) new_business = FuzzyChoice([True, False]) next_step = SubFactory(DealNextStepFactory, tenant=SelfAttribute('..tenant')) next_step_date = FuzzyDate(past_date, future_date) status = SubFactory(DealStatusFactory, tenant=SelfAttribute('..tenant')) twitter_checked = FuzzyChoice([True, False]) why_customer = SubFactory(DealWhyCustomerFactory, tenant=SelfAttribute('..tenant')) why_lost = SubFactory(DealWhyLostFactory, tenant=SelfAttribute('..tenant')) closed_date = LazyAttribute( lambda o: faker.date_time_between_dates(past_date, current_date, utc) if o.status.is_won or o.status.is_lost else None) class Meta: model = Deal
class TableFactory(factory.django.DjangoModelFactory): class Meta: model = Table max_capacity = FuzzyInteger(2, 12) shape = factory.Iterator(['rectangular', 'oval']) coordinates = FuzzyDecimal(0, 100) size = FuzzyDecimal(0, 100)
class TrafficFactory(WuFactory): class Meta: model = Traffic # TODO: `unique` constraint not met timetag = FuzzyInteger(low=timetag_today() - 21, high=timetag_today()) ip = Faker('ipv4') input = FuzzyDecimal(low=0, high=10*1024*1024) output = FuzzyDecimal(low=0, high=10*1024*1024)
class CityFactory(factory.DjangoModelFactory): FACTORY_FOR = City name = factory.Sequence(lambda n: u'Ciudad {0}'.format(n)) # entre Rio Turbio y CABA longitude = FuzzyDecimal(-72.3367, -58.37723, precision=4) # entre Ushuaia y La Quiaca latitude = FuzzyDecimal(-54.8, -22.1023, precision=4) region = factory.SubFactory(RegionFactory, name=u'Córdoba') country = factory.SubFactory(CountryFactory, name=u'Argentina')
class StockFactory(BaseModelFactory): class Meta: model = Stock ticker_symbol = FuzzyText(length=4) s_open = FuzzyDecimal(.01, 5000) s_close = FuzzyDecimal(.01, 5000) s_high = FuzzyDecimal(.01, 5000) s_low = FuzzyDecimal(.01, 5000) user = factory.SubFactory(UserFactory)
class OfferFactory(DjangoModelFactory): title = Sequence(lambda n: f'Offer {n}') value = FuzzyDecimal(low=20.00, high=40.00) discounted_value = FuzzyDecimal(low=10.00, high=15.00) expiration_ts = FuzzyDateTime( start_dt=timezone.now() + datetime.timedelta(days=7), end_dt=timezone.now() + datetime.timedelta(days=17)) class Meta: model = Offer
class SeatFactory(factory.DjangoModelFactory): type = FuzzyChoice([name for name, __ in Seat.SEAT_TYPE_CHOICES]) price = FuzzyDecimal(0.0, 650.0) currency = factory.Iterator(Currency.objects.all()) upgrade_deadline = FuzzyDateTime(datetime(2014, 1, 1, tzinfo=UTC)) course_run = factory.SubFactory(CourseRunFactory) credit_price = FuzzyDecimal(0.0, 650.0) class Meta: model = Seat
class AccountFactory(factory.django.DjangoModelFactory): class Meta: model = Account id = factory.Sequence(lambda n: f'A{n}') group = factory.SubFactory(GroupFactory) status = factory.Faker('random_element', elements=Account.STATUS.list()) amount = FuzzyDecimal(0.5, 9999.9) balance = FuzzyDecimal(0.5, 9999.9) num_payments = FuzzyInteger(1, 8)
class AccountFactory(factory.Factory): class Meta: model = Account person = factory.SubFactory(PersonFactory) balance = FuzzyDecimal(10.0, 100.0, 3) daily_withdraw_limit = FuzzyDecimal(5.0, 10.0, 3) active_flag = True account_type = FuzzyChoice([ AccountTypeEnum.individual, AccountTypeEnum.company ])
class PantsFactory(DjangoModelFactory): # pylint: disable=too-many-ancestors class Meta: model = Pants brand = FuzzyText(length=20) model = FuzzyChoice(choices=[m[0] for m in MODEL_CHOICE_FIELD]) color = FuzzyText(length=20) material = FuzzyChoice(choices=[m[0] for m in MATERIAL_CHOICE_FIELD]) cost_price = FuzzyDecimal(low=100, high=499) sell_price = FuzzyDecimal(low=500, high=999) taxes = FuzzyDecimal(low=1, high=99)
class PaymentFactory(factory.django.DjangoModelFactory): class Meta: model = 'payments.PaymentCalendar' id = random.randrange(200, 99999) account = factory.SubFactory(AccountFactory) num_payment = random.randrange(1, 4) amount = FuzzyDecimal(0.5, 9999.9) balance = FuzzyDecimal(0.5, 9999.9) payment_date = FuzzyDate(datetime.datetime.now()) status = factory.Faker('random_element', elements=[x[1] for x in PaymentCalendar.STATUS])
class Params: # pylint: disable=missing-docstring percent = Trait( amount_type='percent-discount', amount=FuzzyDecimal(0, 1), ) fixed = Trait( amount_type='fixed-discount', amount=FuzzyDecimal(50, 1000), ) program = Trait(content_object=SubFactory(ProgramFactory)) course = Trait(content_object=SubFactory(CourseFactory)) course_run = Trait(content_object=SubFactory(CourseRunFactory))
class OrderRoundFactory(DjangoModelFactory): """ Creates an OPEN order round """ class Meta: model = "ordering.OrderRound" open_for_orders = datetime.datetime.now(tz=UTC) closed_for_orders = open_for_orders + datetime.timedelta(days=4) collect_datetime = closed_for_orders + datetime.timedelta(days=5) transaction_costs = FuzzyDecimal(low=0.01, high=0.40) markup_percentage = FuzzyDecimal(low=1, high=10)
class SavedProductFactory(factory.django.DjangoModelFactory): """ Stock items factory """ class Meta: model = "orders.SavedProduct" product = factory.SubFactory(ProductFactory) width = FuzzyDecimal(10, 100) height = FuzzyDecimal(10, 100) length = FuzzyDecimal(10, 100) weight = FuzzyDecimal(10, 100) retail_price = FuzzyDecimal(100, 500)
class BarFactory(DjangoModelFactory): """Construct bar data.""" asset = factory.SubFactory(AssetFactory) t = FuzzyInteger(1, 2100000000) o = FuzzyDecimal(1, 1000) h = FuzzyDecimal(1, 1000) l = FuzzyDecimal(1, 1000) c = FuzzyDecimal(1, 1000) v = FuzzyInteger(1, 10000000) class Meta: model = Bar
class DealFactory(DjangoModelFactory): tenant = SubFactory(TenantFactory) name = LazyAttribute(lambda o: faker.word()) account = SubFactory(AccountFactory, tenant=SelfAttribute('..tenant')) amount_once = FuzzyDecimal(42.7) amount_recurring = FuzzyDecimal(42.7) expected_closing_date = FuzzyDate(datetime.date(2015, 1, 1), datetime.date(2016, 1, 1)) assigned_to = SubFactory(LilyUserFactory, tenant=SelfAttribute('..tenant')) stage = FuzzyChoice(dict(Deal.STAGE_CHOICES).keys()) class Meta: model = Deal
class TimezoneFactory(factory.django.DjangoModelFactory): country = factory.SubFactory(CountryFactory) timezone_name = factory.sequence(lambda s: f'timezone-{s}') gmt_offset = FuzzyDecimal(99.9, precision=3) dst_offset = FuzzyDecimal(99.9, precision=3) raw_offset = FuzzyDecimal(99.9, precision=3) class Meta: model = 'core.Timezone' django_get_or_create = ( 'country', 'timezone_name', )
class CitiesFactory(factory.django.DjangoModelFactory): country = factory.SubFactory(CountryFactory) state = factory.SubFactory(StatesFactory) city_name = factory.sequence(lambda s: f'city-{s}') city_name_ascii = factory.sequence(lambda s: f'city_ascii-{s}') latitude = FuzzyDecimal(50.0) longitude = FuzzyDecimal(89.2) class Meta: model = 'core.Cities' django_get_or_create = ( 'country', 'state', 'city_name', )
class AlertFactory(factory.django.DjangoModelFactory): amount = FuzzyDecimal(0.0) user = factory.SubFactory(UserFactory) campaign = factory.SubFactory(CampaignFactory) class Meta: model = "alerts.Alert"
class TokenFactory(factory.django.DjangoModelFactory): amount = FuzzyInteger(1, 1000) price = FuzzyDecimal(1.0, 1000.0) class Meta: model = "tokens.Token"
class OrderFactory(factory.DjangoModelFactory): class Meta: model = Order contact_name = FuzzyText(length=50) contact_email = FuzzyText(length=50) order_total = FuzzyDecimal(0.50, 1000.00)
def get_transaction_amount(force_high=None) -> Decimal: low, high = TRANSACTIONS_AMOUNT_TIER.flip() force_high = high or force_high high = max(high, force_high) low = min(low, high) return FuzzyDecimal(low=low, high=high).fuzz()
class PersonFactory(factory.django.DjangoModelFactory): class Meta: model = Person age = FuzzyInteger(21, 99) eye_color = FuzzyChoice([Person.EYE_BLUE, Person.EYE_BROWN]) name = factory.Sequence(lambda n: f"Person{n}") gender = FuzzyChoice([Person.GENDER_MALE, Person.GENDER_FEMALE]) phone = factory.Sequence(lambda n: "0486-992-%03d" % n) email = factory.LazyAttribute(lambda obj: f"{obj.name}@test.com".lower()) address = factory.Faker("address") registered = FuzzyDateTime(datetime.datetime(2020, 1, 1, tzinfo=UTC)) company = factory.SubFactory(CompanyFactory) about = FuzzyText() greeting = FuzzyText() balance = FuzzyDecimal(low=0) @factory.post_generation def favourite_foods(self, create, extracted, **kwargs): if not create: return if extracted: for food in extracted: self.favourite_foods.add(food) @factory.post_generation def friends(self, create, extracted, **kwargs): if not create: return if extracted: for friend in extracted: self.friends.add(friend)
class CourseSkillsFactory(factory.django.DjangoModelFactory): course_id = FuzzyText() skill = factory.SubFactory(SkillFactory) confidence = FuzzyDecimal(0.0, 1.0) class Meta: model = CourseSkills
class CuppingFactory(BaseFactory): class Meta: model = Cupping name = factory.Sequence(lambda n: u'Coffee %d' % n) scores = FuzzyAttribute(_generate_scores) overall_score = FuzzyDecimal(60, 100, precision=1)
class CouponFactory(DjangoModelFactory): """Factory for Coupon""" coupon_code = FuzzyText() coupon_type = Coupon.STANDARD amount_type = Coupon.PERCENT_DISCOUNT amount = FuzzyDecimal(0, 1) class Meta: model = Coupon content_object = SubFactory(ProgramFactory, financial_aid_availability=True) class Params: # pylint: disable=missing-docstring percent = Trait( amount_type='percent-discount', amount=FuzzyDecimal(0, 1), ) fixed = Trait( amount_type='fixed-discount', amount=FuzzyDecimal(50, 1000), ) program = Trait(content_object=SubFactory(ProgramFactory)) course = Trait(content_object=SubFactory(CourseFactory)) course_run = Trait(content_object=SubFactory(CourseRunFactory))
class OrderInputDTOFactory(factory.Factory): # type: ignore class Meta: model = OrderInputDTO code = FuzzyInteger(10000, 99999) value = FuzzyDecimal(100.00, 100000.00) retailer_document = str(FuzzyInteger(10000000000, 99999999999))
class ReceiptFactory(factory.django.DjangoModelFactory): class Meta: model = models.Receipt tax_number = factory.Faker("pyint") tabc_permit = FuzzyText(length=6, prefix="MB", chars=string.digits) taxpayer_name = factory.Faker("company") date = FuzzyDate(start_date=date(1970, 1, 1)) liquor = FuzzyDecimal(low=0, high=1000, precision=2) beer = FuzzyDecimal(low=0, high=1000, precision=2) wine = FuzzyDecimal(low=0, high=1000, precision=2) cover = FuzzyDecimal(low=0, high=1000, precision=2) total = FuzzyDecimal(low=0, high=10000, precision=2) location_number = 1 county_code = 255 location = factory.SubFactory(LocationFactory)
class CourseEntitlementFactory(factory.DjangoModelFactory): mode = FuzzyChoice([name for name, __ in CourseEntitlement.COURSE_MODE_CHOICES]) price = FuzzyDecimal(1.0, 650.0) currency = factory.Iterator(Currency.objects.all()) course = factory.SubFactory(CourseFactory) class Meta: model = CourseEntitlement
class ProductFactory(factory.django.DjangoModelFactory): class Meta: model = Product category = factory.SubFactory(CategoryFactory) name = factory.Faker('name') price = FuzzyDecimal(0.5, 42.7, 2) image = 'products_imgs/pinkRose.jpeg'