Not sure if this is the best way but I wrote a class that all my
models inherit.

from django.utils import simplejson
from google.appengine.ext import db
from google.appengine.api import users
from datetime import *
import string

class json():
    def getString(self):
        s= {}
        p = self.properties().iterkeys()
        for k in p:
            d = getattr(self,k)
            s[k] = k + ' : ' + str(type(d))
        return simplejson.dumps(s)

    def getJson(self,include=None):
        s = {"id": self.key().id()}
        p = self.properties().iterkeys()
        if include is None:
            include = []
        for k in p:
            d = getattr(self,k)

            #assume that d is an entity if it has a gql attr
            if hasattr(d,'gql') :
                s[k] = d.key().id()
                if include.count(k) > 0:
                    for a in d.properties().iterkeys():
                        if hasattr(getattr(d,a),'gql') == False:
                            if self.serialDateTime(getattr(d,a)) !=
False:
                                s[a] = self.serialDateTime(getattr
(d,a))
                            else:
                                s[a] = getattr(d,a)

            elif self.serialDateTime(d) != False:
                s[k] = self.serialDateTime(d)
            elif hasattr(d,'_User__email'):
                s[k] = d.email()
            else:
                s[k] = d
        return simplejson.dumps(s)

    def serialDateTime(self, val):
        if isinstance(val, date):
            return val.strftime('%d-%m-%Y')
        elif isinstance(val, time):
            return val.strftime('%H:%M %p')
        else:
            return False

    def getTplObject(self):
        s = {"id": self.key().id()}
        p = self.properties().iterkeys()
        for k in p:
            d = getattr(self,k)
            if hasattr(d,'gql') :
                s[k] = d.key().id()
            elif hasattr(d,'_User__email'):
                s[k] = d.email()
            else:
                s[k] = d
        return s

    def getIterJson(self,obj):
        s = []
        j = ','
        for q in obj:
            s.append(q.getJson())
        return '[' + j.join(s) + ']'


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to