diff --git a/src/django_deploy/api.py b/src/django_deploy/api.py index b9ca25c..75b36da 100644 --- a/src/django_deploy/api.py +++ b/src/django_deploy/api.py @@ -156,6 +156,12 @@ class DjangoProject(object): raise DjangoDeployError('django deploy hooks from {} has no ROOT_URLCONF'.format(module_path), code=errno.ENOLINK) + if urlconf.startswith('.'): + urlconf = '{}{}'.format(module_path, urlconf) + + if not route.endswith('/'): + route += '/' + config = DjangoProjectHooksConfig(project_dir=self._project_dir) if module_path not in config: # pragma: no cover config[module_path] = {} diff --git a/src/django_deploy/hooks.py b/src/django_deploy/hooks.py index 33f6a50..cdfe4c2 100644 --- a/src/django_deploy/hooks.py +++ b/src/django_deploy/hooks.py @@ -23,9 +23,10 @@ def get_urlpatterns(file_path, urlpatterns): for app in config: if 'MOUNT' in config[app]: route, urlconf_module = config[app]['MOUNT'] - pattern = '^{}/'.format(route) - if urlconf_module.startswith('.'): - urlconf_module = '{}{}'.format(app, urlconf_module) + if route == '/': + pattern = '^$' + else: + pattern = '^{}'.format(route) url_obj = url(pattern, include(urlconf_module)) urls_list.append(url_obj) return urls_list diff --git a/src/django_deploy/tests/test_api.py b/src/django_deploy/tests/test_api.py index be184cf..970ea6c 100644 --- a/src/django_deploy/tests/test_api.py +++ b/src/django_deploy/tests/test_api.py @@ -174,7 +174,7 @@ class DjangoProjectTestCase(DjangoDeployTestCase): project.mount_app('django_deploy.tests.fake_app1', '') expected_urlpatterns = [ - ('URLResolver', '^/', 'django_deploy.tests.fake_app1.urls'), + ('URLResolver', '^$', 'django_deploy.tests.fake_app1.urls'), ] self.assert_urlpatterns(project_dir, expected_urlpatterns) @@ -184,7 +184,7 @@ class DjangoProjectTestCase(DjangoDeployTestCase): project.create() project.mount_app('django_deploy.tests.fake_app1', 'app1') project.mount_app('django_deploy.tests.fake_app1', 'app1') - project.mount_app('django_deploy.tests.fake_app2', 'app2') + project.mount_app('django_deploy.tests.fake_app2', 'app2/') expected_urlpatterns = [ ('URLResolver', '^app1/', 'django_deploy.tests.fake_app1.urls'), diff --git a/src/django_deploy/tests/test_program.py b/src/django_deploy/tests/test_program.py index 1bc03b5..4d00317 100644 --- a/src/django_deploy/tests/test_program.py +++ b/src/django_deploy/tests/test_program.py @@ -112,7 +112,7 @@ class ProgramTestCase(DjangoDeployTestCase): '-c', '--mount-app', 'django_deploy.tests.fake_app1', 'app1', '--mount-app', 'django_deploy.tests.fake_app1', 'app1', - '-m', 'django_deploy.tests.fake_app2', 'app2', + '-m', 'django_deploy.tests.fake_app2', 'app2/', project_dir ] exitval = self._program(argv=argv) @@ -138,7 +138,7 @@ class ProgramTestCase(DjangoDeployTestCase): project_dir = self._tmp_dir self._program(argv=['-c', project_dir]) argv = [ - '-m', 'django_deploy.tests.fake_app1', 'app1', + '-m', 'django_deploy.tests.fake_app1', '/', '-m', 'django_deploy.tests.fake_app0', 'app0', '-m', 'django_deploy.tests.fake_app2', 'app2', project_dir @@ -148,7 +148,7 @@ class ProgramTestCase(DjangoDeployTestCase): # Similar code from test_api.test_mount_apps expected_urlpatterns = [ - ('URLResolver', '^app1/', 'django_deploy.tests.fake_app1.urls'), + ('URLResolver', '^$', 'django_deploy.tests.fake_app1.urls'), ('URLResolver', '^app2/', 'django_deploy.tests.fake_app2.urls'), ]