
Ignore-this: a462d23b95fcfc99372f15a2dc645851 darcs-hash:20090516013103-bd074-7538108fca4203285f67d9f4adff82ade6c33f62.gz
38 lines
1.1 KiB
Python
38 lines
1.1 KiB
Python
from cherrypy.filters.basefilter import BaseFilter
|
|
import cherrypy._cputil
|
|
|
|
##########################
|
|
# DomFilter
|
|
##########################
|
|
#
|
|
# transforme des objets python
|
|
# en chainses de caracteres qui peuvent
|
|
# etre parsees avec JSON/javascript
|
|
#
|
|
class DOMFilter(BaseFilter):
|
|
def beforeFinalize(self):
|
|
body = cherrypy.response.body
|
|
if isinstance(body, dict):
|
|
body = self.printAsDom(body)
|
|
cherrypy.response.body = body
|
|
|
|
def printAsDom(self, chose):
|
|
if isinstance(chose, dict):
|
|
stringList = []
|
|
for a_key in chose.keys():
|
|
stringList.append('%s:%s' % (self.printAsDom(a_key), self.printAsDom(chose[a_key])))
|
|
return "{%s}" % ','.join(stringList)
|
|
|
|
if isinstance(chose, list):
|
|
stringList = []
|
|
for an_item in chose:
|
|
stringList.append('%s' % (self.printAsDom(an_item)))
|
|
return "[%s]" % ','.join(stringList)
|
|
|
|
if isinstance(chose, str):
|
|
return '"%s"' % chose
|
|
|
|
if isinstance(chose, unicode):
|
|
return '"%s"' % chose.encode('utf8')
|
|
|
|
return str(chose)
|