Mercurial > personas_backend
view personasbackend/personas/views.py @ 149:98257bc9841e
We no longer require users to manually click the 'agree to terms' button after they've initially created their persona.
author | Atul Varma <varmaa@toolness.com> |
---|---|
date | Fri, 04 Apr 2008 12:01:44 -0700 |
parents | 612212345759 |
children | 052bf8a07b76 |
line wrap: on
line source
import os import mimetypes from django.http import HttpResponseRedirect, HttpResponseForbidden from django.http import Http404 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 NO_THUMBNAIL_IMAGE = "https://addons.mozilla.org/img/addon-icn.png" def _render_static_persona( img_src, action ): if action == "footer": position = "bottom left" else: position = "top right" return render_to_response( "personas/static_persona.xul", { "image" : img_src, "position" : position }, mimetype = "application/vnd.mozilla.xul+xml" ) def hosted_static_persona( request, persona_id ): persona = get_object_or_404( models.Persona, id=persona_id ) if not (persona.header_img and persona.footer_img): raise Http404( "Persona is not statically hosted." ) action = request.GET.get( "action", "" ) if action == "footer": img_src = persona.get_absolute_footer_img_url() elif action == "header": img_src = persona.get_absolute_header_img_url() else: return HttpResponseBadRequest( "Invalid or unsupported action: %s" % action ) return _render_static_persona( img_src, action ) def legacy_cbeard_persona( request, name ): urldict = {"name" : name} action = request.GET.get( "action", "" ) if action == "footer": img_src = models.LEGACY_FOOTER_URL % urldict elif action == "header": img_src = models.LEGACY_HEADER_URL % urldict else: return HttpResponseBadRequest( "Invalid or unsupported action: %s" % action ) return _render_static_persona( img_src, action ) def thumbnail( request, persona_id ): persona = get_object_or_404( models.Persona, id=persona_id ) if not persona.create_thumbnail(): return HttpResponseRedirect( NO_THUMBNAIL_IMAGE ) filename = persona.thumbnail_filename mimetype = mimetypes.types_map[ os.path.splitext( filename )[1] ] image_data = open( filename, "rb" ).read() return HttpResponse( image_data, mimetype = mimetype ) 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" formClass = forms.NewPersonaForm 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 \"%s\"" % persona.name formClass = forms.EditPersonaForm if request.method == "POST": form = formClass( request.POST, request.FILES, instance=persona ) if form.is_valid(): newPersona = form.save( commit=False ) if persona is None: msgText = "Persona created successfully." waitText = ("It will need " "to be reviewed by a staff member " "before it is published.") else: if (not newPersona.header_img) and persona.header_img: newPersona.header_img = persona.header_img if (not newPersona.footer_img) and persona.footer_img: newPersona.footer_img = persona.footer_img msgText = "Persona edited successfully." waitText = ("Your changes " "will need to be approved by a staff member " "before they can take effect.") if not request.user.has_perm("personas.can_publish"): msgText += " " + waitText newPersona.save( updater = request.user ) request.user.message_set.create( message = msgText ) url = reverse("edit-persona", args=[newPersona.id]) return HttpResponseRedirect( url ) else: form = formClass( instance=persona ) return render_to_response( "personas/edit.html", { "form" : form, "title" : pageTitle, "persona" : persona }, context_instance = RequestContext(request) )