Skip to content
This repository has been archived by the owner on Jan 6, 2022. It is now read-only.

Commit

Permalink
Patches ListBlock & StructBlock __init__ to avoid using js_initializer.
Browse files Browse the repository at this point in the history
  • Loading branch information
BertrandBordage committed Sep 13, 2018
1 parent 54fb050 commit eeda46e
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 4 deletions.
13 changes: 12 additions & 1 deletion wagtail_react_streamfield/blocks/list_block.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,23 @@
from django.core.exceptions import ValidationError
from django.forms.utils import ErrorList
from django.utils.translation import ugettext_lazy as _
from wagtail.core.blocks import ListBlock
from wagtail.core.blocks import ListBlock, Block

from ..exceptions import RemovedError


class NewListBlock(ListBlock):
def __init__(self, child_block, **kwargs):
Block.__init__(self, **kwargs)

self.child_block = (child_block() if isinstance(child_block, type)
else child_block)

if not hasattr(self.meta, 'default'):
self.meta.default = [self.child_block.get_default()]

self.dependencies = [self.child_block]

def get_definition(self):
definition = super(ListBlock, self).get_definition()
definition.update(
Expand Down
15 changes: 14 additions & 1 deletion wagtail_react_streamfield/blocks/struct_block.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,22 @@
from wagtail.core.blocks import BaseStructBlock
from wagtail.core.blocks import BaseStructBlock, Block

from ..exceptions import RemovedError


class NewBaseStructBlock(BaseStructBlock):
def __init__(self, local_blocks=None, **kwargs):
self._constructor_kwargs = kwargs

Block.__init__(self, **kwargs)

self.child_blocks = self.base_blocks.copy()
if local_blocks:
for name, block in local_blocks:
block.set_name(name)
self.child_blocks[name] = block

self.dependencies = self.child_blocks.values()

def get_definition(self):
definition = super(BaseStructBlock, self).get_definition()
definition.update(
Expand Down
4 changes: 2 additions & 2 deletions wagtail_react_streamfield/monkey_patch.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ def inner(self, block=None, **kwargs):

def _patch_list_block():
_patch_with(ListBlock, NewListBlock,
'get_definition', 'render_list_member',
'__init__', 'get_definition', 'render_list_member',
'html_declarations', 'js_initializer', 'render_form',
'value_from_datadict', 'value_omitted_from_data', 'clean')
ListBlock._meta_class.min_num = None
Expand All @@ -68,7 +68,7 @@ def patch():
'value_from_datadict', 'value_omitted_from_data')
_patch_list_block()
_patch_with(BaseStructBlock, NewBaseStructBlock,
'get_definition',
'__init__', 'get_definition',
'js_initializer', 'get_form_context', 'render_form',
'value_from_datadict', 'value_omitted_from_data')
_patch_with(FieldBlock, NewFieldBlock,
Expand Down

0 comments on commit eeda46e

Please sign in to comment.