1- import factory
21from django .utils import timezone
3- from factory .django import DjangoModelFactory
4- from meetups .models import Meetup
5- from sponsors .models import SponsorshipLevel
2+ import wagtail_factories
63
74from core .models import HomePage , SimplePage
5+ from meetups .models import Meetup
6+ from sponsors .models import SponsorshipLevel
87
9-
10- class SponsorshipLevelFactory (DjangoModelFactory ):
11- class Meta :
12- model = SponsorshipLevel
13- django_get_or_create = ("name" ,)
14-
15- level = 100
16- name = "Bronze"
17-
18-
19- class MeetupFactory (DjangoModelFactory ):
20- class Meta :
21- model = Meetup
22- django_get_or_create = ("id" ,)
23-
24- id = factory .Sequence (lambda n : f"meetup-{ n } " )
25- name = "Python Ireland Meetup"
26- description = "Monthly Python meetup in Dublin"
27- event_url = "https://meetup.com/pythonireland/"
28- time = factory .LazyFunction (lambda : timezone .now () + timezone .timedelta (days = 30 ))
29- created = factory .LazyFunction (timezone .now )
30- rsvps = 50
31- status = "upcoming"
32- visibility = "public"
33-
34-
35- class HomePageFactory (DjangoModelFactory ):
8+ def create_sponsorship_level (name = "Bronze" , level = 100 ):
9+ return SponsorshipLevel .objects .get_or_create (name = name , defaults = {"level" : level })[0 ]
10+
11+
12+ def create_meetup (id , name = "Python Ireland Meetup" , description = "Monthly Python meetup in Dublin" ,
13+ event_url = "https://meetup.com/pythonireland/" , time = None , created = None ,
14+ rsvps = 50 , status = "upcoming" , visibility = "public" ):
15+ if time is None :
16+ time = timezone .now () + timezone .timedelta (days = 30 )
17+ if created is None :
18+ created = timezone .now ()
19+
20+ return Meetup .objects .get_or_create (
21+ id = id ,
22+ defaults = {
23+ "name" : name ,
24+ "description" : description ,
25+ "event_url" : event_url ,
26+ "time" : time ,
27+ "created" : created ,
28+ "rsvps" : rsvps ,
29+ "status" : status ,
30+ "visibility" : visibility ,
31+ }
32+ )[0 ]
33+
34+
35+ class HomePageFactory (wagtail_factories .PageFactory ):
3636 class Meta :
3737 model = HomePage
3838
@@ -42,10 +42,18 @@ class Meta:
4242 body = []
4343
4444
45- class SimplePageFactory (DjangoModelFactory ):
45+ class SimplePageFactory (wagtail_factories . PageFactory ):
4646 class Meta :
4747 model = SimplePage
4848
4949 title = "Sample Page"
5050 slug = "sample-page"
5151 body = []
52+
53+
54+ def SponsorshipLevelFactory (name = "Bronze" , level = 100 ):
55+ return create_sponsorship_level (name = name , level = level )
56+
57+
58+ def MeetupFactory (id , name = "Python Ireland Meetup" , ** kwargs ):
59+ return create_meetup (id = id , name = name , ** kwargs )
0 commit comments