Skip to content

Commit d22ac2b

Browse files
committed
add simple_tag 'stream_render' for posibility to add global context to blocks
1 parent 83ae37a commit d22ac2b

2 files changed

Lines changed: 12 additions & 5 deletions

File tree

streamfield/base.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ def __str__(self):
6060
def __repr__(self):
6161
return "<%s: %s>" % (self.__class__.__name__, self or "None")
6262

63-
def _iterate_over_models(self, callback):
63+
def _iterate_over_models(self, callback, tmpl_ctx=None):
6464
# iterate over models and apply callback function
6565
data = []
6666
for m in self.from_json():
@@ -87,13 +87,17 @@ def _iterate_over_models(self, callback):
8787
as_list=as_list,
8888
options=m['options']
8989
)
90+
91+
# add tmpl_ctx if exists. tmpl_ctx: additional context from templates
92+
if tmpl_ctx:
93+
ctx.update(tmpl_ctx)
9094
res = callback(model_class, model_str, content, ctx)
9195
data.append(res)
9296

9397
return data
9498

95-
def _render(self):
96-
data = self._iterate_over_models(_get_render_data)
99+
def _render(self, tmpl_ctx=None):
100+
data = self._iterate_over_models(_get_render_data, tmpl_ctx)
97101
return mark_safe("".join(data))
98102

99103
@cached_property

streamfield/templatetags/streamfield_tags.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,11 @@ def format_field(field):
3838
field=field
3939
)))
4040

41-
4241
def get_widget_name(field):
4342
return get_valid_filename(
4443
camel_case_to_spaces(field.field.widget.__class__.__name__)
45-
)
44+
)
45+
46+
@register.simple_tag
47+
def stream_render(stream_obj, **kwargs):
48+
return stream_obj._render(kwargs)

0 commit comments

Comments
 (0)