Example #1
0
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})