Changeset 293
- Timestamp:
- 01/27/08 00:32:14 (10 months ago)
- Files:
-
- trunk/src/dm/migrate.py (modified) (4 diffs)
- trunk/src/dm/migratetest.py (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/src/dm/migrate.py
r268 r293 8 8 import sys 9 9 import simplejson 10 11 # Todo: Support for merging data sets (id-fidelity is enforced now). 12 # Todo: Add support for comments in plan files! 10 13 11 14 class DomainModelDumper(object): … … 158 161 objectIdInt = int(objectId) 159 162 classData[objectIdInt] = objectData 160 #print "Iterating over %s %s" % (className, classData.keys()) 161 for objectId in classData.keys(): 162 if objectId == 'metaData': 163 continue 163 classDataKeys = classData.keys() 164 classDataKeys.remove('metaData') 165 classDataKeys.sort() 166 print "Iterating over %s %s" % (className, classDataKeys) 167 for objectId in classDataKeys: 168 #if objectId == 'metaData': 169 # continue 164 170 objectData = classData[objectId] 165 171 #del(classData[objectId]) 166 #msg = "Creating %s #%s from %s..." % (167 #className, objectId, objectData168 #)169 #print msg172 msg = "Importing %s #%s using %s" % ( 173 className, objectId, objectData 174 ) 175 print msg 170 176 strObjectData = {} 171 177 for attr in domainClass.meta.attributes: … … 183 189 if idMapKey in self.idMap.keys(): 184 190 mappedValue = self.idMap[idMapKey] 185 #msg = "Updating %s %s from %s to %s" % ( 186 # className, 187 # attr.name, 188 # value, 189 # mappedValue, 190 #) 191 msg = "Updating %s %s from %s to %s" % ( 192 className, 193 attr.name, 194 value, 195 mappedValue, 196 ) 197 print msg 191 198 value = mappedValue 192 199 if value.__class__ == unicode: … … 201 208 manipulator.create(objectDict) 202 209 domainObject = manipulator.domainObject 203 if domainObject and (domainObject.id > objectId): 204 behindWithId = False 205 msg = "Index (%s) ahead of old object id (%s)." % ( 210 if not domainObject: 211 raise Exception("Manipulator has no domain object.") 212 print "Created %s" % domainObject 213 if domainObject.id > objectId: 214 msg = "Index id %s is ahead of import id %s." % ( 206 215 domainObject.id, objectId 207 216 ) 208 # Todo: Strict mode, where ids must not change. 209 #print "Warning: %s" % msg 210 elif domainObject and (domainObject.id < objectId): 211 #msg = "Skipping #%s to catch up with index." % ( 212 # domainObject.id 213 #) 214 #print msg 217 print "Warning: %s" % msg 218 raise Exception, msg 219 behindWithId = False 220 elif domainObject.id < objectId: 221 msg = "Skipping #%s to catch up with index." % ( 222 domainObject.id 223 ) 224 print msg 215 225 domainObject.delete() 226 print " -- deleted" 216 227 if hasattr(domainObject, 'purge'): 217 228 domainObject.purge() 218 else: 229 print " -- purged" 230 elif domainObject.id == objectId: 231 #print "Perfect ID match!" 219 232 behindWithId = False 220 233 except Exception, inst: trunk/src/dm/migratetest.py
r269 r293 44 44 class TestDomainModelLoader(TestCase): 45 45 46 def clearFixtures(self): 47 for name in ['IdSacrifice', 'migrated', 'migrated23', 'migrated77']: 48 if name in self.registry.sessions: 49 del(self.registry.sessions[name]) 50 for name in ['IdSacrifice', 'migrated', 'migrated2']: 51 if name in self.registry.persons: 52 del(self.registry.persons[name]) 53 46 54 def setUp(self): 47 55 self.loader = DomainModelLoader() 56 self.clearFixtures() 57 self.lastPersonId = self.registry.persons.create("IdSacrifice").id 58 self.lastSessionId = self.registry.sessions.create("IdSacrifice").id 48 59 49 60 def tearDown(self): 61 self.clearFixtures() 50 62 del(self.loader) 51 63 52 64 def testLoadDataAsJson(self): 65 # Persons 66 lastId = self.lastPersonId 53 67 self.failIf('migrated' in self.registry.persons) 54 68 self.failIf('migrated2' in self.registry.persons) … … 56 70 "Person": { 57 71 "metaData": {"name": "String"}, 58 " 1": {"name": "migrated"},59 " 2": {"name": "migrated2"}72 "%s": {"name": "migrated"}, 73 "%s": {"name": "migrated2"} 60 74 } 61 }""" )75 }""" % (lastId+1, lastId+2)) 62 76 self.failUnless('migrated' in self.registry.persons) 63 77 self.failUnless('migrated2' in self.registry.persons) … … 67 81 self.failIf('migrated2' in self.registry.persons) 68 82 83 # Sessions 84 lastId = self.lastSessionId 69 85 self.failIf('migrated' in self.registry.sessions) 70 86 self.failIf('migrated23' in self.registry.sessions) … … 72 88 "Session": { 73 89 "metaData": {"key": "String"}, 74 " 1": {"key": "migrated"},75 " 23": {"key": "migrated23"}90 "%s": {"key": "migrated"}, 91 "%s": {"key": "migrated23"} 76 92 } 77 }""" )93 }""" % (lastId+1, lastId+7)) 78 94 self.failUnless('migrated' in self.registry.sessions) 79 95 del(self.registry.sessions['migrated']) … … 85 101 86 102 forwardId = lastId + 5 87 sessionName = "migrated %s" % forwardId103 sessionName = "migrated77" 88 104 self.failIf(sessionName in self.registry.sessions) 89 105 self.loader.loadDataAsJson(
