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