mirror of https://github.com/django/django.git
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
This commit is contained in:
parent
068dcbddb9
commit
f250ef3573
|
@ -196,13 +196,22 @@ class TemplateCommand(BaseCommand):
|
||||||
"""
|
"""
|
||||||
Downloads the given URL and returns the file name.
|
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
|
prefix = 'django_%s_template_' % self.app_or_project
|
||||||
tempdir = tempfile.mkdtemp(prefix=prefix, suffix='_download')
|
tempdir = tempfile.mkdtemp(prefix=prefix, suffix='_download')
|
||||||
self.paths_to_remove.append(tempdir)
|
self.paths_to_remove.append(tempdir)
|
||||||
filename = url.split('/')[-1]
|
filename, display_url = cleanup_url(url)
|
||||||
|
|
||||||
if self.verbosity >= 2:
|
if self.verbosity >= 2:
|
||||||
self.stdout.write("Downloading %s\n" % url)
|
self.stdout.write("Downloading %s\n" % display_url)
|
||||||
try:
|
try:
|
||||||
the_path, info = urllib.urlretrieve(url,
|
the_path, info = urllib.urlretrieve(url,
|
||||||
path.join(tempdir, filename))
|
path.join(tempdir, filename))
|
||||||
|
|
|
@ -11,7 +11,6 @@ import shutil
|
||||||
import socket
|
import socket
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
import urllib
|
|
||||||
|
|
||||||
from django import conf, bin, get_version
|
from django import conf, bin, get_version
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
@ -1387,11 +1386,12 @@ class StartProject(LiveServerTestCase, AdminScriptTestCase):
|
||||||
self.assertOutput(err, "File exists")
|
self.assertOutput(err, "File exists")
|
||||||
|
|
||||||
def test_invalid_project_name(self):
|
def test_invalid_project_name(self):
|
||||||
|
"Make sure the startproject management command validates a project name"
|
||||||
|
|
||||||
def cleanup(p):
|
def cleanup(p):
|
||||||
if os.path.exists(p):
|
if os.path.exists(p):
|
||||||
shutil.rmtree(p)
|
shutil.rmtree(p)
|
||||||
|
|
||||||
"Make sure the startproject management command validates a project name"
|
|
||||||
args = ['startproject', '7testproject']
|
args = ['startproject', '7testproject']
|
||||||
testproject_dir = os.path.join(test_dir, '7testproject')
|
testproject_dir = os.path.join(test_dir, '7testproject')
|
||||||
|
|
||||||
|
@ -1454,7 +1454,6 @@ class StartProject(LiveServerTestCase, AdminScriptTestCase):
|
||||||
|
|
||||||
def test_custom_project_template_from_tarball_by_url(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"
|
"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
|
template_url = '%s/admin_scripts/custom_templates/project_template.tgz' % self.live_server_url
|
||||||
|
|
||||||
args = ['startproject', '--template', template_url, 'urltestproject']
|
args = ['startproject', '--template', template_url, 'urltestproject']
|
||||||
|
@ -1465,3 +1464,16 @@ class StartProject(LiveServerTestCase, AdminScriptTestCase):
|
||||||
self.assertNoOutput(err)
|
self.assertNoOutput(err)
|
||||||
self.assertTrue(os.path.isdir(testproject_dir))
|
self.assertTrue(os.path.isdir(testproject_dir))
|
||||||
self.assertTrue(os.path.exists(os.path.join(testproject_dir, 'run.py')))
|
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')))
|
||||||
|
|
Loading…
Reference in New Issue