view personasbackend/personas/views.py @ 128:9bcc77e37c19

Renamed all references of PersonasBackend to personasbackend, matching PEP-8.
author Atul Varma <varmaa@toolness.com>
date Wed, 02 Apr 2008 12:01:42 -0700
parents 382af80db050
children 3aff48d6beca
line wrap: on
line source

from django.http import HttpResponseRedirect, HttpResponseForbidden
from django.http import HttpResponse, HttpResponseBadRequest
from django.template import RequestContext
from django.contrib.auth.decorators import login_required
from django.core.urlresolvers import reverse
from django.shortcuts import render_to_response, get_object_or_404

from personasbackend.personas import models
from personasbackend.personas import forms

def legacy_cbeard_persona( request, name ):
    PREFIX = "http://sm-labs01.mozilla.org/legacy-personas/"
    FOOTER_URL = "%(prefix)s%(name)s/stbar-%(name)s.jpg"
    HEADER_URL = "%(prefix)s%(name)s/tbox-%(name)s.jpg"

    urldict = {"prefix" : PREFIX, "name" : name}

    action = request.GET.get( "action", "" )

    if action == "footer":
        position = "bottom left"
        img_src = FOOTER_URL % urldict
    elif action == "header":
        position = "top right"
        img_src = HEADER_URL % urldict
    else:
        return HttpResponseBadRequest( "Invalid or unsupported action: %s" %
                                       action )

    return render_to_response(
        "personas/legacy_persona.xul",
        { "image" : img_src, "position" : position },
        mimetype = "application/vnd.mozilla.xul+xml"
        )

def list_view( request ):
    personas = models.Persona.objects.filter( status="published" )
    return render_to_response(
        "personas/list.html",
        { "personas" : personas,
          "title" : "Browse Personas" },
        context_instance = RequestContext(request)
        )

def home_view( request ):
    return render_to_response(
        "personas/home.html",
        { "title" : "Home" },
        context_instance = RequestContext(request)
        )

def todo_view( request ):
    return render_to_response(
        "personas/todo.html",
        { "title" : "Under Construction" },
        context_instance = RequestContext(request)
        )

def new_view( request ):
    return edit_view( request )

@login_required
def edit_view( request, persona_id=None ):
    if persona_id is None:
        persona = None
        pageTitle = "Create a new Persona"
    else:
        persona = get_object_or_404( models.Persona, id=persona_id )
        if not persona.can_user_edit( request.user ):
            return HttpResponseForbidden(
                "<h1>You do not have permission to edit "
                "this Persona.</h1>"
                )
        pageTitle = "Edit Persona"

    if request.method == "POST":
        form = forms.PersonaForm( request.POST,
                                  instance=persona )
        if form.is_valid():
            newPersona = form.save( commit=False )
            newPersona.save( updater = request.user )
            if persona is None:
                msgText = ("Persona created successfully.  It will need "
                           "to be reviewed by a staff member "
                           "before it is published.")
            else:
                msgText = ("Persona edited successfully.  Your changes "
                           "will need to be approved by a staff member "
                           "before they can take effect.")
            request.user.message_set.create( message = msgText )
            url = reverse("edit-persona", args=[newPersona.id])
            return HttpResponseRedirect( url )
    else:
        form = forms.PersonaForm( instance=persona )

    return render_to_response(
        "personas/edit.html",
        { "form" : form,
          "title" : pageTitle },
        context_instance = RequestContext(request)
        )