Bring the factory-boy and Faker dependencies forward through some minor breaking changes. Stop using the deprecated fr_QC locale in Faker. Commit ready for merge.

- Legacy-Id: 19270
This commit is contained in:
Robert Sparks 2021-08-03 22:22:35 +00:00
parent 47082fe4c5
commit b99eecc1ae
15 changed files with 60 additions and 56 deletions

View file

@ -2,7 +2,7 @@ import factory
from ietf.dbtemplate.models import DBTemplate
class DBTemplateFactory(factory.DjangoModelFactory):
class DBTemplateFactory(factory.django.DjangoModelFactory):
class Meta:
model = DBTemplate

View file

@ -29,7 +29,7 @@ def draft_name_generator(type_id,group,n):
n,
)
class BaseDocumentFactory(factory.DjangoModelFactory):
class BaseDocumentFactory(factory.django.DjangoModelFactory):
class Meta:
model = Document
@ -259,7 +259,7 @@ class ReviewFactory(BaseDocumentFactory):
name = factory.LazyAttribute(lambda o: 'review-doesnotexist-00-%s-%s'%(o.group.acronym,datetime.date.today().isoformat()))
group = factory.SubFactory('ietf.group.factories.GroupFactory',type_id='review')
class DocAliasFactory(factory.DjangoModelFactory):
class DocAliasFactory(factory.django.DjangoModelFactory):
class Meta:
model = DocAlias
@ -276,7 +276,7 @@ class DocAliasFactory(factory.DjangoModelFactory):
self.docs.add(doc)
class DocEventFactory(factory.DjangoModelFactory):
class DocEventFactory(factory.django.DjangoModelFactory):
class Meta:
model = DocEvent
@ -326,7 +326,7 @@ class StateDocEventFactory(DocEventFactory):
obj.save()
# All of these Ballot* factories are extremely skeletal. Flesh them out as needed by tests.
class BallotTypeFactory(factory.DjangoModelFactory):
class BallotTypeFactory(factory.django.DjangoModelFactory):
class Meta:
model = BallotType
django_get_or_create = ('slug','doc_type_id')
@ -363,14 +363,14 @@ class BallotPositionDocEventFactory(DocEventFactory):
balloter = factory.SubFactory('ietf.person.factories.PersonFactory')
pos_id = 'discuss'
class DocumentActionHolderFactory(factory.DjangoModelFactory):
class DocumentActionHolderFactory(factory.django.DjangoModelFactory):
class Meta:
model = DocumentActionHolder
document = factory.SubFactory(WgDraftFactory)
person = factory.SubFactory('ietf.person.factories.PersonFactory')
class DocumentAuthorFactory(factory.DjangoModelFactory):
class DocumentAuthorFactory(factory.django.DjangoModelFactory):
class Meta:
model = DocumentAuthor

View file

@ -9,7 +9,7 @@ from ietf.group.models import Group, Role, GroupEvent, GroupMilestone, \
GroupHistory, RoleHistory
from ietf.review.factories import ReviewTeamSettingsFactory
class GroupFactory(factory.DjangoModelFactory):
class GroupFactory(factory.django.DjangoModelFactory):
class Meta:
model = Group
django_get_or_create = ('acronym',)
@ -39,7 +39,7 @@ class ReviewTeamFactory(GroupFactory):
def settings(obj, create, extracted, **kwargs):
ReviewTeamSettingsFactory.create(group=obj,**kwargs)
class RoleFactory(factory.DjangoModelFactory):
class RoleFactory(factory.django.DjangoModelFactory):
class Meta:
model = Role
@ -47,7 +47,7 @@ class RoleFactory(factory.DjangoModelFactory):
person = factory.SubFactory('ietf.person.factories.PersonFactory')
email = factory.LazyAttribute(lambda obj: obj.person.email())
class GroupEventFactory(factory.DjangoModelFactory):
class GroupEventFactory(factory.django.DjangoModelFactory):
class Meta:
model = GroupEvent
@ -56,7 +56,7 @@ class GroupEventFactory(factory.DjangoModelFactory):
type = 'comment'
desc = factory.Faker('paragraph')
class BaseGroupMilestoneFactory(factory.DjangoModelFactory):
class BaseGroupMilestoneFactory(factory.django.DjangoModelFactory):
class Meta:
model = GroupMilestone
@ -72,7 +72,7 @@ class DatelessGroupMilestoneFactory(BaseGroupMilestoneFactory):
group = factory.SubFactory(GroupFactory, uses_milestone_dates=False)
order = factory.Sequence(lambda n: n)
class GroupHistoryFactory(factory.DjangoModelFactory):
class GroupHistoryFactory(factory.django.DjangoModelFactory):
class Meta:
model=GroupHistory
@ -86,7 +86,7 @@ class GroupHistoryFactory(factory.DjangoModelFactory):
group = factory.SubFactory(GroupFactory)
acronym = factory.LazyAttribute(lambda obj: obj.group.acronym)
class RoleHistoryFactory(factory.DjangoModelFactory):
class RoleHistoryFactory(factory.django.DjangoModelFactory):
class Meta:
model=RoleHistory

View file

@ -7,7 +7,7 @@ import factory
from ietf.iesg.models import TelechatAgendaItem
class IESGMgmtItemFactory(factory.DjangoModelFactory):
class IESGMgmtItemFactory(factory.django.DjangoModelFactory):
class Meta:
model = TelechatAgendaItem

View file

@ -11,7 +11,7 @@ from oidc_provider.models import Client as OidClientRecord, ResponseType
from ietf.person.factories import UserFactory, PersonFactory
class OidClientRecordFactory(factory.DjangoModelFactory):
class OidClientRecordFactory(factory.django.DjangoModelFactory):
class Meta:
model = OidClientRecord

View file

@ -14,13 +14,13 @@ from ietf.ipr.models import (
def _fake_patent_info():
return "Date: %s\nNotes: %s\nTitle: %s\nNumber: %s\nInventor: %s\n" % (
(datetime.datetime.today()-datetime.timedelta(days=365)).strftime("%Y-%m-%d"),
factory.Faker('paragraph').generate({}),
factory.Faker('sentence', nb_words=8).generate({}),
factory.Faker('paragraph'),
factory.Faker('sentence', nb_words=8),
'US9999999',
factory.Faker('name').generate({}),
factory.Faker('name'),
)
class IprDisclosureBaseFactory(factory.DjangoModelFactory):
class IprDisclosureBaseFactory(factory.django.DjangoModelFactory):
class Meta:
model = IprDisclosureBase
@ -83,7 +83,7 @@ class GenericIprDisclosureFactory(IprDisclosureBaseFactory):
holder_contact_email = factory.Faker('email')
holder_contact_name = factory.Faker('name')
class IprEventFactory(factory.DjangoModelFactory):
class IprEventFactory(factory.django.DjangoModelFactory):
class Meta:
model = IprEvent

View file

@ -3,7 +3,7 @@ import factory
from ietf.group.factories import GroupFactory
from ietf.liaisons.models import LiaisonStatement, LiaisonStatementEvent, LiaisonStatementAttachment
class LiaisonStatementFactory(factory.DjangoModelFactory):
class LiaisonStatementFactory(factory.django.DjangoModelFactory):
class Meta:
model = LiaisonStatement
@ -30,7 +30,7 @@ class LiaisonStatementFactory(factory.DjangoModelFactory):
obj.to_groups.add(GroupFactory(type_id='wg'))
class LiaisonStatementEventFactory(factory.DjangoModelFactory):
class LiaisonStatementEventFactory(factory.django.DjangoModelFactory):
class Meta:
model = LiaisonStatementEvent
@ -40,7 +40,7 @@ class LiaisonStatementEventFactory(factory.DjangoModelFactory):
desc = factory.Faker('sentence')
class LiaisonStatementAttachmentFactory(factory.DjangoModelFactory):
class LiaisonStatementAttachmentFactory(factory.django.DjangoModelFactory):
class Meta:
model = LiaisonStatementAttachment

View file

@ -7,7 +7,7 @@ import random
from ietf.mailinglists.models import List
class ListFactory(factory.DjangoModelFactory):
class ListFactory(factory.django.DjangoModelFactory):
class Meta:
model = List

View file

@ -13,7 +13,7 @@ from ietf.name.models import SessionStatusName
from ietf.group.factories import GroupFactory
from ietf.person.factories import PersonFactory
class MeetingFactory(factory.DjangoModelFactory):
class MeetingFactory(factory.django.DjangoModelFactory):
class Meta:
model = Meeting
@ -75,7 +75,7 @@ class MeetingFactory(factory.DjangoModelFactory):
obj.schedule = ScheduleFactory(meeting=obj)
obj.save()
class SessionFactory(factory.DjangoModelFactory):
class SessionFactory(factory.django.DjangoModelFactory):
class Meta:
model = Session
@ -116,7 +116,7 @@ class SessionFactory(factory.DjangoModelFactory):
ts = obj.meeting.timeslot_set.all()
obj.timeslotassignments.create(timeslot=ts[random.randrange(len(ts))],schedule=obj.meeting.schedule)
class ScheduleFactory(factory.DjangoModelFactory):
class ScheduleFactory(factory.django.DjangoModelFactory):
class Meta:
model = Schedule
@ -124,7 +124,7 @@ class ScheduleFactory(factory.DjangoModelFactory):
name = factory.Sequence(lambda n: 'schedule_%d'%n)
owner = factory.SubFactory(PersonFactory)
class RoomFactory(factory.DjangoModelFactory):
class RoomFactory(factory.django.DjangoModelFactory):
class Meta:
model = Room
@ -140,7 +140,7 @@ class RoomFactory(factory.DjangoModelFactory):
obj.session_types.add(st)
class TimeSlotFactory(factory.DjangoModelFactory):
class TimeSlotFactory(factory.django.DjangoModelFactory):
class Meta:
model = TimeSlot
@ -164,7 +164,7 @@ class TimeSlotFactory(factory.DjangoModelFactory):
def duration(self):
return datetime.timedelta(minutes=30+random.randrange(9)*15)
class SessionPresentationFactory(factory.DjangoModelFactory):
class SessionPresentationFactory(factory.django.DjangoModelFactory):
class Meta:
model = SessionPresentation
@ -174,7 +174,7 @@ class SessionPresentationFactory(factory.DjangoModelFactory):
def rev(self):
return self.document.rev
class FloorPlanFactory(factory.DjangoModelFactory):
class FloorPlanFactory(factory.django.DjangoModelFactory):
class Meta:
model = FloorPlan
@ -190,7 +190,7 @@ class FloorPlanFactory(factory.DjangoModelFactory):
)
)
class SlideSubmissionFactory(factory.DjangoModelFactory):
class SlideSubmissionFactory(factory.django.DjangoModelFactory):
class Meta:
model = SlideSubmission

View file

@ -5,6 +5,8 @@
import factory
import random
from faker import Faker
from ietf.nomcom.models import NomCom, Position, Feedback, Nominee, NomineePosition, Nomination, Topic
from ietf.group.factories import GroupFactory
from ietf.person.factories import PersonFactory, UserFactory
@ -79,7 +81,7 @@ def nomcom_kwargs_for_year(year=None, *args, **kwargs):
return kwargs
class NomComFactory(factory.DjangoModelFactory):
class NomComFactory(factory.django.DjangoModelFactory):
class Meta:
model = NomCom
@ -137,7 +139,7 @@ class NomComFactory(factory.DjangoModelFactory):
for i in range(3):
TopicFactory(nomcom=obj)
class PositionFactory(factory.DjangoModelFactory):
class PositionFactory(factory.django.DjangoModelFactory):
class Meta:
model = Position
@ -146,7 +148,7 @@ class PositionFactory(factory.DjangoModelFactory):
accepting_nominations = True
accepting_feedback = True
class NomineeFactory(factory.DjangoModelFactory):
class NomineeFactory(factory.django.DjangoModelFactory):
class Meta:
model = Nominee
@ -154,7 +156,7 @@ class NomineeFactory(factory.DjangoModelFactory):
person = factory.SubFactory(PersonFactory)
email = factory.LazyAttribute(lambda obj: obj.person.email())
class NomineePositionFactory(factory.DjangoModelFactory):
class NomineePositionFactory(factory.django.DjangoModelFactory):
class Meta:
model = NomineePosition
@ -162,7 +164,7 @@ class NomineePositionFactory(factory.DjangoModelFactory):
nominee = factory.SubFactory(NomineeFactory)
state_id = 'accepted'
class FeedbackFactory(factory.DjangoModelFactory):
class FeedbackFactory(factory.django.DjangoModelFactory):
class Meta:
model = Feedback
@ -172,10 +174,10 @@ class FeedbackFactory(factory.DjangoModelFactory):
@factory.post_generation
def comments(obj, create, extracted, **kwargs):
comment_text = factory.Faker('paragraph').generate({})
comment_text = Faker().paragraph()
obj.comments = obj.nomcom.encrypt(comment_text)
class TopicFactory(factory.DjangoModelFactory):
class TopicFactory(factory.django.DjangoModelFactory):
class Meta:
model = Topic
@ -184,7 +186,7 @@ class TopicFactory(factory.DjangoModelFactory):
accepting_feedback = True
audience_id = 'general'
class NominationFactory(factory.DjangoModelFactory):
class NominationFactory(factory.django.DjangoModelFactory):
class Meta:
model = Nomination

View file

@ -32,7 +32,7 @@ def setup():
# extraction code, and also don't seem to match the way people with arabic
# names romanize arabic names. Exlude those locales from name generation
# in order to avoid test failures.
locales = set( [ l for l in faker.config.AVAILABLE_LOCALES if not (l.startswith('ar_') or l.startswith('sg_')) ] )
locales = set( [ l for l in faker.config.AVAILABLE_LOCALES if not (l.startswith('ar_') or l.startswith('sg_') or l=='fr_QC') ] )
acceptable_fakers = [faker.Faker(locale) for locale in locales]
setup()
@ -40,7 +40,7 @@ def random_faker():
global acceptable_fakers
return random.sample(acceptable_fakers, 1)[0]
class UserFactory(factory.DjangoModelFactory):
class UserFactory(factory.django.DjangoModelFactory):
class Meta:
model = User
django_get_or_create = ('username',)
@ -57,7 +57,7 @@ class UserFactory(factory.DjangoModelFactory):
def set_password(obj, create, extracted, **kwargs): # pylint: disable=no-self-argument
obj.set_password( '%s+password' % obj.username ) # pylint: disable=no-value-for-parameter
class PersonFactory(factory.DjangoModelFactory):
class PersonFactory(factory.django.DjangoModelFactory):
class Meta:
model = Person
@ -102,7 +102,7 @@ class PersonFactory(factory.DjangoModelFactory):
os.unlink(file)
atexit.register(delete_file, photodst)
class AliasFactory(factory.DjangoModelFactory):
class AliasFactory(factory.django.DjangoModelFactory):
class Meta:
model = Alias
@ -134,7 +134,7 @@ def fake_email_address(n):
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 EmailFactory(factory.django.DjangoModelFactory):
class Meta:
model = Email
django_get_or_create = ('address',)
@ -147,14 +147,14 @@ class EmailFactory(factory.DjangoModelFactory):
origin = factory.LazyAttribute(lambda obj: obj.person.user.username if obj.person.user else '')
class PersonalApiKeyFactory(factory.DjangoModelFactory):
class PersonalApiKeyFactory(factory.django.DjangoModelFactory):
person = factory.SubFactory(PersonFactory)
endpoint = FuzzyChoice(PERSON_API_KEY_ENDPOINTS)
class Meta:
model = PersonalApiKey
class PersonApiKeyEventFactory(factory.DjangoModelFactory):
class PersonApiKeyEventFactory(factory.django.DjangoModelFactory):
key = factory.SubFactory(PersonalApiKeyFactory)
person = factory.LazyAttribute(lambda o: o.key.person)
type = 'apikey_login'

View file

@ -6,7 +6,7 @@ from ietf.review.models import ReviewTeamSettings, ReviewRequest, ReviewAssignme
from ietf.name.models import ReviewTypeName, ReviewResultName
class ReviewTeamSettingsFactory(factory.DjangoModelFactory):
class ReviewTeamSettingsFactory(factory.django.DjangoModelFactory):
class Meta:
model = ReviewTeamSettings
@ -31,7 +31,7 @@ class ReviewTeamSettingsFactory(factory.DjangoModelFactory):
else:
obj.review_results.set(ReviewResultName.objects.filter(slug__in=('not-ready','right-track','almost-ready','ready-issues','ready-nits','ready')))
class ReviewRequestFactory(factory.DjangoModelFactory):
class ReviewRequestFactory(factory.django.DjangoModelFactory):
class Meta:
model = ReviewRequest
@ -42,7 +42,7 @@ class ReviewRequestFactory(factory.DjangoModelFactory):
deadline = datetime.datetime.today()+datetime.timedelta(days=14)
requested_by = factory.SubFactory('ietf.person.factories.PersonFactory')
class ReviewAssignmentFactory(factory.DjangoModelFactory):
class ReviewAssignmentFactory(factory.django.DjangoModelFactory):
class Meta:
model = ReviewAssignment
@ -51,7 +51,7 @@ class ReviewAssignmentFactory(factory.DjangoModelFactory):
reviewer = factory.SubFactory('ietf.person.factories.EmailFactory')
assigned_on = datetime.datetime.now()
class ReviewerSettingsFactory(factory.DjangoModelFactory):
class ReviewerSettingsFactory(factory.django.DjangoModelFactory):
class Meta:
model = ReviewerSettings

View file

@ -6,7 +6,7 @@ from ietf.stats.models import MeetingRegistration
from ietf.meeting.factories import MeetingFactory
from ietf.person.factories import PersonFactory
class MeetingRegistrationFactory(factory.DjangoModelFactory):
class MeetingRegistrationFactory(factory.django.DjangoModelFactory):
class Meta:
model = MeetingRegistration

View file

@ -11,7 +11,7 @@ from ietf.submit.models import Submission, SubmissionExtResource
from ietf.utils.accesstoken import generate_random_key
class SubmissionExtResourceFactory(factory.DjangoModelFactory):
class SubmissionExtResourceFactory(factory.django.DjangoModelFactory):
name = factory.Iterator(ExtResourceName.objects.all())
value = factory.Faker('url')
submission = factory.SubFactory('ietf.submit.factories.SubmissionFactory')
@ -19,7 +19,7 @@ class SubmissionExtResourceFactory(factory.DjangoModelFactory):
class Meta:
model = SubmissionExtResource
class SubmissionFactory(factory.DjangoModelFactory):
class SubmissionFactory(factory.django.DjangoModelFactory):
state_id = 'uploaded'
@factory.lazy_attribute_sequence

View file

@ -25,8 +25,10 @@ django-tastypie>=0.14.3 # Django 2.1 will require 0.14.2; Django 3.0 wil
django-webtest>=1.9.7
django-widget-tweaks>=1.4.2
docutils>=0.12,!=0.15
factory-boy>=2.9.0,<3
Faker>=0.8.8,!=0.8.9,!=0.8.10 # from factory-boy # Faker 0.8.9,0.8.10 sometimes return string names instead of unicode.
#factory-boy>=2.9.0,<3
#Faker>=0.8.8,!=0.8.9,!=0.8.10 # from factory-boy # Faker 0.8.9,0.8.10 sometimes return string names instead of unicode.
factory-boy>=3
Faker>=0.8.11 # from factory-boy # Faker 0.8.9,0.8.10 sometimes return string names instead of unicode.
github3.py>=1.2
hashids>=1.1.0
html2text>=2019.8.11