Fixed #17920 -- Actually pass the full path of a newly created project or app in the template context as mentioned in the startproject docs. Many thanks to Preston Holmes for the initial patch.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@17773 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
1101739668
commit
4219e2b7f8
|
@ -1,5 +1,6 @@
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
import os, sys
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "{{ project_name }}.settings")
|
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "{{ project_name }}.settings")
|
||||||
|
|
|
@ -89,8 +89,10 @@ class TemplateCommand(BaseCommand):
|
||||||
message = e
|
message = e
|
||||||
raise CommandError(message)
|
raise CommandError(message)
|
||||||
else:
|
else:
|
||||||
top_dir = path.expanduser(target)
|
top_dir = os.path.abspath(path.expanduser(target))
|
||||||
|
if not os.path.exists(top_dir):
|
||||||
|
raise CommandError("Destination directory '%s' does not "
|
||||||
|
"exist, please create it first." % top_dir)
|
||||||
|
|
||||||
extensions = tuple(
|
extensions = tuple(
|
||||||
handle_extensions(options.get('extensions'), ignored=()))
|
handle_extensions(options.get('extensions'), ignored=()))
|
||||||
|
|
|
@ -1 +1,6 @@
|
||||||
# The manage.py of the {{ project_name }} test project
|
# The manage.py of the {{ project_name }} test project
|
||||||
|
|
||||||
|
# template context:
|
||||||
|
project_name = '{{ project_name }}'
|
||||||
|
project_directory = '{{ project_directory }}'
|
||||||
|
secret_key = '{{ secret_key }}'
|
||||||
|
|
|
@ -1534,3 +1534,32 @@ class StartProject(LiveServerTestCase, AdminScriptTestCase):
|
||||||
with open(os.path.join(base_path, f)) as fh:
|
with open(os.path.join(base_path, f)) as fh:
|
||||||
self.assertEqual(fh.read(),
|
self.assertEqual(fh.read(),
|
||||||
'# some file for customtestproject test project')
|
'# some file for customtestproject test project')
|
||||||
|
|
||||||
|
def test_custom_project_template_context_variables(self):
|
||||||
|
"Make sure template context variables are rendered with proper values"
|
||||||
|
template_path = os.path.join(test_dir, 'admin_scripts', 'custom_templates', 'project_template')
|
||||||
|
args = ['startproject', '--template', template_path, 'another_project', 'project_dir']
|
||||||
|
testproject_dir = os.path.join(test_dir, 'project_dir')
|
||||||
|
os.mkdir(testproject_dir)
|
||||||
|
out, err = self.run_django_admin(args)
|
||||||
|
self.addCleanup(shutil.rmtree, testproject_dir)
|
||||||
|
self.assertNoOutput(err)
|
||||||
|
test_manage_py = os.path.join(testproject_dir, 'manage.py')
|
||||||
|
with open(test_manage_py, 'r') as fp:
|
||||||
|
content = fp.read()
|
||||||
|
self.assertIn("project_name = 'another_project'", content)
|
||||||
|
self.assertIn("project_directory = '%s'" % testproject_dir, content)
|
||||||
|
|
||||||
|
def test_custom_project_destination_missing(self):
|
||||||
|
"""
|
||||||
|
Make sure an exception is raised when the provided
|
||||||
|
destination directory doesn't exist
|
||||||
|
"""
|
||||||
|
template_path = os.path.join(test_dir, 'admin_scripts', 'custom_templates', 'project_template')
|
||||||
|
args = ['startproject', '--template', template_path, 'yet_another_project', 'project_dir2']
|
||||||
|
testproject_dir = os.path.join(test_dir, 'project_dir2')
|
||||||
|
out, err = self.run_django_admin(args)
|
||||||
|
self.assertNoOutput(out)
|
||||||
|
self.assertOutput(err, "Destination directory '%s' does not exist, please create it first." % testproject_dir)
|
||||||
|
self.assertFalse(os.path.exists(testproject_dir))
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue