diff options
author | substantialnoninfringinguser <substantialnoninfringinguser@gmail.com> | 2009-05-13 05:48:10 +0100 |
---|---|---|
committer | substantialnoninfringinguser <substantialnoninfringinguser@gmail.com> | 2009-05-13 05:48:10 +0100 |
commit | ed345f25760d8927f834a69202c2b9b2cef71ee0 (patch) | |
tree | 652dba01640060cc2106af850955728828bcd8f0 /profiles/utils.py | |
parent | cdd4e685ee95e44b9a599b03cf11723a4ce7b7c6 (diff) | |
download | troggle-ed345f25760d8927f834a69202c2b9b2cef71ee0.tar.gz troggle-ed345f25760d8927f834a69202c2b9b2cef71ee0.tar.bz2 troggle-ed345f25760d8927f834a69202c2b9b2cef71ee0.zip |
[svn] Add user registration and user profiles.
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
Diffstat (limited to 'profiles/utils.py')
-rw-r--r-- | profiles/utils.py | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/profiles/utils.py b/profiles/utils.py new file mode 100644 index 0000000..faacfcb --- /dev/null +++ b/profiles/utils.py @@ -0,0 +1,45 @@ +""" +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 |