summaryrefslogtreecommitdiffstats
path: root/profiles/utils.py
diff options
context:
space:
mode:
authorsubstantialnoninfringinguser <substantialnoninfringinguser@gmail.com>2009-05-13 05:48:10 +0100
committersubstantialnoninfringinguser <substantialnoninfringinguser@gmail.com>2009-05-13 05:48:10 +0100
commited345f25760d8927f834a69202c2b9b2cef71ee0 (patch)
tree652dba01640060cc2106af850955728828bcd8f0 /profiles/utils.py
parentcdd4e685ee95e44b9a599b03cf11723a4ce7b7c6 (diff)
downloadtroggle-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.py45
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