40 lines
1,003 B
Python
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
|