From 0d120fb46abacd4b1560cdf04ac0b1703362cdbd Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Fri, 30 Jun 2017 11:47:12 +0000 Subject: [PATCH] Tweaked the EmailFactory to return an email address not longer than the Email.address field. - Legacy-Id: 13738 --- ietf/person/factories.py | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/ietf/person/factories.py b/ietf/person/factories.py index 946d35672..014c741b9 100644 --- a/ietf/person/factories.py +++ b/ietf/person/factories.py @@ -94,14 +94,30 @@ class AliasFactory(factory.DjangoModelFactory): name = factory.Faker('name') +def fake_email_address(n): + address_field = [ f for f in Email._meta.fields if f.name == 'address'][0] + count = 0 + while True: + address = '%s.%s_%d@%s' % ( + slugify(unidecode(fake.first_name())), + slugify(unidecode(fake.last_name())), + n, fake.domain_name() + ) + count += 1 + if len(address) <= address_field.max_length: + break + if count >= 10: + raise RuntimeError("Failed generating a fake email address to fit in Email.address(max_length=%s)"%address_field.max_lenth) + return address + class EmailFactory(factory.DjangoModelFactory): class Meta: model = Email django_get_or_create = ('address',) - address = factory.Sequence(lambda n:'%s.%s_%d@%s' % ( slugify(unidecode(fake.first_name())), - slugify(unidecode(fake.last_name())), n, fake.domain_name())) + address = factory.Sequence(fake_email_address) person = factory.SubFactory(PersonFactory) active = True primary = False +