diff --git a/roa/README.txt b/roa/README.txt index d95ae0a..c1036eb 100644 --- a/roa/README.txt +++ b/roa/README.txt @@ -20,4 +20,4 @@ Providing object data in JSON format >>> obj = Demo('test') >>> jsv = JSONView(obj, TestRequest()) >>> jsv() - '{"name": "test"}' + '["name"]' diff --git a/roa/json.py b/roa/json.py index 2fd1a73..39ebe23 100644 --- a/roa/json.py +++ b/roa/json.py @@ -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 diff --git a/roa/traversal.py b/roa/traversal.py index fbabd4f..42c31e3 100644 --- a/roa/traversal.py +++ b/roa/traversal.py @@ -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) diff --git a/roa/z2/traversal.py b/roa/z2/traversal.py index 21a5b7d..7aa9dc6 100644 --- a/roa/z2/traversal.py +++ b/roa/z2/traversal.py @@ -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)