Skip to main content

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

  1. 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.
  1. 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',
            ],
        },
    },
]
  1. 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

  1. Update the version in setup.cfg.

  2. Commit the update to setup.cfg.

  3. 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
    
  4. 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
    
  5. 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

airavata-django-portal-commons-1.0.3.tar.gz (4.7 kB view details)

Uploaded Source

Built Distribution

File details

Details for the file airavata-django-portal-commons-1.0.3.tar.gz.

File metadata

File hashes

Hashes for airavata-django-portal-commons-1.0.3.tar.gz
Algorithm Hash digest
SHA256 e6da761f9a351b824471dd3c28dbf3d32b6cf3398c579f1f6545f4d814c8b7f7
MD5 7b1c1fe36d1c9cdc569689c8a82fc21e
BLAKE2b-256 a8093a6bd40535b6f52270d98ac5de0ac4e79845669238754ff7453c94f3d515

See more details on using hashes here.

File details

Details for the file airavata_django_portal_commons-1.0.3-py3-none-any.whl.

File metadata

File hashes

Hashes for airavata_django_portal_commons-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 a601aa7a823482432c9108cac557849e8d21a481c95d940f9f990fca1b5337b6
MD5 451ebc7cfdb5600a325fcaaea7779160
BLAKE2b-256 276ef9766d1380c91fd000f16faa525096c4ec7d421440439680863fc1b16a96

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page