@transaction intercept commit argument; commit / release here.
This commit is contained in:
		
							parent
							
								
									04f3f6f297
								
							
						
					
					
						commit
						203fb9e00f
					
				
					 1 changed files with 12 additions and 2 deletions
				
			
		|  | @ -78,12 +78,22 @@ def transaction(method): | |||
|     @functools.wraps(method) | ||||
|     def wrapped_transaction(self, *args, **kwargs): | ||||
|         photodb = _get_relevant_photodb(self) | ||||
| 
 | ||||
|         commit = kwargs.pop('commit', False) | ||||
|         is_root = len(photodb.savepoints) == 0 | ||||
| 
 | ||||
|         savepoint_id = photodb.savepoint(message=method.__qualname__) | ||||
| 
 | ||||
|         try: | ||||
|             result = method(self, *args, **kwargs) | ||||
|         except Exception as e: | ||||
|             photodb.rollback(savepoint=savepoint_id) | ||||
|             raise | ||||
|         else: | ||||
|             return result | ||||
| 
 | ||||
|         if commit: | ||||
|             photodb.commit(message=method.__qualname__) | ||||
|         elif not is_root: | ||||
|             photodb.release_savepoint(savepoint=savepoint_id) | ||||
|         return result | ||||
| 
 | ||||
|     return wrapped_transaction | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue