work in progress: REST/JSON traversal and views

git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@3525 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
helmutm 2009-08-29 16:46:38 +00:00
parent e9f4bf4b1b
commit a1ef7dd6d9
4 changed files with 14 additions and 5 deletions

View file

@ -20,4 +20,4 @@ Providing object data in JSON format
>>> obj = Demo('test') >>> obj = Demo('test')
>>> jsv = JSONView(obj, TestRequest()) >>> jsv = JSONView(obj, TestRequest())
>>> jsv() >>> jsv()
'{"name": "test"}' '["name"]'

View file

@ -32,9 +32,9 @@ class JSONView(object):
self.request = request self.request = request
def __call__(self): def __call__(self):
return json.dumps(self.context.__dict__) return json.dumps(self.context.__dict__.keys())
def traverse(self, name): def traverse(self, name):
# To be implemented by subclass # To be implemented by subclass
print '*** traversing', self.context, name print '*** traversing', self.context, name
return None return self.context

View file

@ -15,6 +15,7 @@
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# #
""" """
IPublishTraverse adapter that checks the 'Accept' header. IPublishTraverse adapter that checks the 'Accept' header.
@ -49,4 +50,9 @@ class CheckJSONTraverser(ItemTraverser):
return view.traverse(name) return view.traverse(name)
def defaultTraverse(self, request, name): def defaultTraverse(self, request, name):
return super(CheckAcceptTraverser, self).publishTraverse(request, name) return super(CheckJSONTraverser, self).publishTraverse(request, name)
def browserDefault(self, request):
if self.isJSONRequest(request):
return self.context, ('@@json',)
return super(CheckJSONTraverser, self).browserDefault(request)

View file

@ -28,5 +28,8 @@ from cybertools.roa.traversal import CheckJSONTraverser as BaseTraverser
class CheckJSONTraverser(BaseTraverser, DefaultPublishTraverse): class CheckJSONTraverser(BaseTraverser, DefaultPublishTraverse):
defaultTraverse = DefaultPublishTraverse.publishTraverse defaultTraverse = DefaultPublishTraverse.publishTraverse
browserDefault = DefaultPublishTraverse.browserDefault
def browserDefault(self, request):
if self.isJSONRequest(request):
return self.context, ('@@json',)
return DefaultPublishTraverse.browserDefault(self, request)