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') |   >>> obj = Demo('test') | ||||||
|   >>> jsv = JSONView(obj, TestRequest()) |   >>> jsv = JSONView(obj, TestRequest()) | ||||||
|   >>> jsv() |   >>> jsv() | ||||||
|   '{"name": "test"}' |   '["name"]' | ||||||
|  |  | ||||||
|  | @ -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 | ||||||
|  |  | ||||||
|  | @ -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) | ||||||
|  |  | ||||||
|  | @ -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) | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 helmutm
						helmutm