Utilities for working with dynamically loaded Django apps.
Project description
Airavata Django Portal Commons
Utilities for working with dynamically loaded Django apps.
Getting Started
Install this package with pip
pip install airavata-django-portal-commons
Dynamically loaded Django apps
- At the end of your Django server's settings.py file add
import sys
from airavata_django_portal_commons import dynamic_apps
# Add any dynamic apps installed in the virtual environment
dynamic_apps.load(INSTALLED_APPS)
# (Optional) merge WEBPACK_LOADER settings from custom Django apps
settings_module = sys.modules[__name__]
dynamic_apps.merge_settings(settings_module)
- Note: if the dynamic Django app uses WEBPACK_LOADER, keep in mind that it is important that the version of django-webpack-loader and the version of webpack-bundle-tracker be compatible. If you're using django-webpack-loader prior to version 1.0 then a known good pair of versions is django-webpack-loader==0.6.0 and webpack-bundle-tracker==0.4.3.
- Also add
'airavata_django_portal_commons.dynamic_apps.context_processors.custom_app_registry'
to the context_processors list:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': ...
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
...
'airavata_django_portal_commons.dynamic_apps.context_processors.custom_app_registry',
],
},
},
]
- In your urls.py file add the following to the urlpatterns
urlpatterns = [
# ...
path('', include('airavata_django_portal_commons.dynamic_apps.urls')),
]
Creating a dynamically loaded Django app
See https://apache-airavata-django-portal.readthedocs.io/en/latest/dev/custom_django_app/ for the latest information.
Note that by default the
cookiecutter template
registers Django apps under the entry_point group name of airavata.djangoapp
,
but you can change this. Just make sure that when you call dynamic_apps.load
that you pass as the second argument the name of the entry_point group.
Developing
Making a new release
-
Update the version in setup.cfg.
-
Commit the update to setup.cfg.
-
Tag the repo with the same version, with the format
v${version_number}
. For example, if the version number in setup.cfg is "1.2" then tag the repo with "v1.2".VERSION=... git tag -m $VERSION $VERSION git push --follow-tags
-
In a clean checkout
cd /tmp/ git clone /path/to/airavata-django-portal-commons/ -b $VERSION cd airavata-django-portal-commons python3 -m venv venv source venv/bin/activate python3 -m pip install --upgrade pip build python3 -m build
-
Push to pypi.org. Optionally can push to test.pypi.org. See https://packaging.python.org/tutorials/packaging-projects/ for more info.
python3 -m pip install --upgrade twine python3 -m twine upload dist/*
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for airavata-django-portal-commons-1.0.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9ea1e540d8742b077d07ee9c06389e8fcbd192de8aaba98dc7ae52ff6971c296 |
|
MD5 | ce85653bd7f48df3b4b1858e8b75f6d4 |
|
BLAKE2b-256 | a32d28fa76b69efb8f7fa2ceb907817d2adfbe09f7521f3c2a27b25b14ab5715 |
Hashes for airavata_django_portal_commons-1.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 82222164af7dc1996442e70758f9c7f1044c7c9b3299d824128156d19ae2fa0a |
|
MD5 | 879b394445dab2d3a388497307d82508 |
|
BLAKE2b-256 | 0e227a6a355c468aa41ec8a5cb765375f7a08ef4868885d8bbe3289e3893b0ee |