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:
parent
e9f4bf4b1b
commit
a1ef7dd6d9
4 changed files with 14 additions and 5 deletions
|
@ -20,4 +20,4 @@ Providing object data in JSON format
|
|||
>>> obj = Demo('test')
|
||||
>>> jsv = JSONView(obj, TestRequest())
|
||||
>>> jsv()
|
||||
'{"name": "test"}'
|
||||
'["name"]'
|
||||
|
|
|
@ -32,9 +32,9 @@ class JSONView(object):
|
|||
self.request = request
|
||||
|
||||
def __call__(self):
|
||||
return json.dumps(self.context.__dict__)
|
||||
return json.dumps(self.context.__dict__.keys())
|
||||
|
||||
def traverse(self, name):
|
||||
# To be implemented by subclass
|
||||
print '*** traversing', self.context, name
|
||||
return None
|
||||
return self.context
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
|
||||
"""
|
||||
IPublishTraverse adapter that checks the 'Accept' header.
|
||||
|
||||
|
@ -49,4 +50,9 @@ class CheckJSONTraverser(ItemTraverser):
|
|||
return view.traverse(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)
|
||||
|
|
|
@ -28,5 +28,8 @@ from cybertools.roa.traversal import CheckJSONTraverser as BaseTraverser
|
|||
class CheckJSONTraverser(BaseTraverser, DefaultPublishTraverse):
|
||||
|
||||
defaultTraverse = DefaultPublishTraverse.publishTraverse
|
||||
browserDefault = DefaultPublishTraverse.browserDefault
|
||||
|
||||
def browserDefault(self, request):
|
||||
if self.isJSONRequest(request):
|
||||
return self.context, ('@@json',)
|
||||
return DefaultPublishTraverse.browserDefault(self, request)
|
||||
|
|
Loading…
Add table
Reference in a new issue