def html_declarations(cls): rendered = [] member_templates = [] template_mapper = {} for block in cls.block_def.all_blocks(): if isinstance(block, StreamBlock): for name, child_block in block.child_blocks.items(): if child_block.definition_prefix not in rendered: member_templates.append( (child_block.definition_prefix, mark_safe( escape_script( block.render_list_member( name, child_block.get_default(), '__PREFIX__', ''))))) rendered.append(child_block.definition_prefix) template_mapper['{0}-newmember-{1}'.format( block.definition_prefix, name)] = child_block.definition_prefix elif isinstance(block, ListBlock): if block.child_block.definition_prefix not in rendered: member_templates.append( (block.child_block.definition_prefix, mark_safe( escape_script( block.render_list_member( block.child_block.get_default(), '__PREFIX__', ''))))) rendered.append(block.child_block.definition_prefix) template_mapper['{0}-newmember'.format( block.definition_prefix )] = block.child_block.definition_prefix html_declarations = format_html( '\n<script type="text/javascript">\nwindow.sequence_tpl_mapper={0};\n</script>\n', mark_safe(json.dumps(template_mapper))) html_declarations += format_html_join( '\n', '<script type="text/template" id="{0}">{1}</script>', member_templates) return html_declarations + format_html( '\n{0}', cls.block_def.all_html_declarations())
def html_declarations(self): return format_html_join( '\n', '<script type="text/template" id="{0}-newmember-{1}">{2}</script>', [(self.definition_prefix, name, mark_safe( escape_script( self.render_list_member(name, child_block.meta.default, '__PREFIX__', '')))) for name, child_block in self.child_blocks.items()])
def html_declarations(self): # generate the HTML to be used when adding a new item to the list; # this is the output of render_list_member as rendered with the prefix '__PREFIX__' # (to be replaced dynamically when adding the new item) and the child block's default value # as its value. list_member_html = self.render_list_member( self.child_block.get_default(), '__PREFIX__', '') return format_html( '<script type="text/template" id="{0}-newmember">{1}</script>', self.definition_prefix, mark_safe(escape_script(list_member_html)))
def html_declarations(self): # generate the HTML to be used when adding a new item to the list; # this is the output of render_list_member as rendered with the prefix '__PREFIX__' # (to be replaced dynamically when adding the new item) and the child block's default value # as its value. list_member_html = self.render_list_member(self.child_block.meta.default, '__PREFIX__', '') return format_html( '<script type="text/template" id="{0}-newmember">{1}</script>', self.definition_prefix, mark_safe(escape_script(list_member_html)) )
def html_declarations(self): return format_html_join( '\n', '<script type="text/template" id="{0}-newmember-{1}">{2}</script>', [ ( self.definition_prefix, name, mark_safe(escape_script(self.render_list_member(name, child_block.get_default(), '__PREFIX__', ''))) ) for name, child_block in self.child_blocks.items() ] )
def render(self, context): out = self.nodelist.render(context) return escape_script(out)