comparison PersonasBackend/personas/views.py @ 20:ccb027c6862a

Added simple JSON views that generate personas_categories.dat and personas_all.dat.
author Atul Varma <varmaa@toolness.com>
date Tue, 26 Feb 2008 18:45:53 -0800
parents 5d8ad63be9cf
children 197b05fbd4cc
comparison
equal deleted inserted replaced
19:d1de96f09287 20:ccb027c6862a
1 # Create your views here. 1 from django.http import HttpResponse
2 from django.utils import simplejson
3 from PersonasBackend.personas import models
4
5 JSON_CATEGORY_ID_TEMPLATE = "personas-category-%d"
6 JSON_PERSONA_ID_TEMPLATE = "persona-%d"
7
8 def _makeJsonResponse( obj ):
9 json = simplejson.dumps( obj, indent=4 )
10 response = HttpResponse( json )
11 response["Content-Type"] = "text/plain"
12 return response
13
14 def categories_json( request ):
15 categoryDicts = [
16 {"label": "Most Popular", "id" : "personas-popular-menu",
17 "type" : "list", "parent" : "top" },
18 {"label": "Recent", "id" : "personas-recent-menu",
19 "type" : "recent", "parent" : "top" },
20 {"label": "New", "id" : "personas-new-menu",
21 "type" : "list", "parent" : "top" },
22 {"label": "All", "id" : "personas-category-menu",
23 "type" : "category", "parent" : "top" },
24 ]
25
26 for category in models.Category.objects.all():
27 categoryDicts.append(
28 {"label" : category.name,
29 "id" : JSON_CATEGORY_ID_TEMPLATE % category.id,
30 "type" : "list",
31 "parent" : "personas-category-menu"}
32 )
33
34 return _makeJsonResponse( {"categories" : categoryDicts} )
35
36 def personas_json( request ):
37 personaDicts = []
38
39 for persona in models.Persona.objects.all():
40 # TODO: Make sure the Persona is marked as published.
41 personaDicts.append(
42 {"label" : persona.name,
43 "id" : JSON_PERSONA_ID_TEMPLATE % persona.id,
44 "dark" : ( persona.color_scheme == "dark" ),
45 "baseURL" : "",
46 "headerURL" : persona.header_img,
47 "footerURL" : persona.footer_img,
48 "menu" : JSON_CATEGORY_ID_TEMPLATE % persona.category.id,
49 "preview" : "yes"}
50 )
51
52 return _makeJsonResponse( {"personas" : personaDicts} )