Treating django.models.core and django.models.auth as special cases is
kind of confusing. They should be regular apps, but we don't want to
have to add 2 extra steps (installing the 2 apps) to get a django
project up and running. Here's a few ideas for fixing the problems.

Create 2 new apps, django.contrib.core and django.contrib.auth. Move
the models from django.models.core and django.models.auth into these
new apps.

Change the settings.py template to include core, auth, and admin in
INSTALLED_APPS.

Change django-admin.py init. It should install core, auth, and admin.

Add a django-admin.py init-minimal command. It will just initialize
the django tables, not install any apps. People who want the minimal
setup can just delete the apps from INSTALLED_APPS. They're going to
edit the file anyhow.

We might want to add one more django-admin.py command or flag to
install just core and auth, but I can't think of what to call it. I
don't want to go too far here though, we don't want the number of
django-admin.py commands to explode arbitrarily.

Subproposal: Dependencies

Add pre and post install hooks (or possibly signals). An app's install
hooks can check to see if all dependencies are installed already, and
generate nice error messages if they are not (or maybe even try to
install the dependency automatically). Some convenience functions
should probably be added as well to make the basic case pretty
painless. This has the added benefit of allowing things like the
undocumented loading of files in your app's 'sql' directory to be
added to an app without having to change django.

All of this should be done on the magic-removal branch since a lot of
things are being broken there anyhow.


Comments?
Joseph

Reply via email to