fixes; work in progress: topics
This commit is contained in:
		
							parent
							
								
									f6308ff9bf
								
							
						
					
					
						commit
						dfc5cefcee
					
				
					 3 changed files with 21 additions and 8 deletions
				
			
		|  | @ -45,8 +45,8 @@ class Folder(Track): | ||||||
|         return self.container.storage.getItem(self.ref) |         return self.container.storage.getItem(self.ref) | ||||||
| 
 | 
 | ||||||
|     def setTarget(self, target): |     def setTarget(self, target): | ||||||
|         self.ref = target.uid |         self.set('ref', target.uid) | ||||||
|         self.container.save(self) |         self.container.update(self) | ||||||
| 
 | 
 | ||||||
|     def __str__(self): |     def __str__(self): | ||||||
|         return '%s: %s; keys: %s' % (self.__class__.__name__, |         return '%s: %s; keys: %s' % (self.__class__.__name__, | ||||||
|  |  | ||||||
|  | @ -119,10 +119,16 @@ class Container(object): | ||||||
|             return self.insert(track) |             return self.insert(track) | ||||||
|         if self.insertOnChange and found.data != track.data: |         if self.insertOnChange and found.data != track.data: | ||||||
|             return self.insert(track) |             return self.insert(track) | ||||||
|         if found.data != track.data or found.timeStamp != track.timeStamp: |         changed = False | ||||||
|  |         if found.data != track.data: | ||||||
|             found.update(track.data) |             found.update(track.data) | ||||||
|  |             changed = True | ||||||
|  |         if track.timeStamp is not None and found.timeStamp != track.timeStamp: | ||||||
|             found.timeStamp = track.timeStamp |             found.timeStamp = track.timeStamp | ||||||
|  |             changed = True | ||||||
|  |         if changed: | ||||||
|             self.update(found) |             self.update(found) | ||||||
|  |         track.trackId = found.trackId | ||||||
|         return found.trackId |         return found.trackId | ||||||
| 
 | 
 | ||||||
|     def insert(self, track, withTrackId=False): |     def insert(self, track, withTrackId=False): | ||||||
|  | @ -130,14 +136,15 @@ class Container(object): | ||||||
|         values = self.setupValues(track, withTrackId) |         values = self.setupValues(track, withTrackId) | ||||||
|         stmt = t.insert().values(**values).returning(t.c.trackid) |         stmt = t.insert().values(**values).returning(t.c.trackid) | ||||||
|         trackId = self.session.execute(stmt).first()[0] |         trackId = self.session.execute(stmt).first()[0] | ||||||
|  |         track.trackId = trackId | ||||||
|         self.storage.mark_changed() |         self.storage.mark_changed() | ||||||
|         return trackId |         return trackId | ||||||
| 
 | 
 | ||||||
|     def update(self, track): |     def update(self, track, updateTimeStamp=False): | ||||||
|         t = self.table |         t = self.table | ||||||
|  |         if updateTimeStamp or track.timeStamp is None: | ||||||
|  |             track.timeStamp = datetime.now() | ||||||
|         values = self.setupValues(track) |         values = self.setupValues(track) | ||||||
|         if track.timeStamp is None: |  | ||||||
|             values['timestamp'] = datetime.now() |  | ||||||
|         stmt = t.update().values(**values).where(t.c.trackid == track.trackId) |         stmt = t.update().values(**values).where(t.c.trackid == track.trackId) | ||||||
|         n = self.session.execute(stmt).rowcount |         n = self.session.execute(stmt).rowcount | ||||||
|         if n > 0: |         if n > 0: | ||||||
|  |  | ||||||
|  | @ -96,11 +96,17 @@ def test_topic(self, config): | ||||||
|     storage = config.storageFactory(config.dbschema) |     storage = config.storageFactory(config.dbschema) | ||||||
|     storage.dropTable('topics') |     storage.dropTable('topics') | ||||||
|     topics = storage.getContainer(topic.Topic) |     topics = storage.getContainer(topic.Topic) | ||||||
|  |     types = storage.getContainer(concept.Type) | ||||||
|     concept.storePredicate(storage, concept.defaultPredicate) |     concept.storePredicate(storage, concept.defaultPredicate) | ||||||
|     root = folder.Root(storage) |     root = folder.Root(storage) | ||||||
|     root['top']['topics'] = folder.Folder() |     root['top']['topics'] = ftopics = folder.Folder() | ||||||
|  |     ttopic = types.queryLast(name='topic') | ||||||
|  |     self.assertEqual(ttopic.name, 'topic') | ||||||
|  |     ftopics.setTarget(ttopic) | ||||||
|  |     self.assertEqual(ftopics.ref, 'type-6') | ||||||
| 
 | 
 | ||||||
|     tp_itc = topic.Topic('itc') |     tp_itc = topic.Topic('itc', data=dict( | ||||||
|  |         title='ITC', description='Information and Communication Technology')) | ||||||
|     topics.save(tp_itc) |     topics.save(tp_itc) | ||||||
| 
 | 
 | ||||||
|     storage.commit() |     storage.commit() | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue