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
« prev ^ index » next coverage.py v7.2.3, created at 2023-04-10 14:40 +0900
1# -*- coding: utf-8 -*-
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"""
20from builtins import object
23class QgsEditError(Exception):
25 def __init__(self, value):
26 self.value = value
28 def __str__(self):
29 return repr(self.value)
32class edit(object):
34 def __init__(self, layer):
35 self.layer = layer
37 def __enter__(self):
38 assert self.layer.startEditing()
39 return self.layer
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