Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions conftest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import os


def pytest_configure():
"""
We have to use this custom loading for the django "context"
as we have no settings.py
"""
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "omap.modules.base_settings")
os.environ.setdefault("OMAP_MODULES", "omap_core")
from omap.modules import modules

modules.configure_modules()
22 changes: 0 additions & 22 deletions manage.py

This file was deleted.

2 changes: 1 addition & 1 deletion omap.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

def main():
"""Run administrative tasks."""
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "omap.launcher.settings")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "omap.modules.base_settings")
# Here we set the OMAP_MODULES env varible, if not set
os.environ.setdefault("OMAP_MODULES", "")

Expand Down
Empty file removed omap/launcher/__init__.py
Empty file.
37 changes: 0 additions & 37 deletions omap/launcher/urls.py

This file was deleted.

2 changes: 0 additions & 2 deletions omap/launcher/settings.py → omap/modules/base_settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -111,5 +111,3 @@
INTERNAL_IPS = [
"127.0.0.1",
]

ROOT_URLCONF = "omap.launcher.urls"
46 changes: 46 additions & 0 deletions omap/modules/module_urls.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import importlib
import logging

from django.apps import apps
from django.conf import settings
from django.conf.urls import url, include
from django.conf.urls.static import static
from django.contrib import admin
from django.urls import path


def dynamic_url():
_urlpatterns = [url(r"admin/", admin.site.urls)] + (
static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
if settings.MEDIA_ROOT
else []
)

"""
Here, apps are registered automatically with their urls if they have a property "url_prefix" set in their AppConfig
AND if they have a valid urls.py file which sets a variable urlpatterns
"""
for config in apps.get_app_configs():
if hasattr(config, "url_prefix"):
logging.debug(
f"Found url_prefix in {config.name}, checking for .urls module"
)
urls_path = config.module.__name__ + ".urls"
try:
importlib.import_module(urls_path)
except ModuleNotFoundError:
logging.debug(f"No url module found under {urls_path}", exc_info=True)
continue

logging.debug(
f"urls.py present under {urls_path}, setting for prefix {config.url_prefix}"
)
# Do the include
_urlpatterns.append(path(config.url_prefix + "/", include(urls_path)))

logging.debug(f"Patterns: {_urlpatterns}")

return _urlpatterns


urlpatterns = dynamic_url()
3 changes: 3 additions & 0 deletions omap/modules/modules.py
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,9 @@ def configure_modules():
merged.update({"INSTALLED_APPS": merged_apps})
merged.update({"CONSTANCE_CONFIG": merged_constance})

# TEST for dynamic urls
merged.update({"ROOT_URLCONF": "omap.modules.module_urls"})

settings.configure(**merged)

# Now modify the INSTALLED_APPS for all apps that contain a urls.py file
Expand Down
2 changes: 1 addition & 1 deletion pytest.ini
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[pytest]
DJANGO_SETTINGS_MODULE = omap.launcher.settings
;DJANGO_SETTINGS_MODULE = omap.launcher.settings

testpaths =
omap
Expand Down