[idp] extend the account management page with a profile section

This commit is contained in:
Benjamin Dauvergne 2011-03-02 17:41:54 +01:00
parent 05abd302e9
commit 5d10d7187f
3 changed files with 32 additions and 3 deletions

View File

@ -8,6 +8,20 @@
{% block content %}
<h2>{% trans "Account Management" %}</h2>
<h3>{% trans "Profile" %}</h3>
<div id="profile">
{% if profile %}
<dl>
{% for key, value in profile %}
<dt>{{ key|capfirst }}</dt>
<dd>{{ value }}</dd>
{% endfor %}
</dl>
<p> <a href="{% url profiles_edit_profile %}">{% trans "Edit profile" %}</a></p>
{% else %}
<p> <a href="{% url profiles_create_profile %}">{% trans "Create profile" %}</a></p>
{% endif %}
</div>
<h3>{% trans "Credentials" %}</h3>
{% for html_block in frontends_block %}
{{ html_block|safe }}

View File

@ -14,6 +14,7 @@ from django.contrib.auth.forms import AuthenticationForm
from django.contrib.auth.forms import PasswordChangeForm
from django.contrib.auth import logout as auth_logout
from django.contrib.auth import REDIRECT_FIELD_NAME
from django.contrib.auth.models import SiteProfileNotAvailable
from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect
from django.shortcuts import render_to_response
@ -22,6 +23,7 @@ from django.template import RequestContext
from django.utils.encoding import smart_unicode
from django.views.decorators.csrf import csrf_exempt, csrf_protect
from django.views.generic.simple import redirect_to
from django.core.exceptions import ObjectDoesNotExist
import authentic2.saml.common
import authentic2.authsaml2.utils
@ -69,10 +71,23 @@ def profile(request):
if request.session.test_cookie_worked():
request.session.delete_test_cookie()
return frontend.post(request, form, None, '/profile')
# User attributes management
try:
user_profile = request.user.get_profile()
profile = []
for field_name in user_profile._meta.get_all_field_names():
if field_name in ('id', 'user'):
continue
field = user_profile._meta.get_field_by_name(field_name)[0]
value = getattr(user_profile, field_name)
if value:
profile.append((field.verbose_name, value))
except (SiteProfileNotAvailable, ObjectDoesNotExist):
profile = ()
# Credentials management
blocks = [ frontend.profile(request, next='/profile') for frontend in frontends \
if hasattr(frontend, 'profile') ]
return render_to_response('idp/account_management.html', { 'frontends_block': blocks },
return render_to_response('idp/account_management.html', { 'frontends_block': blocks, 'profile': profile },
RequestContext(request))
def logout_list(request):

View File

@ -292,6 +292,6 @@ h4 {
padding-left: 0.5em;
}
h4 + div {
h4 + div, div#profile {
padding-left: 1em;
}