Loading django/core/management/templates.py +4 −2 Original line number Diff line number Diff line Loading @@ -8,6 +8,8 @@ import shutil import stat import sys import tempfile import codecs try: from urllib.request import urlretrieve except ImportError: # Python 2 Loading Loading @@ -154,12 +156,12 @@ class TemplateCommand(BaseCommand): # Only render the Python files, as we don't want to # accidentally render Django templates files with open(old_path, 'r') as template_file: with codecs.open(old_path, 'r', 'utf-8') as template_file: content = template_file.read() if filename.endswith(extensions) or filename in extra_files: template = Template(content) content = template.render(context) with open(new_path, 'w') as new_file: with codecs.open(new_path, 'w', 'utf-8') as new_file: new_file.write(content) if self.verbosity >= 2: Loading tests/regressiontests/admin_scripts/custom_templates/project_template/ticket-18091-non-ascii-template.txt 0 → 100644 +2 −0 Original line number Diff line number Diff line Some non-ASCII text for testing ticket #18091: üäö € tests/regressiontests/admin_scripts/tests.py +13 −0 Original line number Diff line number Diff line Loading @@ -1573,3 +1573,16 @@ class StartProject(LiveServerTestCase, AdminScriptTestCase): self.assertOutput(err, "Destination directory '%s' does not exist, please create it first." % testproject_dir) self.assertFalse(os.path.exists(testproject_dir)) def test_custom_project_template_with_non_ascii_templates(self): "Ticket 18091: Make sure the startproject management command is able to render templates with non-ASCII content" template_path = os.path.join(test_dir, 'admin_scripts', 'custom_templates', 'project_template') args = ['startproject', '--template', template_path, '--extension=txt', 'customtestproject'] testproject_dir = os.path.join(test_dir, 'customtestproject') out, err = self.run_django_admin(args) self.addCleanup(shutil.rmtree, testproject_dir) self.assertNoOutput(err) self.assertTrue(os.path.isdir(testproject_dir)) self.assertEqual(open(os.path.join(testproject_dir, 'ticket-18091-non-ascii-template.txt')).read(), 'Some non-ASCII text for testing ticket #18091:\n\xc3\xbc\xc3\xa4\xc3\xb6 \xe2\x82\xac\n') Loading
django/core/management/templates.py +4 −2 Original line number Diff line number Diff line Loading @@ -8,6 +8,8 @@ import shutil import stat import sys import tempfile import codecs try: from urllib.request import urlretrieve except ImportError: # Python 2 Loading Loading @@ -154,12 +156,12 @@ class TemplateCommand(BaseCommand): # Only render the Python files, as we don't want to # accidentally render Django templates files with open(old_path, 'r') as template_file: with codecs.open(old_path, 'r', 'utf-8') as template_file: content = template_file.read() if filename.endswith(extensions) or filename in extra_files: template = Template(content) content = template.render(context) with open(new_path, 'w') as new_file: with codecs.open(new_path, 'w', 'utf-8') as new_file: new_file.write(content) if self.verbosity >= 2: Loading
tests/regressiontests/admin_scripts/custom_templates/project_template/ticket-18091-non-ascii-template.txt 0 → 100644 +2 −0 Original line number Diff line number Diff line Some non-ASCII text for testing ticket #18091: üäö €
tests/regressiontests/admin_scripts/tests.py +13 −0 Original line number Diff line number Diff line Loading @@ -1573,3 +1573,16 @@ class StartProject(LiveServerTestCase, AdminScriptTestCase): self.assertOutput(err, "Destination directory '%s' does not exist, please create it first." % testproject_dir) self.assertFalse(os.path.exists(testproject_dir)) def test_custom_project_template_with_non_ascii_templates(self): "Ticket 18091: Make sure the startproject management command is able to render templates with non-ASCII content" template_path = os.path.join(test_dir, 'admin_scripts', 'custom_templates', 'project_template') args = ['startproject', '--template', template_path, '--extension=txt', 'customtestproject'] testproject_dir = os.path.join(test_dir, 'customtestproject') out, err = self.run_django_admin(args) self.addCleanup(shutil.rmtree, testproject_dir) self.assertNoOutput(err) self.assertTrue(os.path.isdir(testproject_dir)) self.assertEqual(open(os.path.join(testproject_dir, 'ticket-18091-non-ascii-template.txt')).read(), 'Some non-ASCII text for testing ticket #18091:\n\xc3\xbc\xc3\xa4\xc3\xb6 \xe2\x82\xac\n')