Skip to content

Commit

Permalink
Fixed #17920 -- Actually pass the full path of a newly created projec…
Browse files Browse the repository at this point in the history
…t 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
  • Loading branch information
jezdez committed Mar 21, 2012
1 parent 1101739 commit 4219e2b
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 4 deletions.
3 changes: 2 additions & 1 deletion django/conf/project_template/manage.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#!/usr/bin/env python
import os, sys
import os
import sys

if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "{{ project_name }}.settings")
Expand Down
6 changes: 4 additions & 2 deletions django/core/management/templates.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,10 @@ def handle(self, app_or_project, name, target=None, **options):
message = e
raise CommandError(message)
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(
handle_extensions(options.get('extensions'), ignored=()))
Expand Down
Original file line number Diff line number Diff line change
@@ -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 }}'
29 changes: 29 additions & 0 deletions tests/regressiontests/admin_scripts/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -1534,3 +1534,32 @@ def test_file_without_extension(self):
with open(os.path.join(base_path, f)) as fh:
self.assertEqual(fh.read(),
'# 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))

0 comments on commit 4219e2b

Please sign in to comment.