def profile(request): uprofile = RequestContext(request).get('profile') if request.openid: sreg = request.openid.sreg # If we have the email from OpenID and not in their profile, pre-populate it if not request.user.email and sreg.has_key('email'): request.user.email = sreg['email'] if sreg.has_key('fullname'): uprofile.fullname = sreg['fullname'] if sreg.has_key('nickname'): uprofile.nickname = sreg['nickname'] # These should only be updated if they haven't already been changed if uprofile.timezone is None and sreg.has_key('timezone'): uprofile.timezone = sreg['timezone'] if uprofile.language is None and sreg.has_key('language'): uprofile.language = sreg['language'] if uprofile.country is None and sreg.has_key('country'): uprofile.country = sreg['country'] uprofile.save() if settings.LANGUAGE_COOKIE_NAME in request.session: log.debug("Updating language to %s" % request.session.get(settings.LANGUAGE_COOKIE_NAME)) uprofile.language = request.session.get(settings.LANGUAGE_COOKIE_NAME) uprofile.save() if request.method == 'POST': form = ProfileForm(request.POST, instance=uprofile) if form.is_valid(): form.save() message = _("Your profile has been updated.") else: form = ProfileForm(instance=uprofile) message = None if 'msg' in request.GET: message = request.GET['msg'] return direct_to_template(request, 'auth/profile.html', {'form':form, 'prefs':uprofile, 'message':message})