py-scopes/scopes/storage/folder.py

40 lines
1,003 B
Python

# scopes.storage.folder
from scopes.storage.common import registerContainerClass
from scopes.storage.tracking import Container, Track
class Folder(Track):
headFields = ['parent', 'name', 'ref']
prefix = 'fldr'
def keys(self):
for f in self.container.query(parent=self.uid):
yield f.name
def get(self, key, default=None):
value = self.container.queryLast(parent=self.uid, name=key)
if value is None:
return default
return value
def __getitem__(self, key):
value = self.container.queryLast(parent=self.uid, name=key)
if value is None:
raise KeyError
return value
def __setitem__(self, key, value):
value.head['parent'] = self.uid
value.head['name']= key
self.container.save(value)
@registerContainerClass
class Folders(Container):
itemFactory = Folder
indexes = [('parent', 'name'), ('ref',)]
tableName = 'folders'
insertOnChange = False