Merge branch '2master' into 3master

This commit is contained in:
Helmut Merz 2024-09-24 17:15:06 +02:00
commit 71f36283b9
4 changed files with 34 additions and 0 deletions

View file

@ -157,6 +157,12 @@ class RecordsFieldInstance(GridFieldInstance):
def getRenderer(self, name):
return grid_macros.macros.get(name)
def fromKeyTable(self, value):
fis = self.columnFieldInstances
return [dict([(fis[0].name, k)] +
[(fi.name, v[i]) for i, v in enumerate(fis[1:])])
for k, v in value.items()]
def marshall(self, value):
result = []
value = value or []
@ -258,6 +264,13 @@ class KeyTableFieldInstance(RecordsFieldInstance):
pass
class ContextBasedRecordsFieldInstance(RecordsFieldInstance):
@Lazy
def columnTypes(self):
obj = self.clientInstance.context
return [Field(name) for name in obj.columnNames]
class ContextBasedKeyTableFieldInstance(KeyTableFieldInstance):
@Lazy

View file

@ -51,6 +51,16 @@ class Records(Grid):
instanceName='records',))
class RecordsTable(Grid):
__typeInfo__ = ('recordstable',
FieldType('recordstable', 'recordstable',
u'A series of records or rows.',
displayRenderer='display_records',
inputRenderer='input_records',
instanceName='recordstable',))
class KeyTable(Grid):
__typeInfo__ = ('keytable',

View file

@ -80,6 +80,11 @@ class Track(Persistent):
data.update(newData)
self.data = data # record change
def updateIndex(self, **kw):
for k, v in kw.items():
setattr(self, k, v)
getParent(self).indexTrack(0, self, k)
def __repr__(self):
md = self.metadata
md['timeStamp'] = timeStamp2ISO(md['timeStamp'])
@ -102,6 +107,7 @@ class TrackingStorage(BTreeContainer):
runs = None # currently active runs
finishedRuns = None # finished runs
currentRuns = None # the currently active run for each task
storage = None # compatibility with new cco.storage
def __init__(self, *args, **kw):
trackFactory = kw.pop('trackFactory', None)
@ -200,6 +206,9 @@ class TrackingStorage(BTreeContainer):
self.indexTrack(trackNum, track)
return trackId
def setTrackData(self, track, data):
track.data = data # persistent track: data will be stored automatically
def updateTrack(self, track, data, overwrite=False):
trackId = str(track.__name__)
trackNum = int(trackId)

View file

@ -32,6 +32,8 @@ def getTimeStamp():
return int(time.time())
def date2TimeStamp(d):
if isinstance(d, (int, float)):
return int(d)
return int(time.mktime(d.timetuple()))