def test_pickling(self): self.assertRaises(TemplateSyntaxError, pickle_context, {}) self.assertEqual(pickle_context(Context()), '{# stashed context: "gAJ9cQAu" #}') context = Context({'test_var': 'TEST'}) template = '<!-- better be careful %s yikes -->' self.assertEqual(pickle_context(context), '{# stashed context: "gAJ9cQBVCHRlc3RfdmFycQFVBFRFU1RxAnMu" #}') self.assertEqual(pickle_context(context, template), '<!-- better be careful gAJ9cQBVCHRlc3RfdmFycQFVBFRFU1RxAnMu yikes -->')
def test_unpickling(self): self.assertEqual(unpickle_context(pickle_context(Context())), flatten_context(Context())) context = Context({'test_var': 'TEST'}) pickled_context = pickle_context(context) unpickled_context = unpickle_context(pickled_context) self.assertEqual(flatten_context(context), unpickled_context)
def test_pickling(self): self.assertRaises(TemplateSyntaxError, pickle_context, {}) self.assertEqual(pickle_context(Context()), '{# context "gAJ9Lg==" endcontext #}') context = Context({'test_var': 'TEST'}) template = '<!-- better be careful %s yikes -->' self.assertEqual(pickle_context(context), '{# context "gAJ9cQFVCHRlc3RfdmFycQJVBFRFU1RxA3Mu" endcontext #}') self.assertEqual(pickle_context(context, template), '<!-- better be careful gAJ9cQFVCHRlc3RfdmFycQJVBFRFU1RxA3Mu yikes -->')
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 test_unpickling_with_template_and_pattern(self): context = Context({'test_var': 'TEST'}) template = '<!-- better be careful %s yikes -->' pattern = re.compile(r'.*<!-- better be careful (.*) yikes -->.*') pickled_context = pickle_context(context, template) unpickled_context = unpickle_context(pickled_context, pattern) self.assertEqual(flatten_context(context), unpickled_context)
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 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 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 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) original_context = unpickle_context(first_render) self.assertNotEqual(flatten_context(context), original_context) pickled_context = pickle_context(Context({'csrf_token': 'NOTPROVIDED'})) self.assertEqual(first_render, '%(delimiter)s{%% if 1 %%}test{%% endif %%}%(pickled_context)s%(delimiter)sTEST' % dict(delimiter=settings.PHASED_SECRET_DELIMITER, pickled_context=pickled_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)))
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))))