예제 #1
0
class ModuleFactory(BasePageFactory):
    hero_image = factory.SubFactory(DummyImageFactory)
    teaser = factory.LazyAttribute(
        lambda x: fake.sentence(nb_words=random.randint(8, 12)))
    lead = factory.LazyAttribute(
        lambda x: fake.sentence(nb_words=random.randint(8, 12)))
    skill = factory.LazyAttribute(fake_title)
    description = factory.LazyAttribute(lambda x: fake.text(max_nb_chars=200))

    video_id = random.choice(
        [274620659, 275716804, 269374180, 273656672, 275692750, 267406224])
    video_description = factory.LazyAttribute(
        lambda x: fake.text(max_nb_chars=200))

    resources = wagtail_factories.StreamFieldFactory({
        'link':
        LinkBlockFactory,
        'document':
        DocumentBlockFactory,
    })

    tools = wagtail_factories.StreamFieldFactory({
        'link':
        LinkBlockFactory,
        'document':
        DocumentBlockFactory,
    })

    class Meta:
        model = Module

    @classmethod
    def stream_field_magic(cls, kwargs, stream_field_name):
        if stream_field_name in kwargs:
            for idx, resource in enumerate(kwargs[stream_field_name]):
                value = resource['value']
                for jdx, field in enumerate(value):
                    kwargs['{}__{}__{}__{}'.format(stream_field_name, idx,
                                                   resource['type'],
                                                   field)] = value[field]
            del kwargs[stream_field_name]
        else:
            for i in range(0, random.randint(3, 7)):
                kwargs['{}__{}__{}__b'.format(
                    stream_field_name, i, random.choice(['link',
                                                         'document']))] = None

    @classmethod
    def create(cls, **kwargs):
        cls.stream_field_magic(kwargs, 'resources')
        cls.stream_field_magic(kwargs, 'tools')
        return cls._generate(CREATE_STRATEGY, kwargs)
예제 #2
0
class OperatorPageFactory(BasePageFactory):
    pseudonym = factory.LazyAttribute(lambda x: fake.domain_word().title())
    full_name = factory.LazyAttribute(lambda x: fake.name_male())
    bio = factory.LazyAttribute(lambda x: fake.text(max_nb_chars=240))
    companies = factory.LazyAttribute(lambda x: CompanyPage.objects.all().
                                      order_by('?')[:random.randint(1, 3)])

    portrait = wagtail_factories.StreamFieldFactory(
        {'image': PlainImageBlockFactory})
    portfolio = wagtail_factories.StreamFieldFactory(
        {'image': PlainImageBlockFactory})
    reviews = wagtail_factories.StreamFieldFactory({'review': ReviewFactory})

    @factory.post_generation
    def tags(self, create, extracted, **kwargs):
        if not create:
            # Simple build, do nothing.
            return
        self.tags.add(
            *list(Tag.objects.all().order_by('?')[:random.randint(4, 8)]))

    class Meta:
        model = OperatorPage

    @classmethod
    def create(cls, **kwargs):
        for i, item in enumerate([{
                'type': 'image',
                'initial': {
                    'dummy': 'dummy'
                }
        }] * random.randint(2, 4)):
            kwargs.update(_get_content_item(i, item, 'portrait'))

        for i, item in enumerate([{
                'type': 'image',
                'initial': {
                    'dummy': 'dummy'
                }
        }] * random.randint(3, 9)):
            kwargs.update(_get_content_item(i, item, 'portfolio'))

        for i, item in enumerate([{
                'type': 'review',
                'initial': {
                    'dummy': 'dummy'
                }
        }] * random.randint(2, 6)):
            kwargs.update(_get_content_item(i, item, 'reviews'))

        return cls._generate(factory.CREATE_STRATEGY, kwargs)
예제 #3
0
class BlogPageFactory(wagtail_factories.PageFactory):
    date = datetime.date.today()
    body = wagtail_factories.StreamFieldFactory({
        "heading":
        wagtail_factories.CharBlockFactory,
        "paragraph":
        RichTextBlockFactory,
        "image":
        wagtail_factories.ImageChooserBlockFactory,
        "decimal":
        DecimalBlockFactory,
        "date":
        DateBlockFactory,
        "datetime":
        DateTimeBlockFactory,
        "gallery":
        ImageGalleryBlockFactory,
    })

    class Meta:
        model = BlogPage

    @factory.post_generation
    def create_links(self, create, extracted, **kwargs):
        if create:
            # Create Blog Links
            BlogPageRelatedLinkFactory.create_batch(5, page=self)
예제 #4
0
class PageFactory(BasePageFactory):
    content = wagtail_factories.StreamFieldFactory(factories)

    class Meta:
        model = Page

    @staticmethod
    def _get_random_content_items():
        return [
            random.choice(list(factories.keys()))
            for i in range(0, random.randint(5, 10))
        ]

    @classmethod
    def create(cls, **kwargs):
        blocks = kwargs.pop('blocks', [{
            'type': c,
            'initial': {
                'dummy': 'dummy'
            }
        } for c in cls._get_random_content_items()])

        for i, item in enumerate(blocks):
            kwargs.update(_get_content_item(i, item))

        return cls._generate(factory.CREATE_STRATEGY, kwargs)
예제 #5
0
class CompanyPageFactory(BasePageFactory):
    name = factory.LazyAttribute(lambda x: fake.bs().title())
    street = factory.LazyAttribute(lambda x: fake.street_address())
    zip = factory.LazyAttribute(lambda x: str(random.randint(1000, 8000)))
    city = factory.LazyAttribute(lambda x: fake.city())
    portrait = wagtail_factories.StreamFieldFactory(
        {'image': PlainImageBlockFactory})
    bio = factory.LazyAttribute(lambda x: fake.text(max_nb_chars=240))

    latitude = factory.LazyAttribute(lambda x: fake.latitude())
    longitude = factory.LazyAttribute(lambda x: fake.longitude())

    class Meta:
        model = CompanyPage

    @classmethod
    def create(cls, **kwargs):
        for i, item in enumerate([{
                'type': 'image',
                'initial': {
                    'dummy': 'dummy'
                }
        }] * random.randint(2, 4)):
            kwargs.update(_get_content_item(i, item, 'portrait'))

        return cls._generate(factory.CREATE_STRATEGY, kwargs)
예제 #6
0
class BlogPostFactory(CorePageFactory):
    title = factory.Sequence(lambda n: "Blog Post %d" % n)
    body = wagtail_factories.StreamFieldFactory(
        {"paragraph": RichTextBlockFactory})
    body__0__paragraph__value = "<p>This is some text</p>"

    @factory.lazy_attribute
    def parent(self):
        return BlogPostIndexFactory.create()

    @factory.post_generation
    def authors(self, create, extracted, **kwargs):
        if not create:
            return
        if extracted:
            for author in extracted:
                self.authors.add(author)

    @factory.post_generation
    def tags(self, create, extracted, **kwargs):
        if not create:
            return
        if extracted:
            for tag in extracted:
                self.tags.add(tag)

    class Meta:
        model = BlogPost
예제 #7
0
파일: factories.py 프로젝트: mitodl/mitxpro
class LearningTechniquesPageFactory(wagtail_factories.PageFactory):
    """LearningTechniquesPage factory class"""

    technique_items = wagtail_factories.StreamFieldFactory(
        {"techniques": LearningTechniquesItemFactory})

    class Meta:
        model = LearningTechniquesPage
예제 #8
0
파일: factories.py 프로젝트: mitodl/mitxpro
class ResourcePageFactory(wagtail_factories.PageFactory):
    """ResourcePage factory class"""

    sub_heading = factory.fuzzy.FuzzyText(prefix="Sub heading ")
    content = wagtail_factories.StreamFieldFactory(
        {"content": ResourceBlockFactory})

    class Meta:
        model = ResourcePage
예제 #9
0
파일: factories.py 프로젝트: mitodl/mitxpro
class ImageCarouselPageFactory(wagtail_factories.PageFactory):
    """ImageCarouselPage factory class"""

    title = factory.fuzzy.FuzzyText(prefix="title")
    images = wagtail_factories.StreamFieldFactory(
        {"image": wagtail_factories.ImageChooserBlockFactory})

    class Meta:
        model = ImageCarouselPage
예제 #10
0
파일: factories.py 프로젝트: mitodl/mitxpro
class NewsAndEventsPageFactory(wagtail_factories.PageFactory):
    """NewsAndEventsPage factory class"""

    heading = factory.fuzzy.FuzzyText(prefix="heading ")
    items = wagtail_factories.StreamFieldFactory(
        {"news_and_events": NewsAndEventsBlockFactory})

    class Meta:
        model = NewsAndEventsPage
예제 #11
0
파일: factories.py 프로젝트: mitodl/mitxpro
class CertificatePageFactory(wagtail_factories.PageFactory):
    """CertificatePage factory class"""

    product_name = factory.fuzzy.FuzzyText(prefix="product_name")
    CEUs = factory.Faker("pystr_format", string_format="#.#")
    signatories = wagtail_factories.StreamFieldFactory(
        {"signatory": SignatoryPageFactory})

    class Meta:
        model = CertificatePage
예제 #12
0
파일: factories.py 프로젝트: mitodl/mitxpro
class FacultyMembersPageFactory(wagtail_factories.PageFactory):
    """FacultyMembersPage factory class"""

    heading = factory.fuzzy.FuzzyText(prefix="heading ")
    subhead = factory.fuzzy.FuzzyText(prefix="subhead ")
    members = wagtail_factories.StreamFieldFactory(
        {"member": FacultyBlockFactory})

    class Meta:
        model = FacultyMembersPage
예제 #13
0
파일: factories.py 프로젝트: mitodl/mitxpro
class UserTestimonialsPageFactory(wagtail_factories.PageFactory):
    """UserTestimonialsPage factory class"""

    heading = factory.fuzzy.FuzzyText(prefix="heading ")
    subhead = factory.fuzzy.FuzzyText(prefix="subhead ")
    items = wagtail_factories.StreamFieldFactory(
        {"testimonial": UserTestimonialBlockFactory})

    class Meta:
        model = UserTestimonialsPage
예제 #14
0
파일: factories.py 프로젝트: mitodl/mitxpro
class CoursesInProgramPageFactory(wagtail_factories.PageFactory):
    """CoursesInProgramPage factory class"""

    heading = factory.fuzzy.FuzzyText(prefix="Heading ")
    body = factory.fuzzy.FuzzyText(prefix="Body ")
    contents = wagtail_factories.StreamFieldFactory(
        {"item": CoursePageFactory})

    class Meta:
        model = CoursesInProgramPage
예제 #15
0
class MyTestPageWithStreamFieldFactory(wagtail_factories.PageFactory):

    body = wagtail_factories.StreamFieldFactory({
        'char_array':
        wagtail_factories.ListBlockFactory(wagtail_factories.CharBlockFactory),
        'int_array':
        wagtail_factories.ListBlockFactory(
            wagtail_factories.IntegerBlockFactory),
        'struct':
        MyBlockFactory,
        'image':
        wagtail_factories.ImageChooserBlockFactory
    })

    class Meta:
        model = models.MyTestPage
예제 #16
0
class MyTestPageWithStreamFieldFactory(wagtail_factories.PageFactory):

    body = wagtail_factories.StreamFieldFactory({
        "char_array":
        wagtail_factories.ListBlockFactory(wagtail_factories.CharBlockFactory),
        "int_array":
        wagtail_factories.ListBlockFactory(
            wagtail_factories.IntegerBlockFactory),
        "struct":
        MyBlockFactory,
        "image":
        wagtail_factories.ImageChooserBlockFactory,
    })

    class Meta:
        model = models.MyTestPage
예제 #17
0
class BlogPageFactory(wagtail_factories.PageFactory):
    title = factory.Sequence(lambda n: f"Blog post {n}")
    date = datetime.date.today()
    author = factory.SubFactory("home.factories.AuthorPageFactory")
    body = wagtail_factories.StreamFieldFactory({
        "heading":
        wagtail_factories.CharBlockFactory,
        "paragraph":
        RichTextBlockFactory,
        "image":
        wagtail_factories.ImageChooserBlockFactory,
        "decimal":
        DecimalBlockFactory,
        "date":
        DateBlockFactory,
        "datetime":
        DateTimeBlockFactory,
        "gallery":
        ImageGalleryBlockFactory,
        "page":
        PageChooserBlockFactory,
        "text_with_callable":
        TextWithCallableBlockFactory,
    })

    class Meta:
        model = BlogPage

    @factory.post_generation
    def create_links(self, create, extracted, **kwargs):
        if create:
            # Create Blog Links
            BlogPageRelatedLinkFactory.create_batch(5, page=self)
            # Create a Person
            person = PersonFactory.create()
            # Create Blog Authors
            AuthorFactory.create_batch(8, page=self, person=person)
            # Create Blog tags
            for tag in ["Tag 1", "Tag 2", "Tag 3"]:
                self.tags.add(tag)