forked from ungleich-public/dynamicweb
109 lines
No EOL
2.8 KiB
Python
109 lines
No EOL
2.8 KiB
Python
import factory
|
|
from django.contrib.sites.models import Site
|
|
from django.conf import settings
|
|
|
|
from datacenterlight.cms_models import CMSIntegration
|
|
from digitalglarus.models import BookingPrice, Supporter
|
|
from membership.models import CustomUser, StripeCustomer
|
|
from djangocms_blog.models import Post
|
|
|
|
|
|
class SiteFactory(factory.django.DjangoModelFactory):
|
|
class Meta:
|
|
model = Site
|
|
django_get_or_create = ("domain",)
|
|
|
|
domain = factory.Sequence(lambda n: f"example{n}.test")
|
|
name = factory.LazyAttribute(lambda obj: obj.domain)
|
|
|
|
|
|
class CMSIntegrationFactory(factory.django.DjangoModelFactory):
|
|
class Meta:
|
|
model = CMSIntegration
|
|
|
|
name = factory.Sequence(lambda n: f"integration-{n}")
|
|
domain = factory.SubFactory(SiteFactory)
|
|
|
|
|
|
class SupporterFactory(factory.django.DjangoModelFactory):
|
|
class Meta:
|
|
model = Supporter
|
|
|
|
name = factory.Sequence(lambda n: f"Supporter {n}")
|
|
|
|
|
|
class BookingPriceFactory(factory.django.DjangoModelFactory):
|
|
class Meta:
|
|
model = BookingPrice
|
|
|
|
price_per_day = 10
|
|
special_month_price = 100
|
|
|
|
|
|
class CustomUserFactory(factory.django.DjangoModelFactory):
|
|
class Meta:
|
|
model = CustomUser
|
|
|
|
site = factory.LazyFunction(lambda: Site.objects.get(pk=1))
|
|
name = factory.Sequence(lambda n: f"Test User {n}")
|
|
email = factory.Sequence(lambda n: f"user{n}@example.com")
|
|
username = factory.Sequence(lambda n: f"user{n}")
|
|
|
|
validated = 1
|
|
in_ldap = False
|
|
is_admin = False
|
|
|
|
@factory.post_generation
|
|
def password(self, create, extracted, **kwargs):
|
|
if not create:
|
|
return
|
|
|
|
password = extracted or "testpassword123"
|
|
self.set_password(password)
|
|
self.save(update_fields=["password"])
|
|
|
|
|
|
class PostFactory(factory.django.DjangoModelFactory):
|
|
class Meta:
|
|
model = Post
|
|
|
|
author = factory.SubFactory(CustomUserFactory)
|
|
|
|
publish = True
|
|
include_in_rss = True
|
|
enable_comments = False
|
|
enable_liveblog = False
|
|
|
|
@classmethod
|
|
def _create(cls, model_class, *args, **kwargs):
|
|
language_code = kwargs.pop(
|
|
"language_code",
|
|
settings.LANGUAGE_CODE,
|
|
)
|
|
|
|
title = kwargs.pop("title", "Test Post")
|
|
slug = kwargs.pop("slug", "test-post")
|
|
|
|
post = model_class(*args, **kwargs)
|
|
|
|
post.set_current_language(language_code)
|
|
post.title = title
|
|
post.slug = slug
|
|
post.subtitle = ""
|
|
post.abstract = ""
|
|
post.meta_description = ""
|
|
post.meta_keywords = ""
|
|
post.meta_title = ""
|
|
post.post_text = ""
|
|
|
|
post.save()
|
|
|
|
return post
|
|
|
|
|
|
class StripeCustomerFactory(factory.django.DjangoModelFactory):
|
|
user = factory.SubFactory(CustomUserFactory)
|
|
stripe_id = factory.Sequence(lambda n: f"cus_test_{n}")
|
|
|
|
class Meta:
|
|
model = StripeCustomer |