folder: use rid for parent; more on concept / organize
This commit is contained in:
		
							parent
							
								
									e2df59247c
								
							
						
					
					
						commit
						83071842c8
					
				
					 6 changed files with 35 additions and 6 deletions
				
			
		
							
								
								
									
										13
									
								
								scopes/organize/task.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								scopes/organize/task.py
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,13 @@ | ||||||
|  | # scopes.organize.task | ||||||
|  | 
 | ||||||
|  | """Task (and corresponding container) implementation.""" | ||||||
|  | 
 | ||||||
|  | from scopes.storage.common import registerContainerClass | ||||||
|  | from scopes.storage.concept import Concept | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | class Task(Concept): | ||||||
|  | 
 | ||||||
|  |     headFields = ['name'] | ||||||
|  |     prefix = 'tsk'  | ||||||
|  | 
 | ||||||
|  | @ -8,5 +8,5 @@ from scopes.storage.tracking import Container, Track | ||||||
| 
 | 
 | ||||||
| class Concept(Track): | class Concept(Track): | ||||||
| 
 | 
 | ||||||
|     headFields = ['parent', 'name'] |     headFields = ['name'] | ||||||
|   |   | ||||||
|  |  | ||||||
|  | @ -10,23 +10,23 @@ class Folder(Track): | ||||||
|     prefix = 'fldr' |     prefix = 'fldr' | ||||||
| 
 | 
 | ||||||
|     def keys(self): |     def keys(self): | ||||||
|         for f in self.container.query(parent=self.name): |         for f in self.container.query(parent=self.rid): | ||||||
|             yield f.name |             yield f.name | ||||||
| 
 | 
 | ||||||
|     def get(self, key, default=None): |     def get(self, key, default=None): | ||||||
|         value = self.container.queryLast(parent=self.name, name=key) |         value = self.container.queryLast(parent=self.rid, name=key) | ||||||
|         if value is None: |         if value is None: | ||||||
|             return default |             return default | ||||||
|         return value |         return value | ||||||
| 
 | 
 | ||||||
|     def __getitem__(self, key): |     def __getitem__(self, key): | ||||||
|         value = self.container.queryLast(parent=self.name, name=key) |         value = self.container.queryLast(parent=self.rid, name=key) | ||||||
|         if value is None: |         if value is None: | ||||||
|             raise KeyError(key) |             raise KeyError(key) | ||||||
|         return value |         return value | ||||||
| 
 | 
 | ||||||
|     def __setitem__(self, key, value): |     def __setitem__(self, key, value): | ||||||
|         value.set('parent', self.name) |         value.set('parent', self.rid) | ||||||
|         value.set('name', key) |         value.set('name', key) | ||||||
|         self.container.save(value) |         self.container.save(value) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,3 +1,13 @@ | ||||||
| # scopes.storage.relation | # scopes.storage.relation | ||||||
| 
 | 
 | ||||||
| """An SQL-based relationship engine using RDF-like triples.""" | """An SQL-based relationship engine using RDF-like triples.""" | ||||||
|  | 
 | ||||||
|  | from scopes.storage.common import registerContainerClass | ||||||
|  | from scopes.storage.tracking import Container, Track | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | class Triple(Track): | ||||||
|  | 
 | ||||||
|  |     headFields = ['first', 'second', 'pred'] | ||||||
|  |     prefix = 'rel' | ||||||
|  |   | ||||||
|  |  | ||||||
|  | @ -59,6 +59,12 @@ class Track(object): | ||||||
|             return None |             return None | ||||||
|         return '%s-%d' % (self.prefix, self.trackId) |         return '%s-%d' % (self.prefix, self.trackId) | ||||||
| 
 | 
 | ||||||
|  |     @property | ||||||
|  |     def rid(self): | ||||||
|  |         if self.trackId is None: | ||||||
|  |             return '' | ||||||
|  |         return str(self.trackId) | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| @registerContainerClass | @registerContainerClass | ||||||
| class Container(object): | class Container(object): | ||||||
|  |  | ||||||
|  | @ -80,7 +80,7 @@ class Test(unittest.TestCase): | ||||||
|         top['child1'] = folder.Folder(data=dict(title='First Child')) |         top['child1'] = folder.Folder(data=dict(title='First Child')) | ||||||
|         self.assertEqual(list(top.keys()), ['child1']) |         self.assertEqual(list(top.keys()), ['child1']) | ||||||
|         ch1 = top['child1'] |         ch1 = top['child1'] | ||||||
|         self.assertEqual(ch1.parent, top.name) |         self.assertEqual(ch1.parent, top.rid) | ||||||
|         assert list(top.keys()) == ['child1'] |         assert list(top.keys()) == ['child1'] | ||||||
| 
 | 
 | ||||||
| def suite(): | def suite(): | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue