Changeset 551
- Timestamp:
- 06/10/03 16:03:19 (5 years ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/RBFoundation/RBFoundation/Objects/Relations.py
r550 r551 193 193 return self.itervalues() 194 194 195 def getkeypairs(self, *relations): 195 def add(self, *relations): 196 relations = _flattenlist(relations) 197 relations = self._getkeypairs(relations) 198 self.OnModifying(self, relations) 199 self.lookup.update(relations) 200 self.OnModified(self, relations) 201 202 def remove(self, *relation): 203 relations = _flattenlist(relations) 204 relations = self._getkeypairs(relations) 205 self.OnModifying(self, relations) 206 for key, relation in relations: 207 try: del self.lookup[key] 208 except LookupError: continue 209 self.OnModified(self, relations) 210 211 def clear(self): 212 relations = self.lookup.items() 213 self.OnModifying(self, relations) 214 self.lookup.clear() 215 self.OnModified(self, relations) 216 217 def _getkeypairs(self, *relations): 196 218 if self.keyname is None: 197 219 raise ValueError, 'Cannot infer key for relation "%s"' % (relation,) … … 205 227 else: 206 228 raise KeyError, 'Relation "%s" metadata has no key "%s"' % (relation, self.keyname) 207 208 def add(self, *relations):209 relations = _flattenlist(relations)210 relations = self.getkeypairs(relations)211 self.OnModifying(self, relations)212 self.lookup.update(relations)213 self.OnModified(self, relations)214 215 def remove(self, *relation):216 relations = _flattenlist(relations)217 relations = self.getkeypairs(relations)218 self.OnModifying(self, relations)219 for key, relation in relations:220 try: del self.lookup[key]221 except LookupError: continue222 self.OnModified(self, relations)223 224 def clear(self):225 relations = self.lookup.items()226 self.OnModifying(self, relations)227 self.lookup.clear()228 self.OnModified(self, relations)229 229 230 230 #~ dict adapter ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ trunk/RBFoundation/RBFoundation/Utilities.py
r528 r551 23 23 24 24 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 25 #~ Imports 26 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 27 28 import types 29 30 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 31 #~ Constants / Variables / Etc. 32 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 33 34 _collectiontypes = (list, tuple, types.GeneratorType) 35 36 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 25 37 #~ Definitions 38 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 39 40 def isIterable(item): 41 if isinstance(item, _collectiontypes): 42 return True 43 elif hasattr(item, '__iter__'): 44 return True 45 else: 46 return False 47 48 def asIterable(item): 49 if isinstance(item, _collectiontypes): 50 return item 51 elif hasattr(item, '__iter__'): 52 return item 53 else: 54 return [item] 55 26 56 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 27 57
