From 4d6f846208108d46935f508ca6cc8e224a76b026 Mon Sep 17 00:00:00 2001 From: Andy Babic Date: Wed, 5 Oct 2022 10:58:21 +0100 Subject: [PATCH] Use custom options class to silence TypeErrors from FactoryOptions._fill_from_meta --- src/wagtail_factories/factories.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/wagtail_factories/factories.py b/src/wagtail_factories/factories.py index 5f44b10..5290899 100644 --- a/src/wagtail_factories/factories.py +++ b/src/wagtail_factories/factories.py @@ -3,6 +3,7 @@ import factory from django.utils.text import slugify from factory import errors, utils +from factory.base import FactoryOptions, OptionDefault from factory.declarations import ParameteredAttribute from wagtail.images import get_image_model @@ -128,14 +129,23 @@ class PageFactoryMetaClass(FactoryMetaClass): def __new__(mcs, class_name, bases, attrs): new_class = super().__new__(mcs, class_name, bases, attrs) PAGE_FACTORIES.append(new_class) - new_class._meta.autotest = getattr(new_class._meta, "autotest", True) return new_class +class PageFactoryOptions(FactoryOptions): + def _build_default_options(self): + return super()._build_default_options() + [ + OptionDefault("autotest", True, inherit=False), + ] + + class PageFactory(MP_NodeFactory, metaclass=PageFactoryMetaClass): + title = "Test page" slug = factory.LazyAttribute(lambda obj: slugify(obj.title)) + _options_class = PageFactoryOptions + class Meta: model = Page autotest = False