def test_apply_style_not_affecting_definition_2(): register_style( 'foo_style', Style(MenuItem__attrs__class__foo=True, ), ) register_style( 'bar_style', Style(MenuItem__attrs__class__bar=True, ), ) class MyPage(Page): menu = Menu(sub_menu=dict(root=MenuItem())) class OtherPage(Page): menu = MyPage.menu page = MyPage(iommi_style='foo_style').bind(request=Struct(path='')) assert page.parts.menu.sub_menu.root.attrs['class'] == dict(foo=True) page = OtherPage(iommi_style='bar_style').bind(request=Struct(path='')) assert page.parts.menu.sub_menu.root.attrs['class'] == dict(bar=True) unregister_style('foo_style') unregister_style('bar_style')
def test_apply_style_not_affecting_definition(settings): register_style('my_style', Style(Fragment__attrs__class__foo=True, )) register_style('other_style', Style(Fragment__attrs__class__bar=True, )) definition = Fragment() settings.IOMMI_DEFAULT_STYLE = 'my_style' fragment = definition.bind(request=None) assert fragment.attrs['class'] == dict(foo=True) settings.IOMMI_DEFAULT_STYLE = 'other_style' fragment = definition.bind(request=None) assert fragment.attrs['class'] == dict(bar=True) unregister_style('my_style') unregister_style('other_style')
def test_context_processor_is_called_on_render_root(): style_name = 'test_context_processor_is_called_on_render_root' style = Style( base, base_template='test_context_processor_is_called_on_render_root.html', ) register_style(style_name, style) part = Page( context__root_part_context_variable='root_part_context_variable', iommi_style=style_name, ) t = render_root( part=part.bind(request=req('get')), context=dict(my_context_variable='my_context_variable'), ) assert t == 'context_processor_is_called\nroot_part_context_variable\nmy_context_variable\n'
def ready(self): from django.contrib.auth.models import ( User, Permission, ) register_search_fields(model=User, search_fields=['username']) register_search_fields(model=Permission, search_fields=['codename']) from iommi import register_style from iommi.style_test_base import test from iommi.style_base import base from iommi.style_bootstrap import ( bootstrap, bootstrap_horizontal, ) from iommi.style_semantic_ui import semantic_ui from iommi.style_foundation import foundation, foundation_horizontal from iommi.style_django_admin import django_admin, django_admin_horizontal from iommi.style_water import water from iommi.style_bulma import bulma, bulma_query_form register_style('base', base) register_style('test', test) register_style('bulma', bulma) register_style('bulma_query_form', bulma_query_form) register_style('bootstrap', bootstrap) register_style('bootstrap_horizontal', bootstrap_horizontal) register_style('semantic_ui', semantic_ui) register_style('water', water) register_style('foundation', foundation) register_style('foundation_horizontal', foundation_horizontal) register_style('django_admin', django_admin) register_style('django_admin_horizontal', django_admin_horizontal)
def ready(self): from django.contrib.auth.models import ( User, Permission, ) register_search_fields(model=User, search_fields=['username']) register_search_fields(model=Permission, search_fields=['codename']) from iommi import register_style from iommi.style_test_base import test from iommi.style_base import base from iommi.style_bootstrap import ( bootstrap, bootstrap_horizontal, ) from iommi.style_semantic_ui import semantic_ui from iommi.style_foundation import foundation register_style('base', base) register_style('test', test) register_style('bootstrap', bootstrap) register_style('bootstrap_horizontal', bootstrap_horizontal) register_style('semantic_ui', semantic_ui) register_style('water', Style(base)) register_style('foundation', foundation)
def test_get_config(): with register_style( 'fruit_style', Style(Fruit__attrs__class__style=True, ), ): class Fruit(Traversable): attrs = Refinable() @reinvokable @dispatch( attrs__class__fruit=True, ) def __init__(self, **kwargs): super(Fruit, self).__init__(**kwargs) @classmethod @class_shortcut( attrs__class__some_fruit=True, ) def some_fruit(cls, *, call_target=None, **kwargs): return call_target(**kwargs) class SubFruit(Fruit): @reinvokable @dispatch( attrs__class__sub_fruit=True, ) def __init__(self, **kwargs): super(SubFruit, self).__init__(**kwargs) @classmethod @class_shortcut( call_target__attribute='some_fruit', attrs__class__sub_some_fruit=True, ) def some_fruit(cls, *, call_target=None, **kwargs): return call_target(**kwargs) @declarative(Fruit, '_fruits_dict') @with_meta class Basket(Traversable): fruits = Refinable() class Meta: fruits__banana__attrs__class__basket = True @dispatch( fruits=EMPTY, ) def __init__(self, *, _fruits_dict, fruits, **kwargs): super(Basket, self).__init__(**kwargs) collect_members(self, name='fruits', items_dict=_fruits_dict, items=fruits, cls=Fruit) def on_bind(self) -> None: bind_members(self, name='fruits') class SubBasket(Basket): class Meta: fruits__banana__attrs__class__sub_basket = True iommi_style = 'fruit_style' class MyBasket(SubBasket): banana = SubFruit.some_fruit( attrs__class__my_basket_fruit_invoke=True, ) basket = MyBasket( fruits__banana__attrs__class__my_basket_invoke=True).bind( request=None) assert list(basket.fruits.banana.attrs['class'].keys()) == [ 'fruit', 'sub_fruit', 'style', 'basket', 'sub_basket', 'my_basket_invoke', 'some_fruit', 'sub_some_fruit', 'my_basket_fruit_invoke', ]