Changeset 301
- Timestamp:
- 01/31/08 19:10:07 (1 year ago)
- Files:
-
- trunk/src/dm/dom/temporal.py (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/src/dm/dom/temporal.py
r298 r301 31 31 32 32 def create(self, recordedValue, loadedList={}, dateCreated=None): 33 #print "SAVE: Creating new temporal: %s" % recordedValue34 33 return super(TemporalCollection, self).create( 35 34 recordedValue=recordedValue, … … 39 38 40 39 41 class BitemporalActualCollection( BaseTemporalCollection):40 class BitemporalActualCollection(TemporalCollection): 42 41 43 42 def getReferenceTime(self): 44 43 return self.timepoint.actual 45 46 def create(self, recordedValue, loadedList={}, dateCreated=None):47 #print "SAVE: Creating new bitemporal actual %s is %s as at %s" % (self, recordedValue, self.getReferenceTime())48 obj = super(BitemporalActualCollection, self).create(49 recordedValue=recordedValue,50 loadedList=loadedList,51 dateCreated=dateCreated52 )53 #print obj54 return obj55 44 56 45 … … 58 47 59 48 def create(self, recordedValue, loadedList={}, dateCreated=None): 60 #print "SAVE: Creating new bitemporal history for '%s'." % recordedValue 61 oldRecorded = super(BitemporalCollection, 62 self).findFirstDomainObject(loadedList=loadedList) 63 newRecorded = super(BitemporalCollection, 64 self).create(loadedList=loadedList) 65 if not newRecorded: 66 raise Exception, "Failed to create a new bitemporal record." 67 actualsMeta = newRecorded.meta.attributeNames['recordedValue'] 68 newActuals = actualsMeta.createTemporalCollection(newRecorded) 69 if oldRecorded: 70 #print "SAVE: Copying old bitemporal actual records...." 71 oldActuals = actualsMeta.createTemporalCollection(oldRecorded) 49 oldHistory = self.findCurrentHistory(loadedList=loadedList) 50 newHistory = self.createNewHistory(loadedList=loadedList) 51 if oldHistory: 52 oldActuals = oldHistory.getActualsRegister() 53 newActuals = newHistory.getActualsRegister() 72 54 for oldActual in oldActuals: 73 #print "SAVE: Copying old bitemporal actual: %s" % oldActual.recordedValue74 55 newActual = newActuals.create( 75 56 recordedValue=oldActual.recordedValue, … … 77 58 dateCreated=oldActual.dateCreated 78 59 ) 79 #print "SAVE: %s" % newActual 80 else: 81 #print "SAVE: No old history found...." 82 pass 83 #print "SAVE: Setting actual bitemporal value" 84 newRecorded.recordedValue = recordedValue 85 newRecorded.save() 86 return newRecorded 60 newHistory.recordedValue = recordedValue 61 newHistory.save() 62 return newHistory 63 64 def findCurrentHistory(self, loadedList={}): 65 return super( 66 BitemporalCollection, self 67 ).findFirstDomainObject(loadedList=loadedList) 68 69 def createNewHistory(self, loadedList={}): 70 return super( 71 BitemporalCollection, self 72 ).create(loadedList=loadedList) 87 73 88 74 def findFirstDomainObject(self, loadedList={}): 89 oldRecorded = super(BitemporalCollection, self).findFirstDomainObject( 90 loadedList=loadedList, 91 ) 92 if not oldRecorded: 75 history = self.findCurrentHistory(loadedList=loadedList) 76 if history: 77 actualsRegister = history.getActualsRegister() 78 return actualsRegister.findFirstDomainObject(loadedList) 79 else: 93 80 return None 94 actualsMeta = oldRecorded.meta.attributeNames['recordedValue']95 actualsRegister = actualsMeta.createTemporalCollection(oldRecorded)96 return actualsRegister.findFirstDomainObject(loadedList)97 81 82 def getActualsRegister(self, history): 83 actualsMeta = history.meta.attributeNames['recordedValue'] 84 return actualsMeta.createTemporalCollection(history) 98 85 99 86 … … 103 90 isConstant = True 104 91 105 parent = Integer(default=1) # Will be overridden. 106 recordedValue = String(default='') # Will be overridden. 107 dateCreated = DateTime( # This stays.... 92 dateCreated = DateTime( 108 93 isIndexed=True, 109 94 isRequired=True, 110 95 ) 96 parent = Integer(default=1) # Abstract. 97 recordedValue = String(default='') # Abstract. 111 98 112 99 sortAscending = False … … 125 112 126 113 def getSortOnValue(self): 127 value = (self.dateCreated, self.id) 128 return value 114 return (self.dateCreated, self.id) 129 115 130 116 … … 133 119 registerClass = BitemporalCollection 134 120 121 def getActualsRegister(self): 122 actualsMeta = self.meta.attributeNames['recordedValue'] 123 return actualsMeta.createTemporalCollection(self) 135 124
