Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Made sure startproject can handle template URLs with trailing slashes.

Thanks Issac Kelly that reported this via IRC.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@17320 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit f250ef3573d44ebb2c17c401851768a235742062 1 parent 068dcbd
@ramiro ramiro authored
View
13 django/core/management/templates.py
@@ -196,13 +196,22 @@ def download(self, url):
"""
Downloads the given URL and returns the file name.
"""
+ def cleanup_url(url):
+ tmp = url.rstrip('/')
+ filename = tmp.split('/')[-1]
+ if url.endswith('/'):
+ display_url = tmp + '/'
+ else:
+ display_url = url
+ return filename, display_url
+
prefix = 'django_%s_template_' % self.app_or_project
tempdir = tempfile.mkdtemp(prefix=prefix, suffix='_download')
self.paths_to_remove.append(tempdir)
- filename = url.split('/')[-1]
+ filename, display_url = cleanup_url(url)
if self.verbosity >= 2:
- self.stdout.write("Downloading %s\n" % url)
+ self.stdout.write("Downloading %s\n" % display_url)
try:
the_path, info = urllib.urlretrieve(url,
path.join(tempdir, filename))
View
18 tests/regressiontests/admin_scripts/tests.py
@@ -11,7 +11,6 @@
import socket
import subprocess
import sys
-import urllib
from django import conf, bin, get_version
from django.conf import settings
@@ -1387,11 +1386,12 @@ def test_simple_project(self):
self.assertOutput(err, "File exists")
def test_invalid_project_name(self):
+ "Make sure the startproject management command validates a project name"
+
def cleanup(p):
if os.path.exists(p):
shutil.rmtree(p)
- "Make sure the startproject management command validates a project name"
args = ['startproject', '7testproject']
testproject_dir = os.path.join(test_dir, '7testproject')
@@ -1454,7 +1454,6 @@ def test_custom_project_template_from_tarball_by_path(self):
def test_custom_project_template_from_tarball_by_url(self):
"Make sure the startproject management command is able to use a different project template from a tarball via a url"
- template_path = os.path.join(test_dir, 'admin_scripts', 'custom_templates', 'project_template.tgz')
template_url = '%s/admin_scripts/custom_templates/project_template.tgz' % self.live_server_url
args = ['startproject', '--template', template_url, 'urltestproject']
@@ -1465,3 +1464,16 @@ def test_custom_project_template_from_tarball_by_url(self):
self.assertNoOutput(err)
self.assertTrue(os.path.isdir(testproject_dir))
self.assertTrue(os.path.exists(os.path.join(testproject_dir, 'run.py')))
+
+ def test_project_template_tarball_url(self):
+ "Startproject management command handles project template tar/zip balls from non-canonical urls"
+ template_url = '%s/admin_scripts/custom_templates/project_template.tgz/' % self.live_server_url
+
+ args = ['startproject', '--template', template_url, 'urltestproject']
+ testproject_dir = os.path.join(test_dir, 'urltestproject')
+
+ out, err = self.run_django_admin(args)
+ self.addCleanup(shutil.rmtree, testproject_dir)
+ self.assertNoOutput(err)
+ self.assertTrue(os.path.isdir(testproject_dir))
+ self.assertTrue(os.path.exists(os.path.join(testproject_dir, 'run.py')))
Please sign in to comment.
Something went wrong with that request. Please try again.