-
Notifications
You must be signed in to change notification settings - Fork 37
/
Copy pathfactories.py
136 lines (101 loc) · 3.22 KB
/
factories.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
import factory
from django.core.files.base import ContentFile
from factory.django import DjangoModelFactory, ImageField
from wagtail.models import Locale
from wagtail_factories import (
ImageChooserBlockFactory,
ImageFactory,
PageFactory,
StreamFieldFactory,
)
from wagtail_factories.blocks import ChooserBlockFactory, BlockFactory
from wagtail_factories.factories import CollectionMemberFactory
from wagtailmedia.models import get_media_model
from comments.models import CommentStatus
from home.blocks import MediaBlock
from home.models import (
Article,
FooterIndexPage,
BannerIndexPage,
BannerPage,
HomePage,
MiscellaneousIndexPage,
OfflineContentIndexPage,
SVGToPNGMap,
Section,
SectionIndexPage,
SiteSettings,
)
class HomePageFactory(PageFactory):
title = factory.Sequence(lambda n: f'homepage{n}')
class Meta:
model = HomePage
class SectionIndexFactory(PageFactory):
title = 'Sections'
class Meta:
model = SectionIndexPage
class SectionFactory(PageFactory):
title = factory.Sequence(lambda n: f'section{n}')
lead_image = factory.SubFactory(ImageFactory)
image_icon = factory.SubFactory(ImageFactory)
class Meta:
model = Section
class MediaFactory(CollectionMemberFactory):
class Meta:
model = get_media_model()
title = factory.Sequence(lambda n: f'media{n}')
file = factory.django.FileField()
class MediaBlockFactory(BlockFactory):
media = factory.SubFactory(MediaFactory)
class Meta:
model = MediaBlock
class ArticleFactory(PageFactory):
title = factory.Sequence(lambda n: f'article{n}')
lead_image = factory.SubFactory(ImageFactory)
commenting_status = CommentStatus.OPEN
body = StreamFieldFactory(
{
"image": factory.SubFactory(ImageChooserBlockFactory),
"media": factory.SubFactory(MediaBlockFactory),
}
)
class Meta:
model = Article
class MiscellaneousIndexPageFactory(PageFactory):
title = factory.Sequence(lambda n: f'miscellaneous{n}')
class Meta:
model = MiscellaneousIndexPage
class OfflineContentIndexPageFactory(ArticleFactory):
title = factory.Sequence(lambda n: f'offline-content-index{n}')
class Meta:
model = OfflineContentIndexPage
class SVGToPNGMapFactory(DjangoModelFactory):
png_image_file = factory.LazyAttribute(
lambda _: ContentFile(
ImageField()._make_data(
{'width': 1024, 'height': 768}
), 'example.jpg'
)
)
class Meta:
model = SVGToPNGMap
class SiteSettingsFactory(DjangoModelFactory):
class Meta:
model = SiteSettings
class LocaleFactory(DjangoModelFactory):
class Meta:
model = Locale
django_get_or_create = ('language_code',)
class FooterIndexPageFactory(PageFactory):
title = 'Footers'
class Meta:
model = FooterIndexPage
class BannerIndexPageFactory(PageFactory):
title = 'Banners'
class Meta:
model = BannerIndexPage
class BannerFactory(PageFactory):
title = factory.Sequence(lambda n: f'banner{n}')
banner_image = factory.SubFactory(ImageFactory)
class Meta:
model = BannerPage