forked from expo/troggle
ed345f2576
Used modified versions of django-registration and django-profiles , both on bitbucket. The Person model is now set up as the profile for auth.User s. I set up a requestcontext so that settings is automatically passed to every template, no need to repeat ourselves in views. However, this needs to be refined: I will soon change it to only pass a subset of settings. E.G. we do not need to be passing the DB login and password! Copied from http://cucc@cucc.survex.com/svn/trunk/expoweb/troggle/, rev. 8231 by aaron @ 1/29/2009 11:02 PM
46 lines
1.4 KiB
Python
46 lines
1.4 KiB
Python
"""
|
|
Utility functions for retrieving and generating forms for the
|
|
site-specific user profile model specified in the
|
|
``AUTH_PROFILE_MODULE`` setting.
|
|
|
|
"""
|
|
|
|
from django import forms
|
|
from django.conf import settings
|
|
from django.contrib.auth.models import SiteProfileNotAvailable
|
|
from django.db.models import get_model
|
|
|
|
|
|
def get_profile_model():
|
|
"""
|
|
Return the model class for the currently-active user profile
|
|
model, as defined by the ``AUTH_PROFILE_MODULE`` setting. If that
|
|
setting is missing, raise
|
|
``django.contrib.auth.models.SiteProfileNotAvailable``.
|
|
|
|
"""
|
|
if (not hasattr(settings, 'AUTH_PROFILE_MODULE')) or \
|
|
(not settings.AUTH_PROFILE_MODULE):
|
|
raise SiteProfileNotAvailable
|
|
profile_mod = get_model(*settings.AUTH_PROFILE_MODULE.split('.'))
|
|
if profile_mod is None:
|
|
raise SiteProfileNotAvailable
|
|
return profile_mod
|
|
|
|
|
|
def get_profile_form():
|
|
"""
|
|
Return a form class (a subclass of the default ``ModelForm``)
|
|
suitable for creating/editing instances of the site-specific user
|
|
profile model, as defined by the ``AUTH_PROFILE_MODULE``
|
|
setting. If that setting is missing, raise
|
|
``django.contrib.auth.models.SiteProfileNotAvailable``.
|
|
|
|
"""
|
|
profile_mod = get_profile_model()
|
|
class _ProfileForm(forms.ModelForm):
|
|
class Meta:
|
|
model = profile_mod
|
|
exclude = ('user',) # User will be filled in by the view.
|
|
return _ProfileForm
|