view apps/profile/views.py @ 101:a8da60d611f7

Reorder imports in some python files Order: standard-library modules; newline; third-party modules; newline; project-specific modules (PEP 8)
author dellsystem <ilostwaldo@gmail.com>
date Fri, 31 Aug 2012 02:32:30 -0400
parents 96ad476f52df
children 5ab229c9d348
line wrap: on
line source

from django.shortcuts import render_to_response, get_object_or_404
from django.contrib.auth.models import User
from django.http import Http404, HttpResponseRedirect
from django.core.urlresolvers import reverse
from django.contrib.auth.decorators import login_required
from django.views.generic.simple import direct_to_template

from agora.apps.free_license.models import FreeLicense
from agora.apps.bundle.models import Bundle
from agora.apps.snippet.models import Snippet
from agora.apps.profile.models import Profile
from agora.middleware.http import Http403


def getprofile(user):
    u = get_object_or_404(User, username=user)

    #Inactive users "don't exist"
    if not u.is_active:
        raise Http404

    #Get profile or create a default if none exists
    try:
        p = u.get_profile()
    except Profile.DoesNotExist:
        #At least one FreeLicense *must* exist.
        p = Profile(user=u, preferred_license=FreeLicense.objects.get(id=1))
        p.save()

    return [u,p]

def showprofile(request, user):
    [u,p] = getprofile(user)

    if u.first_name or u.last_name:
        n = u.get_full_name()
    else:
        n = u.username

    b = Bundle.objects.filter(uploader=u)
    s = Snippet.objects.filter(author=u)

    return direct_to_template(request, 'profile/user.djhtml',
                              {
                                  'profile' : p,
                                  'bundles' : b,
                                  'snippets' : s,
                                  'name' : n,
                               },
                              )

@login_required
def editprofile(request):
    [u,p] = getprofile(request.user)

    if request.method=='POST':
        u.first_name = request.POST['first-name']
        u.last_name  = request.POST['last-name']
        u.save()

        try:
            p.preferred_license = \
                            FreeLicense.objects.get(id=request.POST['license'])
        except:
            p.preferred_license = FreeLicense.objects.get(id=1)

        p.interests = request.POST['interests']
        p.blurb = request.POST['blurb']
        p.save()
        return HttpResponseRedirect(reverse(
                                    'agora.apps.profile.views.showprofile',
                                    args=(u,))
                                    )

    licenses = FreeLicense.objects.all()
    return direct_to_template(request, 'profile/edit-user.djhtml',
                              {
                                  'profile' : p,
                                  'licenses' : licenses,
                              },
                              )