Mercurial > personas_backend
view personasbackend/personas/json_feeds.py @ 158:1b03e1b84ae2
There's now a JSON menu category called 'your personas'.
author | Atul Varma <varmaa@toolness.com> |
---|---|
date | Fri, 04 Apr 2008 14:59:30 -0700 |
parents | 9bcc77e37c19 |
children | 62659c78b809 |
line wrap: on
line source
from django.http import HttpResponse from django.utils import simplejson from personasbackend.personas import models NEW_MENU_ID = "personas-new-menu" POPULAR_MENU_ID = "personas-popular-menu" YOUR_PERSONAS_MENU_ID = "your-personas-menu" def _makeJsonResponse( obj ): json = simplejson.dumps( obj, indent=4 ) response = HttpResponse( json ) response["Content-Type"] = "text/plain" return response def categories( request ): categoryDicts = [ {"label": "Most Popular", "id" : POPULAR_MENU_ID, "type" : "list", "parent" : "top" }, {"label": "Recent", "id" : "personas-recent-menu", "type" : "recent", "parent" : "top" }, {"label": "New", "id" : NEW_MENU_ID, "type" : "list", "parent" : "top" }, {"label": "All", "id" : "personas-category-menu", "type" : "category", "parent" : "top" }, ] for category in models.Category.objects.all(): categoryDicts.append( {"label" : category.name, "id" : category.json_id, "type" : "list", "parent" : "personas-category-menu"} ) if request.user.is_authenticated(): categoryDicts.append( {"label" : "Your Personas", "id" : YOUR_PERSONAS_MENU_ID, "type" : "list", "parent" : "top"} ) return _makeJsonResponse( {"categories" : categoryDicts} ) def _make_persona_dict( persona, categories ): return {"label" : persona.name, "id" : persona.json_id, "textColor" : persona.text_color, "accentColor" : persona.accent_color, "baseURL" : persona.resolved_url, "menu" : ",".join( categories ), "preview" : "yes"} def personas( request ): personaDicts = [] isPopular = {} isNew = {} published = models.Persona.objects.filter( status="published" ) for persona in published.order_by( "-popularity" )[:10]: isPopular[persona.id] = True for persona in published.order_by( "-date_published" )[:10]: isNew[persona.id] = True for persona in published: categories = [persona.category.json_id] if persona.id in isPopular: categories.append( POPULAR_MENU_ID ) if persona.id in isNew: categories.append( NEW_MENU_ID ) personaDicts.append( _make_persona_dict(persona, categories) ) if request.user.is_authenticated(): owned = models.Persona.objects.filter( owner=request.user ) for persona in owned: personaDicts.append( _make_persona_dict( persona, [YOUR_PERSONAS_MENU_ID]) ) return _makeJsonResponse( {"personas" : personaDicts} )