Coverage for C:\Program Files\QGIS 3.10\apps\qgis-ltr\python\qgis\core\additions\edit.py: 45%

20 statements  

« prev     ^ index     » next       coverage.py v7.2.3, created at 2023-04-10 14:40 +0900

1# -*- coding: utf-8 -*- 

2 

3""" 

4*************************************************************************** 

5 edit.py 

6 --------------------- 

7 Date : May 2018 

8 Copyright : (C) 2018 by Denis Rouzaud 

9 Email : denis@opengis.ch 

10*************************************************************************** 

11* * 

12* This program is free software; you can redistribute it and/or modify * 

13* it under the terms of the GNU General Public License as published by * 

14* the Free Software Foundation; either version 2 of the License, or * 

15* (at your option) any later version. * 

16* * 

17*************************************************************************** 

18""" 

19 

20from builtins import object 

21 

22 

23class QgsEditError(Exception): 

24 

25 def __init__(self, value): 

26 self.value = value 

27 

28 def __str__(self): 

29 return repr(self.value) 

30 

31 

32class edit(object): 

33 

34 def __init__(self, layer): 

35 self.layer = layer 

36 

37 def __enter__(self): 

38 assert self.layer.startEditing() 

39 return self.layer 

40 

41 def __exit__(self, ex_type, ex_value, traceback): 

42 if ex_type is None: 

43 if not self.layer.commitChanges(): 

44 raise QgsEditError(self.layer.commitErrors()) 

45 return True 

46 else: 

47 self.layer.rollBack() 

48 return False