summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRohith PR <praroh2@gmail.com>2021-05-11 16:09:28 +0530
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2021-05-14 12:45:00 +0200
commit530f58caaa5052e9e56bf8461caee4d821953bcb (patch)
treef4703d39d9e7f1ae11285d27f041e9177d43d253
parent29345aecf6e8d53ccb3577a3762bb0c263f7558d (diff)
Fixed #32734 -- Fixed validation of startapp's directory with trailing slash.
Regression in fc9566d42daf28cdaa25a5db1b5ade253ceb064f.
-rw-r--r--AUTHORS1
-rw-r--r--django/core/management/templates.py4
-rw-r--r--tests/admin_scripts/tests.py7
3 files changed, 10 insertions, 2 deletions
diff --git a/AUTHORS b/AUTHORS
index b76b825716..1a66ba6477 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -798,6 +798,7 @@ answer newbie questions, and generally made Django that much better:
Rob Nguyen <tienrobertnguyenn@gmail.com>
Robin Munn <http://www.geekforgod.com/>
Rodrigo Pinheiro Marques de Araújo <fenrrir@gmail.com>
+ Rohith P R <https://rohithpr.com>
Romain Garrigues <romain.garrigues.cs@gmail.com>
Ronny Haryanto <https://ronny.haryan.to/>
Ross Poulton <ross@rossp.org>
diff --git a/django/core/management/templates.py b/django/core/management/templates.py
index 8dc6068286..8607ca8542 100644
--- a/django/core/management/templates.py
+++ b/django/core/management/templates.py
@@ -73,9 +73,9 @@ class TemplateCommand(BaseCommand):
except OSError as e:
raise CommandError(e)
else:
- if app_or_project == 'app':
- self.validate_name(os.path.basename(target), 'directory')
top_dir = os.path.abspath(os.path.expanduser(target))
+ if app_or_project == 'app':
+ self.validate_name(os.path.basename(top_dir), 'directory')
if not os.path.exists(top_dir):
raise CommandError("Destination directory '%s' does not "
"exist, please create it first." % top_dir)
diff --git a/tests/admin_scripts/tests.py b/tests/admin_scripts/tests.py
index fd94d4919f..8dd06f660b 100644
--- a/tests/admin_scripts/tests.py
+++ b/tests/admin_scripts/tests.py
@@ -2206,6 +2206,13 @@ class StartApp(AdminScriptTestCase):
"another directory."
)
+ def test_trailing_slash_in_target_app_directory_name(self):
+ app_dir = os.path.join(self.test_dir, 'apps', 'app1')
+ os.makedirs(app_dir)
+ _, err = self.run_django_admin(['startapp', 'app', os.path.join('apps', 'app1', '')])
+ self.assertNoOutput(err)
+ self.assertIs(os.path.exists(os.path.join(app_dir, 'apps.py')), True)
+
def test_overlaying_app(self):
# Use a subdirectory so it is outside the PYTHONPATH.
os.makedirs(os.path.join(self.test_dir, 'apps/app1'))