Fixed proxy dict contains method
This commit is contained in:
		| @@ -4,6 +4,12 @@ Changelog | ||||
| Here you can see the full list of changes between each SQLAlchemy-Utils release. | ||||
|  | ||||
|  | ||||
| 0.12.4 (2013-06-01) | ||||
| ^^^^^^^^^^^^^^^^^^^ | ||||
|  | ||||
| - Fixed ProxyDict contains method | ||||
|  | ||||
|  | ||||
| 0.12.3 (2013-05-30) | ||||
| ^^^^^^^^^^^^^^^^^^^ | ||||
|  | ||||
|   | ||||
							
								
								
									
										2
									
								
								setup.py
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								setup.py
									
									
									
									
									
								
							| @@ -24,7 +24,7 @@ class PyTest(Command): | ||||
|  | ||||
| setup( | ||||
|     name='SQLAlchemy-Utils', | ||||
|     version='0.12.3', | ||||
|     version='0.12.4', | ||||
|     url='https://github.com/kvesteri/sqlalchemy-utils', | ||||
|     license='BSD', | ||||
|     author='Konsta Vesterinen', | ||||
|   | ||||
| @@ -19,31 +19,33 @@ class ProxyDict(object): | ||||
|  | ||||
|     def __contains__(self, key): | ||||
|         try: | ||||
|             return key in self.cache or self[key] | ||||
|             return key in self.cache or self.fetch(key) is not None | ||||
|         except KeyError: | ||||
|             return False | ||||
|  | ||||
|     def has_key(self, key): | ||||
|         return self.__contains__(key) | ||||
|  | ||||
|     def fetch(self, key): | ||||
|         return self.collection.filter_by(**{self.key_name: key}).first() | ||||
|         session = sa.orm.object_session(self.parent) | ||||
|         if session and sa.orm.util.has_identity(self.parent): | ||||
|             return self.collection.filter_by(**{self.key_name: key}).first() | ||||
|  | ||||
|     def create_new_instance(self, key): | ||||
|         value = self.child_class(**{self.key_name: key}) | ||||
|         self.collection.append(value) | ||||
|         self.cache[key] = value | ||||
|         return value | ||||
|  | ||||
|     def __getitem__(self, key): | ||||
|         if key in self.cache: | ||||
|             return self.cache[key] | ||||
|  | ||||
|         session = sa.orm.object_session(self.parent) | ||||
|         if not session or not sa.orm.util.has_identity(self.parent): | ||||
|             value = self.create_new_instance(key) | ||||
|         else: | ||||
|             value = self.fetch(key) | ||||
|             if not value: | ||||
|                 value = self.create_new_instance(key) | ||||
|         self.cache[key] = value | ||||
|         return value | ||||
|         value = self.fetch(key) | ||||
|         if value: | ||||
|             return value | ||||
|  | ||||
|         return self.create_new_instance(key) | ||||
|  | ||||
|     def __setitem__(self, key, value): | ||||
|         try: | ||||
|   | ||||
| @@ -79,6 +79,12 @@ class TestProxyDict(TestCase): | ||||
|         ) | ||||
|         article.translations['en'] | ||||
|  | ||||
|     def test_contains(self): | ||||
|         article = self.Article() | ||||
|         assert 'en' not in article.translations | ||||
|         # does not auto-append new translation | ||||
|         assert 'en' not in article.translations | ||||
|  | ||||
|     def test_committing_session_empties_proxy_dict_cache(self): | ||||
|         article = self.Article() | ||||
|         ( | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Konsta Vesterinen
					Konsta Vesterinen