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 from ietf.dbtemplate.models import DBTemplate
class DBTemplateFactory(factory.DjangoModelFactory): class DBTemplateFactory(factory.django.DjangoModelFactory):
class Meta: class Meta:
model = DBTemplate model = DBTemplate

View file

@ -29,7 +29,7 @@ def draft_name_generator(type_id,group,n):
n, n,
) )
class BaseDocumentFactory(factory.DjangoModelFactory): class BaseDocumentFactory(factory.django.DjangoModelFactory):
class Meta: class Meta:
model = Document 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())) 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') group = factory.SubFactory('ietf.group.factories.GroupFactory',type_id='review')
class DocAliasFactory(factory.DjangoModelFactory): class DocAliasFactory(factory.django.DjangoModelFactory):
class Meta: class Meta:
model = DocAlias model = DocAlias
@ -276,7 +276,7 @@ class DocAliasFactory(factory.DjangoModelFactory):
self.docs.add(doc) self.docs.add(doc)
class DocEventFactory(factory.DjangoModelFactory): class DocEventFactory(factory.django.DjangoModelFactory):
class Meta: class Meta:
model = DocEvent model = DocEvent
@ -326,7 +326,7 @@ class StateDocEventFactory(DocEventFactory):
obj.save() obj.save()
# All of these Ballot* factories are extremely skeletal. Flesh them out as needed by tests. # 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: class Meta:
model = BallotType model = BallotType
django_get_or_create = ('slug','doc_type_id') django_get_or_create = ('slug','doc_type_id')
@ -363,14 +363,14 @@ class BallotPositionDocEventFactory(DocEventFactory):
balloter = factory.SubFactory('ietf.person.factories.PersonFactory') balloter = factory.SubFactory('ietf.person.factories.PersonFactory')
pos_id = 'discuss' pos_id = 'discuss'
class DocumentActionHolderFactory(factory.DjangoModelFactory): class DocumentActionHolderFactory(factory.django.DjangoModelFactory):
class Meta: class Meta:
model = DocumentActionHolder model = DocumentActionHolder
document = factory.SubFactory(WgDraftFactory) document = factory.SubFactory(WgDraftFactory)
person = factory.SubFactory('ietf.person.factories.PersonFactory') person = factory.SubFactory('ietf.person.factories.PersonFactory')
class DocumentAuthorFactory(factory.DjangoModelFactory): class DocumentAuthorFactory(factory.django.DjangoModelFactory):
class Meta: class Meta:
model = DocumentAuthor model = DocumentAuthor

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -32,7 +32,7 @@ def setup():
# extraction code, and also don't seem to match the way people with arabic # extraction code, and also don't seem to match the way people with arabic
# names romanize arabic names. Exlude those locales from name generation # names romanize arabic names. Exlude those locales from name generation
# in order to avoid test failures. # 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] acceptable_fakers = [faker.Faker(locale) for locale in locales]
setup() setup()
@ -40,7 +40,7 @@ def random_faker():
global acceptable_fakers global acceptable_fakers
return random.sample(acceptable_fakers, 1)[0] return random.sample(acceptable_fakers, 1)[0]
class UserFactory(factory.DjangoModelFactory): class UserFactory(factory.django.DjangoModelFactory):
class Meta: class Meta:
model = User model = User
django_get_or_create = ('username',) 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 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 obj.set_password( '%s+password' % obj.username ) # pylint: disable=no-value-for-parameter
class PersonFactory(factory.DjangoModelFactory): class PersonFactory(factory.django.DjangoModelFactory):
class Meta: class Meta:
model = Person model = Person
@ -102,7 +102,7 @@ class PersonFactory(factory.DjangoModelFactory):
os.unlink(file) os.unlink(file)
atexit.register(delete_file, photodst) atexit.register(delete_file, photodst)
class AliasFactory(factory.DjangoModelFactory): class AliasFactory(factory.django.DjangoModelFactory):
class Meta: class Meta:
model = Alias 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) raise RuntimeError("Failed generating a fake email address to fit in Email.address(max_length=%s)"%address_field.max_lenth)
return address return address
class EmailFactory(factory.DjangoModelFactory): class EmailFactory(factory.django.DjangoModelFactory):
class Meta: class Meta:
model = Email model = Email
django_get_or_create = ('address',) 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 '') 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) person = factory.SubFactory(PersonFactory)
endpoint = FuzzyChoice(PERSON_API_KEY_ENDPOINTS) endpoint = FuzzyChoice(PERSON_API_KEY_ENDPOINTS)
class Meta: class Meta:
model = PersonalApiKey model = PersonalApiKey
class PersonApiKeyEventFactory(factory.DjangoModelFactory): class PersonApiKeyEventFactory(factory.django.DjangoModelFactory):
key = factory.SubFactory(PersonalApiKeyFactory) key = factory.SubFactory(PersonalApiKeyFactory)
person = factory.LazyAttribute(lambda o: o.key.person) person = factory.LazyAttribute(lambda o: o.key.person)
type = 'apikey_login' type = 'apikey_login'

View file

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

View file

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

View file

@ -11,7 +11,7 @@ from ietf.submit.models import Submission, SubmissionExtResource
from ietf.utils.accesstoken import generate_random_key from ietf.utils.accesstoken import generate_random_key
class SubmissionExtResourceFactory(factory.DjangoModelFactory): class SubmissionExtResourceFactory(factory.django.DjangoModelFactory):
name = factory.Iterator(ExtResourceName.objects.all()) name = factory.Iterator(ExtResourceName.objects.all())
value = factory.Faker('url') value = factory.Faker('url')
submission = factory.SubFactory('ietf.submit.factories.SubmissionFactory') submission = factory.SubFactory('ietf.submit.factories.SubmissionFactory')
@ -19,7 +19,7 @@ class SubmissionExtResourceFactory(factory.DjangoModelFactory):
class Meta: class Meta:
model = SubmissionExtResource model = SubmissionExtResource
class SubmissionFactory(factory.DjangoModelFactory): class SubmissionFactory(factory.django.DjangoModelFactory):
state_id = 'uploaded' state_id = 'uploaded'
@factory.lazy_attribute_sequence @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-webtest>=1.9.7
django-widget-tweaks>=1.4.2 django-widget-tweaks>=1.4.2
docutils>=0.12,!=0.15 docutils>=0.12,!=0.15
factory-boy>=2.9.0,<3 #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. #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 github3.py>=1.2
hashids>=1.1.0 hashids>=1.1.0
html2text>=2019.8.11 html2text>=2019.8.11