provide __repr__() and asDict() for tracks, and other improvements
This commit is contained in:
		
							parent
							
								
									7b98616008
								
							
						
					
					
						commit
						0b765ad16b
					
				
					 5 changed files with 18 additions and 10 deletions
				
			
		|  | @ -11,11 +11,8 @@ class ITraversable(Interface): | ||||||
| 
 | 
 | ||||||
| class IContainer(ITraversable): | class IContainer(ITraversable): | ||||||
| 
 | 
 | ||||||
|     def items(): |     def values(): | ||||||
|         """Return a sequence of key, value pairs of child objects.""" |         """Return a sequence of child objects.""" | ||||||
| 
 |  | ||||||
|     def keys(): |  | ||||||
|         """Return a sequence of keys of child objects.""" |  | ||||||
| 
 | 
 | ||||||
|     def __getitem__(key): |     def __getitem__(key): | ||||||
|         """Return the item addressed by `key`; rais KeyError if not found.""" |         """Return the item addressed by `key`; rais KeyError if not found.""" | ||||||
|  |  | ||||||
|  | @ -39,6 +39,6 @@ class DefaultView: | ||||||
|         ob = self.context |         ob = self.context | ||||||
|         result = dict(head=ob.head, data=ob.data) |         result = dict(head=ob.head, data=ob.data) | ||||||
|         if IContainer.providedBy(ob): |         if IContainer.providedBy(ob): | ||||||
|             result['items'] = list(ob.keys()) |             result['items'] = [v.asDict() for v in ob.values()] | ||||||
|         return json.dumps(result) |         return json.dumps(result) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -14,11 +14,14 @@ class Folder(Track): | ||||||
|     headFields = ['parent', 'name', 'ref'] |     headFields = ['parent', 'name', 'ref'] | ||||||
|     prefix = 'fldr' |     prefix = 'fldr' | ||||||
| 
 | 
 | ||||||
|  |     def values(self): | ||||||
|  |         return self.container.query(parent=self.rid) | ||||||
|  | 
 | ||||||
|     def items(self): |     def items(self): | ||||||
|         return ((f.name, f) for f in self.container.query(parent=self.rid)) |         return ((v.name, v) for v in self.values()) | ||||||
| 
 | 
 | ||||||
|     def keys(self): |     def keys(self): | ||||||
|         return (k for k, v in self.items()) |         return (v.name for v in self.values()) | ||||||
| 
 | 
 | ||||||
|     def get(self, key, default=None): |     def get(self, key, default=None): | ||||||
|         value = self.container.queryLast(parent=self.rid, name=key) |         value = self.container.queryLast(parent=self.rid, name=key) | ||||||
|  | @ -38,7 +41,8 @@ class Folder(Track): | ||||||
|         self.container.save(value) |         self.container.save(value) | ||||||
| 
 | 
 | ||||||
|     def __str__(self): |     def __str__(self): | ||||||
|         return 'folder: %s; keys: %s' % (self.name, list(self.keys())) |         return '%s: %s; keys: %s' % (self.__class__.__name__, | ||||||
|  |                 self.name, list(self.keys())) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class Root(Folder): | class Root(Folder): | ||||||
|  |  | ||||||
|  | @ -62,6 +62,13 @@ class Track(object): | ||||||
|             return '' |             return '' | ||||||
|         return str(self.trackId) |         return str(self.trackId) | ||||||
| 
 | 
 | ||||||
|  |     def __repr__(self): | ||||||
|  |         return '%s: %s' % (self.__class__.__name__, self.asDict()) | ||||||
|  | 
 | ||||||
|  |     def asDict(self): | ||||||
|  |         return dict(uid=self.uid, head=self.head, data=self.data,  | ||||||
|  |                     timeStamp = str(self.timeStamp)[:19]) | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| @registerContainerClass | @registerContainerClass | ||||||
| class Container(object): | class Container(object): | ||||||
|  |  | ||||||
|  | @ -22,5 +22,5 @@ def test_app(self, config): | ||||||
|     storage = config.storageFactory(config.dbschema) |     storage = config.storageFactory(config.dbschema) | ||||||
|     response = publishRequest(config, storage, '/top') |     response = publishRequest(config, storage, '/top') | ||||||
|     result = json.loads(response.consumeBody()) |     result = json.loads(response.consumeBody()) | ||||||
|     self.assertEqual(result['items'], ['child1']) |     self.assertEqual(result['items'][0]['head']['name'], 'child1') | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue