2009-05-13 05:48:10 +01:00
|
|
|
"""
|
|
|
|
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
|
2018-04-15 16:28:13 +01:00
|
|
|
#from django.contrib.auth.models import SiteProfileNotAvailable
|
|
|
|
|
|
|
|
try:
|
|
|
|
from django.contrib.auth.models import SiteProfileNotAvailable
|
|
|
|
except ImportError: # django >= 1.7
|
|
|
|
SiteProfileNotAvailable = type('SiteProfileNotAvailable', (Exception,), {})
|
|
|
|
|
2019-07-16 00:07:37 +01:00
|
|
|
from django.apps import apps
|
2009-05-13 05:48:10 +01:00
|
|
|
|
|
|
|
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
|
2019-07-16 00:07:37 +01:00
|
|
|
profile_mod = apps.get_model(*settings.AUTH_PROFILE_MODULE.split('.'))
|
2009-05-13 05:48:10 +01:00
|
|
|
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
|