changeset 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 d1de96f09287
children 962c99a1375b
files PersonasBackend/personas/views.py PersonasBackend/urls.py
diffstat 2 files changed, 55 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/PersonasBackend/personas/views.py	Tue Feb 26 11:21:49 2008 -0800
+++ b/PersonasBackend/personas/views.py	Tue Feb 26 18:45:53 2008 -0800
@@ -1,1 +1,52 @@
-# Create your views here.
+from django.http import HttpResponse
+from django.utils import simplejson
+from PersonasBackend.personas import models
+
+JSON_CATEGORY_ID_TEMPLATE = "personas-category-%d"
+JSON_PERSONA_ID_TEMPLATE = "persona-%d"
+
+def _makeJsonResponse( obj ):
+    json = simplejson.dumps( obj, indent=4 )
+    response = HttpResponse( json )
+    response["Content-Type"] = "text/plain"
+    return response
+
+def categories_json( request ):
+    categoryDicts = [
+        {"label": "Most Popular", "id" : "personas-popular-menu",
+         "type" : "list", "parent" : "top" },
+	{"label": "Recent", "id" : "personas-recent-menu",
+         "type" : "recent", "parent" : "top" },
+	{"label": "New", "id" : "personas-new-menu",
+         "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" : JSON_CATEGORY_ID_TEMPLATE % category.id,
+             "type" : "list",
+             "parent" : "personas-category-menu"}
+            )
+
+    return _makeJsonResponse( {"categories" : categoryDicts} )
+
+def personas_json( request ):
+    personaDicts = []
+
+    for persona in models.Persona.objects.all():
+        # TODO: Make sure the Persona is marked as published.
+        personaDicts.append(
+            {"label" : persona.name,
+             "id" : JSON_PERSONA_ID_TEMPLATE % persona.id,
+             "dark" : ( persona.color_scheme == "dark" ),
+             "baseURL" : "",
+             "headerURL" : persona.header_img,
+             "footerURL" : persona.footer_img,
+             "menu" : JSON_CATEGORY_ID_TEMPLATE % persona.category.id,
+             "preview" : "yes"}
+            )
+
+    return _makeJsonResponse( {"personas" : personaDicts} )
--- a/PersonasBackend/urls.py	Tue Feb 26 11:21:49 2008 -0800
+++ b/PersonasBackend/urls.py	Tue Feb 26 18:45:53 2008 -0800
@@ -1,9 +1,11 @@
 from django.conf.urls.defaults import *
 
-urlpatterns = patterns('',
+urlpatterns = patterns('PersonasBackend.personas.views',
     # Example:
     # (r'^PersonasBackend/', include('PersonasBackend.foo.urls')),
 
     # Uncomment this for admin:
     (r'^admin/', include('django.contrib.admin.urls')),
+    (r'^en-US/personas_categories.dat', 'categories_json'),
+    (r'^en-US/personas_all.dat', 'personas_json'),
 )