mirror of
				https://github.com/qgis/QGIS.git
				synced 2025-10-30 00:07:09 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			49 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # -*- coding: utf-8 -*-
 | |
| 
 | |
| """
 | |
| ***************************************************************************
 | |
|     edit.py
 | |
|     ---------------------
 | |
|     Date                 : May 2018
 | |
|     Copyright            : (C) 2018 by Denis Rouzaud
 | |
|     Email                : denis@opengis.ch
 | |
| ***************************************************************************
 | |
| *                                                                         *
 | |
| *   This program is free software; you can redistribute it and/or modify  *
 | |
| *   it under the terms of the GNU General Public License as published by  *
 | |
| *   the Free Software Foundation; either version 2 of the License, or     *
 | |
| *   (at your option) any later version.                                   *
 | |
| *                                                                         *
 | |
| ***************************************************************************
 | |
| """
 | |
| 
 | |
| from builtins import object
 | |
| 
 | |
| 
 | |
| class QgsEditError(Exception):
 | |
| 
 | |
|     def __init__(self, value):
 | |
|         self.value = value
 | |
| 
 | |
|     def __str__(self):
 | |
|         return repr(self.value)
 | |
| 
 | |
| 
 | |
| class edit(object):
 | |
| 
 | |
|     def __init__(self, layer):
 | |
|         self.layer = layer
 | |
| 
 | |
|     def __enter__(self):
 | |
|         assert self.layer.startEditing()
 | |
|         return self.layer
 | |
| 
 | |
|     def __exit__(self, ex_type, ex_value, traceback):
 | |
|         if ex_type is None:
 | |
|             if not self.layer.commitChanges():
 | |
|                 raise QgsEditError(self.layer.commitErrors())
 | |
|             return True
 | |
|         else:
 | |
|             self.layer.rollBack()
 | |
|             return False
 |