def test_get_filename(self): placeholder = PlaceholderNode("placeholdername") page = self.new_page({'slug': 'page1'}) fakefile = SimpleUploadedFile(name=six.u("myfile.pdf"), content=six.b('bytes')) self.assertTrue(fakefile.name in get_filename(page, placeholder, fakefile)) self.assertTrue("page_%d" % page.id in get_filename(page, placeholder, fakefile)) self.assertTrue(placeholder.name in get_filename(page, placeholder, fakefile))
def test_get_filename_edge_case(self): placeholder = PlaceholderNode("placeholdername") page = self.new_page({'slug': 'page1'}) fakefile = SimpleUploadedFile(name=u"hello<script>world", content=six.b('bytes')) filename = get_filename(page, placeholder.ctype, fakefile) self.assertNotIn('<', filename)
def test_placeholder_quoted_name(self): """Test placeholder name with quotes.""" page = self.new_page() context = {'current_page': page, 'lang': 'en-us'} placeholder = PlaceholderNode("test name") placeholder.save(page, 'en-us', 'some random value', False) pl1 = """{% load pages_tags %}{% placeholder "test name" as hello %}{{ hello }}""" template = self.get_template_from_string(pl1) self.assertEqual(render(template, context), 'some random value') placeholder = PlaceholderNode("with accent éàè") placeholder.save(page, 'en-us', 'some random value', False) pl1 = """{% load pages_tags %}{% placeholder "with accent éàè" as hello %}{{ hello }}""" template = self.get_template_from_string(pl1) self.assertEqual(render(template, context), 'some random value')
def test_placeholder_name_space_bug(self): """Cache key cannot us space.""" from pages.placeholders import PlaceholderNode page = self.new_page() placeholder = PlaceholderNode('test space', page=page) placeholder.save(page, 'fr', 'fr', True) self.assertEqual( Content.objects.get_content(page, 'fr', placeholder.ctype), 'fr')
def test_get_filename(self): placeholder = PlaceholderNode("placeholdername") page = self.new_page({'slug': 'page1'}) fakefile = SimpleUploadedFile(name=u"some {}[]@$%*()+myfile.pdf", content=six.b('bytes')) filename = get_filename(page, placeholder, fakefile) self.assertTrue('some-myfile.pdf' in filename) self.assertTrue("page_%d" % page.id in filename) self.assertTrue(placeholder.name in filename)
def test_get_filename_encoding_bug(self): """Problem with encoding file names""" placeholder = PlaceholderNode("placeholdername") page = self.new_page({'slug': 'page1'}) fakefile = SimpleUploadedFile(name=six.u("АБВГДЕЖ.pdf"), content=six.b('bytes')) filename = get_filename(page, placeholder, fakefile) self.assertTrue(fakefile.name in filename) self.assertTrue("page_%d" % page.id in filename) self.assertTrue(placeholder.name in filename)
def test_placeholder_need_iterable_nodelist_attr(self): """Should have a iterable nodelist.""" from pages.placeholders import PlaceholderNode page = self.new_page() placeholder = PlaceholderNode('test itrable', page=page) try: _ = (e for e in placeholder.nodelist) except TypeError: assert (False, 'is not iterable')
def test_get_filename_encoding_bug(self): """Problem with encoding file names""" placeholder = PlaceholderNode("placeholdername") page = self.new_page({'slug': 'page1'}) fakefile = SimpleUploadedFile(name=u"АБВГДЕЖ.pdf", content=b'blop') filename = get_filename(page, placeholder.ctype, fakefile) self.assertTrue(fakefile.name.lower() in filename) self.assertTrue("page_%d" % page.id in filename) self.assertTrue(placeholder.name in filename)
def test_placeholder_cache_bug(self): """There was an bad bug caused when the page cache was filled the first time.""" from pages.placeholders import PlaceholderNode page = self.new_page() placeholder = PlaceholderNode('test', page=page) placeholder.save(page, 'fr', 'fr', True) placeholder.save(page, 'en', 'en', True) self.assertEqual(Content.objects.get_content(page, 'fr', 'test'), 'fr')
def test_placeholder_untranslated_content(self): """Test placeholder untranslated content.""" self.set_setting("PAGE_USE_SITE_ID", False) page = self.new_page(content={}) placeholder = PlaceholderNode('untrans', page='p', untranslated=True) placeholder.save(page, 'fr-ch', 'test-content', True) placeholder.save(page, 'en-us', 'test-content', True) self.assertEqual(len(Content.objects.all()), 1) self.assertEqual(Content.objects.all()[0].language, 'en-us') placeholder = PlaceholderNode('untrans', page='p', untranslated=False) placeholder.save(page, 'fr-ch', 'test-content', True) self.assertEqual(len(Content.objects.all()), 2) # test the syntax page = self.new_page() template = django.template.loader.get_template( 'pages/tests/untranslated.html') context = {'current_page': page, 'lang': 'en-us'} self.assertEqual(render(template, context), '')
def test_placeholder_name_space_bug_with_template(self): """ Template space test """ from pages.placeholders import PlaceholderNode page = self.new_page() placeholder = PlaceholderNode('hello world', page=page) placeholder.save(page, 'fr-ch', 'hello!', True) context = Context({'current_page': page, 'lang':'fr-ch'}) pl1 = """{% load pages_tags %}{% placeholder "hello world" %}""" template = loader.get_template_from_string(pl1) self.assertEqual(template.render(context), 'hello!')
def do_placeholder(parser, token): """ Method that parse the placeholder template tag. Syntax:: {% placeholder <name> [on <page>] [with <widget>] \ [parsed] [as <varname>] %} Example usage:: {% placeholder about %} {% placeholder body with TextArea as body_text %} {% placeholder welcome with TextArea parsed as welcome_text %} {% placeholder teaser on next_page with TextArea parsed %} """ name, params = parse_placeholder(parser, token) return PlaceholderNode(name, **params)