def render(self, context): # our main context storage = Context() # stash the whole context if needed if getattr(settings, 'PHASED_KEEP_CONTEXT', False): storage.update(flatten_context(context)) # but check if there are variables specifically wanted for var_name in self.var_names: if var_name[0] in ('"', "'") and var_name[-1] == var_name[0]: var_name = var_name[1:-1] try: storage[var_name] = Variable(var_name).resolve(context) except VariableDoesNotExist: raise TemplateSyntaxError( '"phased" tag got an unknown variable: %r' % var_name) storage = backup_csrf_token(context, storage) # lastly return the pre phased template part return u'%(delimiter)s%(content)s%(pickled)s%(delimiter)s' % { 'content': self.content, 'delimiter': settings.PHASED_SECRET_DELIMITER, 'pickled': pickle_context(storage), }
def render(self, context): # our main context storage = Context() # stash the whole context if needed if settings.KEEP_CONTEXT: storage.update(flatten_context(context)) # but check if there are variables specifically wanted for var_name in self.var_names: if var_name[0] in ('"', "'") and var_name[-1] == var_name[0]: var_name = var_name[1:-1] try: storage[var_name] = Variable(var_name).resolve(context) except VariableDoesNotExist: raise TemplateSyntaxError( '"phased" tag got an unknown variable: %r' % var_name) # lastly return the pre phased template part return u'%(delimiter)s%(content)s%(pickled_context)s%(pickled_components)s%(delimiter)s' % { 'content': self.content, 'delimiter': settings.SECRET_DELIMITER, 'pickled_context': pickle_context(backup_csrf_token(context, storage)), 'pickled_components': pickle_components(self.components), }
def test_phased(self): context = Context({'test_var': 'TEST'}) first_render = compile_string(self.test_template, None).render(context) self.assertEqual( first_render, 'fancydelimiter{%% if 1 %%}test{%% endif %%}%sfancydelimiterTEST' % pickle_context(backup_csrf_token(context)))
def render(self, context): # our main context storage = Context() # stash the whole context if needed if getattr(settings, 'PHASED_KEEP_CONTEXT', False): storage.update(flatten_context(context)) # but check if there are variables specifically wanted for var_name in self.var_names: if var_name[0] in ('"', "'") and var_name[-1] == var_name[0]: var_name = var_name[1:-1] try: storage[var_name] = Variable(var_name).resolve(context) except VariableDoesNotExist: pass storage = backup_csrf_token(context, storage) # lastly return the pre phased template part return u'%(delimiter)s%(content)s%(pickled)s%(delimiter)s' % { 'content': self.content, 'delimiter': settings.PHASED_SECRET_DELIMITER, 'pickled': pickle_context(storage), }
def test_phased(self): context = Context({'test_var': 'TEST'}) first_render = compile_string(self.test_template, None).render(context) self.assertEqual( first_render, '%(delimiter)s{%% load phased_tags %%}{%% phased %%}{%% if 1 %%}first{%% endif %%}{%% endphased %%}{%% if 1 %%}second{%% endif %%}%(pickled_context)s%(delimiter)sTEST' % dict(delimiter=settings.PHASED_SECRET_DELIMITER, pickled_context=pickle_context(backup_csrf_token(context))))
def test_phased(self): context = Context({'test_var': 'TEST'}) first_render = compile_string(self.test_template, None).render(context) pickled_components = '{# components "gAJdcQFVH3BoYXNlZC50ZW1wbGF0ZXRhZ3MucGhhc2VkX3RhZ3NxAmEu" endcomponents #}' self.assertEqual(first_render, '%(delimiter)s{%% load phased_tags %%}{%% phased %%}{%% if 1 %%}first{%% endif %%}{%% endphased %%}{%% if 1 %%}second{%% endif %%}%(pickled_context)s%(pickled_components)s%(delimiter)sTEST' % dict(delimiter=settings.SECRET_DELIMITER, pickled_context=pickle_context(backup_csrf_token(context)), pickled_components=pickled_components))
def test_phased(self): context = Context({'test_var': 'TEST'}) first_render = compile_string(self.test_template, None).render(context) pickled_components = '{# components "gAJdcQFVH3BoYXNlZC50ZW1wbGF0ZXRhZ3MucGhhc2VkX3RhZ3NxAmEu" endcomponents #}' self.assertEqual(first_render, 'fancydelimiter{%% if 1 %%}test{%% endif %%}%s%sfancydelimiterTEST' % (pickle_context(backup_csrf_token(context)), pickled_components))
def test_phased(self): context = Context({'test_var': 'TEST'}) first_render = compile_string(self.test_template, None).render(context) self.assertEqual(first_render, '%(delimiter)s{%% load phased_tags %%}{%% phased %%}{%% if 1 %%}first{%% endif %%}{%% endphased %%}{%% if 1 %%}second{%% endif %%}%(pickled_context)s%(delimiter)sTEST' % dict(delimiter=settings.PHASED_SECRET_DELIMITER, pickled_context=pickle_context(backup_csrf_token(context))))
def test_phased(self): context = Context({'test_var': 'TEST'}) first_render = compile_string(self.test_template, None).render(context) self.assertEqual(first_render, 'fancydelimiter{%% if 1 %%}test{%% endif %%}%sfancydelimiterTEST' % pickle_context(backup_csrf_token(context)))