Reusable Django apps with setuptools
Project description
This is yet another approach on enabling Django to load reusable, pluggable, egg-based applications without changing the Django sourcecode. Think of plugins or components, e.g. django-registration, django-threadedcomments or django-tagging.
It uses setuptools for finding, handling and loading egg-based Python modules with a specific entry point, e.g. 'django.apps'.
Egg-based Python modules (a.k.a. eggs) are compressed packaged Python modules like Django apps. Every Django app can be converted to an egg distribution by using a special setup.py file.
Installation
Get the source from the application site at:
http://code.google.com/p/django-reusableapps/
To install reusableapps, follow these steps:
Follow the instructions in the INSTALL file.
Add import reusableapps to the top of your settings file.
Add a new setting to your settings file, a list of locations of reusable apps, in search order. Note that these paths should use Unix-style forward slashes, even on Windows.
For example:
REUSABLE_APPS_DIRS = ( '/home/jannis/.local', '/Users/Jannis/Code/eggs', '/usr/share/django/apps', 'C:/www/django/apps', )
Add to the last line of your settings file (after the INSTALLED_APPS and REUSABLE_APPS_DIRS setting):
INSTALLED_APPS = reusableapps.search(REUSABLE_APPS_DIRS, INSTALLED_APPS)
Putting it together
Once you finished with above installation instructions, your settings file should look something like this:
import reusableapps # ... REUSABLE_APPS_DIRS = ( '/home/jannis/.local', '/Users/Jannis/Code/eggs', '/usr/share/django/apps', 'C:/www/django/apps', ) INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'myproject.myapp', ) INSTALLED_APPS = reusableapps.search(REUSABLE_APPS_DIRS, INSTALLED_APPS)
You can then put reusable, pluggable, egg-based Django apps in one of the directories in REUSABLE_APPS_DIRS.
Using templates from egg-based Django apps
If you want to use templates from a egg-based Django app please add 'django.template.loaders.eggs.load_template_source' to the TEMPLATE_LOADERS setting.
Adding support for django-reusableapps to your own Django app
If you want to support django-reusableapps in your own Django app, you need to modify your existing setup.py to import the setup function from the setuptools instead the from the distutils:
from setuptools import setup
Furthermore you need to add an ‘entry point’ to the setup keywords:
entry_points={'django.apps': 'myapp = myapp'},
where my myapp is the name of your Django app, e.g. registration. A full example can be found at setup-example.py and should be copied to the parent directory of your app as setup.py. You are then able to create an egg file with of this app.
Creating egg files of reuasable Django apps
Once you have a proper setup.py in the parent directory of your Django app, you can run:
python setup.py bdist_egg
to build a egg file of it. It will be created in the dist directory and have a filename like dummyapp-0.1-py2.5.egg. You can then distribute it and use it by placing it in one of the REUSABLE_APPS_DIRS of your Django project.
Support
Please leave your questions and problems on the designated Google Code site.
Project details
Release history Release notifications | RSS feed
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 django-reusableapps-0.1.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 063ed5af007f0e0a0abdff4ef930b16826fac08711b7510b6e9e24821c659a41 |
|
MD5 | d14eedce0dd58f317cab4013793636df |
|
BLAKE2b-256 | 81ebb10d2184efa931f2d7bde8a90e348e6a11b7626f58b3cc510a806fb0e06e |
Hashes for django_reusableapps-0.1.1-py2.5.egg
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3f6e9a55aacbe30d9b740fbffed5c0bc629186f192c92e2a4987241e994821be |
|
MD5 | 25082d74e5233e22f41423c2216c85d9 |
|
BLAKE2b-256 | ca12717a27aa5ca15a89fab69510653ffd4b2b992206f8479a41ba1983c1eabf |