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 AccountFactory(DjangoModelFactory): tenant = SubFactory(TenantFactory) name = LazyAttribute(lambda o: faker.company()) description = LazyAttribute(lambda o: faker.bs()) status = SubFactory(AccountStatusFactory, tenant=SelfAttribute('..tenant')) @factory.post_generation def phone_numbers(self, create, extracted, **kwargs): phone_str = faker.phone_number() if create: phone_number = PhoneNumberFactory(tenant=self.tenant, number=phone_str) self.phone_numbers.add(phone_number) @factory.post_generation def websites(self, create, extracted, **kwargs): if not create: return size = extracted.get('size', 1) if extracted else 1 WebsiteFactory.create_batch(size=size, account=self, tenant=self.tenant) class Meta: model = Account
class CaseFactory(DjangoModelFactory): tenant = SubFactory(TenantFactory) status = SubFactory(CaseStatusFactory, tenant=SelfAttribute('..tenant')) priority = FuzzyChoice(dict(Case.PRIORITY_CHOICES).keys()) subject = LazyAttribute(lambda o: faker.word()) account = SubFactory(AccountFactory, tenant=SelfAttribute('..tenant')) expires = FuzzyDate(datetime.date(2015, 1, 1), datetime.date(2016, 1, 1)) assigned_to = SubFactory(LilyUserFactory, tenant=SelfAttribute('..tenant')) type = SubFactory(CaseTypeFactory, tenant=SelfAttribute('..tenant')) created_by = SelfAttribute('.assigned_to') @factory.post_generation def teams(self, create, extracted, **kwargs): if not create: # Simple build, do nothing. return if extracted: if isinstance(extracted, Team): # A single team was passed in, use that. self.assigned_to_teams.add(extracted) else: # A list of teams were passed in, use them. for team in extracted: self.assigned_to_teams.add(team) class Meta: model = Case
class EmailMessageFactory(DjangoModelFactory): subject = LazyAttribute(lambda o: faker.word()) sender = SubFactory(RecipientFactory) body_text = LazyAttribute(lambda o: faker.text()) sent_date = LazyAttribute( lambda o: faker.date_time_between_dates(past_date, current_date, utc)) account = SubFactory(EmailAccountFactory) message_id = FuzzyText() @post_generation def received_by(self, create, extracted, **kwargs): if not create: # Simple build, do nothing. return if extracted: if isinstance(extracted, Recipient): # A single team was passed in, use that. self.received_by.add(extracted) else: # A list of teams were passed in, use them. for recipient in extracted: self.received_by.add(recipient) class Meta: model = EmailMessage
class UnitInquiryFactory(DjangoModelFactory): class Meta: model = UnitInquiry student = SubFactory(StudentFactory) unit = SubFactory(UnitFactory) action_type = "UNLOCK" explanation = Faker('sentence')
class CommentFactory(DjangoModelFactory): post_id = SubFactory(PostFactory) user_id = SubFactory(UserFactory) content = Faker("sentence") class Meta: model = Comment
class WebsiteFactory(DjangoModelFactory): tenant = SubFactory(TenantFactory) account = SubFactory(AccountFactory, tenant=SelfAttribute('..tenant')) website = LazyAttribute(lambda o: faker.url()) is_primary = FuzzyChoice([True, False]) class Meta: model = Website
class GuessFactory(DjangoModelFactory): class Meta: model = Guess user = SubFactory(UserFactory) market = SubFactory(MarketFactory) value = FuzzyDecimal(1, 10000) score = LazyAttribute(lambda o: o.get_score())
class BuurtFactory(DjangoModelFactory): class Meta: model = models.Buurt django_get_or_create = ('code', ) id = fuzzy.FuzzyText(length=14, chars=string.digits) code = fuzzy.FuzzyText(length=3, chars=string.digits) stadsdeel = SubFactory(StadsdeelFactory) buurtcombinatie = SubFactory(BuurtcombinatieFactory)
class CallTransferFactory(DjangoModelFactory): tenant = SubFactory(TenantFactory) timestamp = LazyAttribute(lambda o: faker.date_time_between( start_date="now", end_date="+1m", tzinfo=UTC)) destination = SubFactory(CallParticipantFactory, tenant=SelfAttribute('..tenant')) class Meta: model = CallTransfer
class JudgementCodeFactory(DjangoModelFactory): user_id = SubFactory(UserFactory) gameversion_id = SubFactory(GameVersionFactory) programming_language = SubFactory(ProgrammingLanguageFactory) code = Faker("sentence") class Meta: model = JudgementCode
class PostFactory(DjangoModelFactory): title = Faker("sentence") user_id = SubFactory(UserFactory) blog_id = SubFactory(BlogFactory) content = Faker("sentence") class Meta: model = Post
class StudentFactory(DjangoModelFactory): class Meta: model = Student user = SubFactory(UserFactory) semester = SubFactory(SemesterFactory) track = 'C' newborn = False last_level_seen = 0
class UploadedFileFactory(DjangoModelFactory): class Meta: model = UploadedFile benefactor = SubFactory(StudentFactory) owner = LazyAttribute(lambda o: o.benefactor.user) category = 'psets' content = FileField(filename='pset.txt') unit = SubFactory(UnitFactory)
class FunctionFactory(DjangoModelFactory): tenant = SubFactory(TenantFactory) contact = SubFactory(ContactFactory, tenant=SelfAttribute('..tenant')) account = SubFactory(AccountFactory, tenant=SelfAttribute('..tenant')) class Meta: model = Function exclude = ( 'tenant', ) # Tenant is a field because of the relations, but not because a function has a tenant.
class UserCodeFactory(DjangoModelFactory): user_id = SubFactory(UserFactory) gamerooms = SubFactory(GameRoomFactory) programming_language = SubFactory(ProgrammingLanguageFactory) code = Faker("sentence") is_active = fuzzy.FuzzyInteger(0, 1) class Meta: model = UserCode
class PSetFactory(DjangoModelFactory): class Meta: model = PSet student = SubFactory(StudentFactory) unit = SubFactory(UnitFactory) upload = LazyAttribute( lambda o: UploadedFileFactory.create(benefactor=o.student, unit=o.unit) ) next_unit_to_unlock = SubFactory(UnitFactory) approved = True
class EmailAccountFactory(DjangoModelFactory): tenant = SubFactory(TenantFactory) owner = SubFactory(LilyUserFactory, tenant=SelfAttribute('..tenant')) email_address = email_address from_name = LazyAttribute(lambda o: faker.name()) label = LazyAttribute(lambda o: faker.word()) is_authorized = True privacy = FuzzyChoice(dict(EmailAccount.PRIVACY_CHOICES).keys()) class Meta: model = EmailAccount
class StudentRegistrationFactory(DjangoModelFactory): class Meta: model = StudentRegistration user = SubFactory(UserFactory) container = SubFactory(RegistrationContainerFactory) parent_email = Faker('ascii_safe_email') track = 'C' gender = 'H' graduation_year = 0 school_name = Faker('city')
class ProblemSuggestionFactory(DjangoModelFactory): class Meta: model = ProblemSuggestion user = SubFactory(UserFactory) unit = SubFactory(UnitFactory) weight = FuzzyChoice([2, 3, 5, 9]) source = UniqueFaker('company') description = Faker('text') statement = Faker('sentence') solution = Faker('paragraph')
class EmailAccountFactory(DjangoModelFactory): tenant = SubFactory(TenantFactory) owner = SubFactory(LilyUserFactory) email_address = LazyAttribute(lambda o: unicodedata.normalize( 'NFD', faker.safe_email()).encode('ascii', 'ignore')) from_name = LazyAttribute(lambda o: faker.name()) label = LazyAttribute(lambda o: faker.word()) is_authorized = True privacy = FuzzyChoice(dict(EmailAccount.PRIVACY_CHOICES).keys()) class Meta: model = EmailAccount
class CaseFactory(DjangoModelFactory): tenant = SubFactory(TenantFactory) status = SubFactory(CaseStatusFactory, tenant=SelfAttribute('..tenant')) priority = FuzzyChoice(dict(Case.PRIORITY_CHOICES).keys()) subject = LazyAttribute(lambda o: faker.word()) account = SubFactory(AccountFactory, tenant=SelfAttribute('..tenant')) expires = FuzzyDate(datetime.date(2015, 1, 1), datetime.date(2016, 1, 1)) assigned_to = SubFactory(LilyUserFactory, tenant=SelfAttribute('..tenant')) type = SubFactory(CaseTypeFactory, tenant=SelfAttribute('..tenant')) class Meta: model = Case
class FunctionFactory(DjangoModelFactory): tenant = SubFactory(TenantFactory) contact = SubFactory(ContactFactory, tenant=SelfAttribute('..tenant')) account = SubFactory(AccountFactory, tenant=SelfAttribute('..tenant')) class Meta: model = Function exclude = ('tenant', ) django_get_or_create = ( 'contact', 'account', )
class NummeraanduidingFactory(DjangoModelFactory): class Meta: model = models.Nummeraanduiding id = fuzzy.FuzzyText(length=14, chars=string.digits) landelijk_id = fuzzy.FuzzyText(length=16, chars=string.digits) huisnummer = LazyAttribute(lambda o: int(faker_instance.building_number())) openbare_ruimte = SubFactory(OpenbareRuimteFactory) verblijfsobject = SubFactory(VerblijfsobjectFactory) type = '01' # default verblijfsobject postcode = '1000AN' # default postcode.. _openbare_ruimte_naam = LazyAttribute(lambda o: o.openbare_ruimte.naam)
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 ExamAttemptFactory(DjangoModelFactory): class Meta: model = ExamAttempt student = SubFactory(StudentFactory) quiz = SubFactory(ExamFactory) score = 0 guess1 = LazyAttribute(lambda o: o.quiz.answer1) guess2 = LazyAttribute(lambda o: o.quiz.answer2) guess3 = LazyAttribute(lambda o: o.quiz.answer3) guess4 = LazyAttribute(lambda o: o.quiz.answer4) guess5 = LazyAttribute(lambda o: o.quiz.answer5)
class EmailDraftFactory(DjangoModelFactory): tenant = SubFactory(TenantFactory) send_from = SubFactory(EmailAccountFactory, tenant=SelfAttribute('..tenant')) to = email_addresses cc = email_addresses bcc = email_addresses subject = LazyAttribute(lambda o: faker.word()) body = LazyAttribute(lambda o: faker.text()) mapped_attachments = FuzzyInteger(0, 5) class Meta: model = EmailDraft
class CallRecordFactory(DjangoModelFactory): tenant = SubFactory(TenantFactory) call_id = FuzzyText(length=40) start = LazyAttribute(lambda o: faker.date_time(tzinfo=UTC)) end = LazyAttribute(lambda o: faker.date_time_between( start_date="now", end_date="+15m", tzinfo=UTC)) status = FuzzyChoice(dict(CallRecord.CALL_STATUS_CHOICES).keys()) direction = FuzzyChoice(dict(CallRecord.CALL_DIRECTION_CHOICES).keys()) caller = SubFactory(CallParticipantFactory, tenant=SelfAttribute('..tenant')) destination = SubFactory(CallParticipantFactory, tenant=SelfAttribute('..tenant')) class Meta: model = CallRecord
class ColourThemeFactory(DjangoModelFactory): """Factory for color themes.""" class Meta: model = ColourTheme logo = SubFactory(ImageFactory) company = Iterator(Company.objects.all()) @lazy_attribute def primary(self): """ Generate a fake primary theme color. :return: The primary color of a theme :rtype: int """ return random.randint(0x000000, 0xFFFFFF) @lazy_attribute def accent(self): """ Generate a fake accent theme color. :return: The accent color of a theme :rtype: int """ return random.randint(0x000000, 0xFFFFFF)
class CaseTypeFactory(DjangoModelFactory): tenant = SubFactory(TenantFactory) name = Iterator(CASETYPE_CHOICES) class Meta: model = CaseType django_get_or_create = ('tenant', 'name')