65 lines
1.7 KiB
Python
65 lines
1.7 KiB
Python
import factory
|
|
import wagtail_factories
|
|
from django.utils import timezone
|
|
from taggit.models import Tag
|
|
from wagtail.models import Page
|
|
|
|
from apps.authors.models import Author
|
|
from apps.blog.models import ArticleIndexPage, ArticlePage, HomePage, TagMetadata
|
|
from apps.legal.models import LegalIndexPage, LegalPage
|
|
|
|
|
|
class AuthorFactory(factory.django.DjangoModelFactory):
|
|
class Meta:
|
|
model = Author
|
|
|
|
name = factory.Sequence(lambda n: f"Author {n}")
|
|
slug = factory.Sequence(lambda n: f"author-{n}")
|
|
|
|
|
|
class HomePageFactory(wagtail_factories.PageFactory):
|
|
class Meta:
|
|
model = HomePage
|
|
|
|
|
|
class ArticleIndexPageFactory(wagtail_factories.PageFactory):
|
|
class Meta:
|
|
model = ArticleIndexPage
|
|
|
|
|
|
class ArticlePageFactory(wagtail_factories.PageFactory):
|
|
class Meta:
|
|
model = ArticlePage
|
|
|
|
title = factory.Sequence(lambda n: f"Article {n}")
|
|
slug = factory.Sequence(lambda n: f"article-{n}")
|
|
author = factory.SubFactory(AuthorFactory)
|
|
summary = "Summary"
|
|
body = [("rich_text", "<p>Hello world</p>")]
|
|
first_published_at = factory.LazyFunction(timezone.now)
|
|
|
|
|
|
class LegalIndexPageFactory(wagtail_factories.PageFactory):
|
|
class Meta:
|
|
model = LegalIndexPage
|
|
|
|
|
|
class LegalPageFactory(wagtail_factories.PageFactory):
|
|
class Meta:
|
|
model = LegalPage
|
|
|
|
title = factory.Sequence(lambda n: f"Legal {n}")
|
|
slug = factory.Sequence(lambda n: f"legal-{n}")
|
|
body = "<p>Body</p>"
|
|
last_updated = factory.Faker("date_object")
|
|
|
|
|
|
def root_page():
|
|
return Page.get_first_root_node()
|
|
|
|
|
|
def create_tag_with_meta(name: str, colour: str = "neutral"):
|
|
tag, _ = Tag.objects.get_or_create(name=name, slug=name)
|
|
TagMetadata.objects.get_or_create(tag=tag, defaults={"colour": colour})
|
|
return tag
|