Skip to content

Commit f4599f1

Browse files
committedMay 6, 2018
[processing][gdal] Better error messages when invalid parameters are passed
1 parent 787dd34 commit f4599f1

28 files changed

+142
-34
lines changed
 

‎python/plugins/processing/algs/gdal/AssignProjection.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@
2929

3030
from qgis.PyQt.QtGui import QIcon
3131

32-
from qgis.core import (QgsProcessingParameterRasterLayer,
32+
from qgis.core import (QgsProcessingException,
33+
QgsProcessingParameterRasterLayer,
3334
QgsProcessingParameterCrs,
3435
QgsProcessingOutputRasterLayer)
3536
from processing.algs.gdal.GdalAlgorithm import GdalAlgorithm
@@ -78,6 +79,9 @@ def commandName(self):
7879

7980
def getConsoleCommands(self, parameters, context, feedback, executing=True):
8081
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
82+
if inLayer is None:
83+
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
84+
8185
fileName = inLayer.source()
8286

8387
crs = self.parameterAsCrs(parameters, self.CRS, context).authid()

‎python/plugins/processing/algs/gdal/ClipRasterByExtent.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
from qgis.PyQt.QtGui import QIcon
3131

3232
from qgis.core import (QgsRasterFileWriter,
33+
QgsProcessingException,
3334
QgsProcessingParameterDefinition,
3435
QgsProcessingParameterRasterLayer,
3536
QgsProcessingParameterEnum,
@@ -110,6 +111,9 @@ def commandName(self):
110111

111112
def getConsoleCommands(self, parameters, context, feedback, executing=True):
112113
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
114+
if inLayer is None:
115+
raise QgsProcessingException('Invalid input layer {}'.format(parameters[self.INPUT] if self.INPUT in parameters else 'INPUT'))
Code has comments. Press enter to view.
116+
113117
bbox = self.parameterAsExtent(parameters, self.EXTENT, context, inLayer.crs())
114118
if self.NODATA in parameters and parameters[self.NODATA] is not None:
115119
nodata = self.parameterAsDouble(parameters, self.NODATA, context)

‎python/plugins/processing/algs/gdal/ClipRasterByMask.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131

3232
from qgis.core import (QgsRasterFileWriter,
3333
QgsProcessing,
34+
QgsProcessingException,
3435
QgsProcessingParameterDefinition,
3536
QgsProcessingParameterFeatureSource,
3637
QgsProcessingParameterRasterLayer,
@@ -124,6 +125,8 @@ def commandName(self):
124125

125126
def getConsoleCommands(self, parameters, context, feedback, executing=True):
126127
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
128+
if inLayer is None:
129+
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
127130

128131
maskLayer, maskLayerName = self.getOgrCompatibleSource(self.MASK, parameters, context, feedback, executing)
129132

‎python/plugins/processing/algs/gdal/ColorRelief.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727

2828
import os
2929
from qgis.core import (QgsRasterFileWriter,
30+
QgsProcessingException,
3031
QgsProcessingParameterDefinition,
3132
QgsProcessingParameterRasterLayer,
3233
QgsProcessingParameterBand,
@@ -102,6 +103,9 @@ def commandName(self):
102103
def getConsoleCommands(self, parameters, context, feedback, executing=True):
103104
arguments = ['color-relief']
104105
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
106+
if inLayer is None:
107+
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
108+
105109
arguments.append(inLayer.source())
106110
arguments.append(self.parameterAsFile(parameters, self.COLOR_TABLE, context))
107111

‎python/plugins/processing/algs/gdal/OgrToPostGis.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@
2525

2626
__revision__ = '$Format:%H$'
2727

28-
from qgis.core import (QgsProcessingParameterFeatureSource,
28+
from qgis.core import (QgsProcessingException,
29+
QgsProcessingParameterFeatureSource,
2930
QgsProcessingParameterString,
3031
QgsProcessingParameterEnum,
3132
QgsProcessingParameterCrs,
@@ -189,6 +190,9 @@ def getConnectionString(self, parameters, context):
189190

190191
def getConsoleCommands(self, parameters, context, feedback, executing=True):
191192
ogrLayer, layername = self.getOgrCompatibleSource(self.INPUT, parameters, context, feedback, executing)
193+
if not layername:
194+
raise QgsProcessingException(self.invalidSourceError(parameters, self.INPUT))
195+
192196
shapeEncoding = self.parameterAsString(parameters, self.SHAPE_ENCODING, context)
193197
ssrs = self.parameterAsCrs(parameters, self.S_SRS, context).authid()
194198
tsrs = self.parameterAsCrs(parameters, self.T_SRS, context).authid()

‎python/plugins/processing/algs/gdal/aspect.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@
2727

2828
import os
2929

30-
from qgis.core import (QgsRasterFileWriter,
30+
from qgis.core import (QgsProcessingException,
31+
QgsRasterFileWriter,
3132
QgsProcessingParameterDefinition,
3233
QgsProcessingParameterRasterLayer,
3334
QgsProcessingParameterBand,
@@ -102,6 +103,8 @@ def commandName(self):
102103
def getConsoleCommands(self, parameters, context, feedback, executing=True):
103104
arguments = ['aspect']
104105
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
106+
if inLayer is None:
107+
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
105108
arguments.append(inLayer.source())
106109

107110
out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)

‎python/plugins/processing/algs/gdal/contour.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
from qgis.PyQt.QtGui import QIcon
3131

3232
from qgis.core import (QgsProcessing,
33+
QgsProcessingException,
3334
QgsProcessingParameterDefinition,
3435
QgsProcessingParameterRasterLayer,
3536
QgsProcessingParameterBand,
@@ -126,6 +127,9 @@ def commandName(self):
126127

127128
def getConsoleCommands(self, parameters, context, feedback, executing=True):
128129
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
130+
if inLayer is None:
131+
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
132+
129133
fieldName = self.parameterAsString(parameters, self.FIELD_NAME, context)
130134
if self.NODATA in parameters and parameters[self.NODATA] is not None:
131135
nodata = self.parameterAsDouble(parameters, self.NODATA, context)

‎python/plugins/processing/algs/gdal/fillnodata.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import os
2929

3030
from qgis.core import (QgsRasterFileWriter,
31+
QgsProcessingException,
3132
QgsProcessingParameterRasterLayer,
3233
QgsProcessingParameterBand,
3334
QgsProcessingParameterNumber,
@@ -116,7 +117,11 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
116117
arguments.append('-of')
117118
arguments.append(QgsRasterFileWriter.driverForExtension(os.path.splitext(out)[1]))
118119

119-
arguments.append(self.parameterAsRasterLayer(parameters, self.INPUT, context).source())
120+
raster = self.parameterAsRasterLayer(parameters, self.INPUT, context)
121+
if raster is None:
122+
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
123+
124+
arguments.append(raster.source())
120125
arguments.append(out)
121126

122127
commands = []

‎python/plugins/processing/algs/gdal/gdal2tiles.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@
2626
__revision__ = '$Format:%H$'
2727

2828

29-
from qgis.core import (QgsProcessingParameterDefinition,
29+
from qgis.core import (QgsProcessingException,
30+
QgsProcessingParameterDefinition,
3031
QgsProcessingParameterRasterLayer,
3132
QgsProcessingParameterCrs,
3233
QgsProcessingParameterEnum,
@@ -219,6 +220,9 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
219220
arguments.append('-n')
220221

221222
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
223+
if inLayer is None:
224+
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
225+
222226
arguments.append(inLayer.source())
223227
arguments.append(self.parameterAsString(parameters, self.OUTPUT, context))
224228

‎python/plugins/processing/algs/gdal/gdal2xyz.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
__revision__ = '$Format:%H$'
2727

2828
from qgis.core import (QgsProcessing,
29+
QgsProcessingException,
2930
QgsProcessingParameterRasterLayer,
3031
QgsProcessingParameterBand,
3132
QgsProcessingParameterBoolean,
@@ -82,7 +83,11 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
8283
if self.parameterAsBool(parameters, self.CSV, context):
8384
arguments.append('-csv')
8485

85-
arguments.append(self.parameterAsRasterLayer(parameters, self.INPUT, context).source())
86+
raster = self.parameterAsRasterLayer(parameters, self.INPUT, context)
87+
if raster is None:
88+
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
89+
90+
arguments.append(raster.source())
8691
arguments.append(self.parameterAsFileOutput(parameters, self.OUTPUT, context))
8792

8893
commands = []

‎python/plugins/processing/algs/gdal/gdaladdo.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@
2929

3030
from qgis.PyQt.QtGui import QIcon
3131

32-
from qgis.core import (QgsProcessingParameterRasterLayer,
32+
from qgis.core import (QgsProcessingException,
33+
QgsProcessingParameterRasterLayer,
3334
QgsProcessingParameterEnum,
3435
QgsProcessingParameterString,
3536
QgsProcessingParameterBoolean,
@@ -110,6 +111,9 @@ def commandName(self):
110111

111112
def getConsoleCommands(self, parameters, context, feedback, executing=True):
112113
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
114+
if inLayer is None:
115+
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
116+
113117
fileName = inLayer.source()
114118

115119
arguments = []

‎python/plugins/processing/algs/gdal/gdalinfo.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@
2828
import os
2929

3030
from qgis.PyQt.QtGui import QIcon
31-
from qgis.core import (QgsProcessingParameterRasterLayer,
31+
from qgis.core import (QgsProcessingException,
32+
QgsProcessingParameterRasterLayer,
3233
QgsProcessingParameterBoolean,
3334
QgsProcessingParameterFileDestination)
3435
from processing.algs.gdal.GdalAlgorithm import GdalAlgorithm
@@ -97,7 +98,11 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
9798
arguments.append('-nogcp')
9899
if self.parameterAsBool(parameters, self.NO_METADATA, context):
99100
arguments.append('-nomd')
100-
arguments.append(self.parameterAsRasterLayer(parameters, self.INPUT, context).source())
101+
raster = self.parameterAsRasterLayer(parameters, self.INPUT, context)
102+
if raster is None:
103+
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
104+
105+
arguments.append(raster.source())
101106
return [self.commandName(), GdalUtils.escapeAndJoin(arguments)]
102107

103108
def processAlgorithm(self, parameters, context, feedback):

‎python/plugins/processing/algs/gdal/hillshade.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import os
3030

3131
from qgis.core import (QgsRasterFileWriter,
32+
QgsProcessingException,
3233
QgsProcessingParameterDefinition,
3334
QgsProcessingParameterRasterLayer,
3435
QgsProcessingParameterBand,
@@ -129,6 +130,9 @@ def commandName(self):
129130
def getConsoleCommands(self, parameters, context, feedback, executing=True):
130131
arguments = ['hillshade']
131132
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
133+
if inLayer is None:
134+
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
135+
132136
arguments.append(inLayer.source())
133137

134138
out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)

‎python/plugins/processing/algs/gdal/nearblack.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
from qgis.PyQt.QtGui import QIcon
3131

3232
from qgis.core import (QgsRasterFileWriter,
33+
QgsProcessingException,
3334
QgsProcessingParameterDefinition,
3435
QgsProcessingParameterRasterLayer,
3536
QgsProcessingParameterBoolean,
@@ -97,6 +98,8 @@ def commandName(self):
9798

9899
def getConsoleCommands(self, parameters, context, feedback, executing=True):
99100
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
101+
if inLayer is None:
102+
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
100103

101104
arguments = []
102105
arguments.append(inLayer.source())

‎python/plugins/processing/algs/gdal/ogrinfo.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@
2626
__revision__ = '$Format:%H$'
2727

2828

29-
from qgis.core import (QgsProcessingParameterVectorLayer,
29+
from qgis.core import (QgsProcessingException,
30+
QgsProcessingParameterVectorLayer,
3031
QgsProcessingParameterBoolean,
3132
QgsProcessingParameterFileDestination)
3233
from processing.algs.gdal.GdalAlgorithm import GdalAlgorithm
@@ -81,6 +82,9 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
8182
arguments.append('-nomd')
8283

8384
inLayer = self.parameterAsVectorLayer(parameters, self.INPUT, context)
85+
if inLayer is None:
86+
raise QgsProcessingException(self.invalidSourceError(parameters, self.INPUT))
87+
8488
connectionString = GdalUtils.ogrConnectionString(inLayer.source(), context)
8589
arguments.append(connectionString)
8690
return arguments

‎python/plugins/processing/algs/gdal/pct2rgb.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
from qgis.PyQt.QtGui import QIcon
3131

3232
from qgis.core import (QgsRasterFileWriter,
33+
QgsProcessingException,
3334
QgsProcessingParameterRasterLayer,
3435
QgsProcessingParameterBand,
3536
QgsProcessingParameterBoolean,
@@ -83,6 +84,9 @@ def commandName(self):
8384
def getConsoleCommands(self, parameters, context, feedback, executing=True):
8485
arguments = []
8586
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
87+
if inLayer is None:
88+
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
89+
8690
arguments.append(inLayer.source())
8791

8892
out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)

‎python/plugins/processing/algs/gdal/polygonize.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
from qgis.PyQt.QtCore import QFileInfo
3232

3333
from qgis.core import (QgsProcessing,
34+
QgsProcessingException,
3435
QgsProcessingParameterRasterLayer,
3536
QgsProcessingParameterBand,
3637
QgsProcessingParameterString,
@@ -91,6 +92,9 @@ def commandName(self):
9192
def getConsoleCommands(self, parameters, context, feedback, executing=True):
9293
arguments = []
9394
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
95+
if inLayer is None:
96+
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
97+
9498
arguments.append(inLayer.source())
9599

96100
outFile = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)

‎python/plugins/processing/algs/gdal/proximity.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
from qgis.PyQt.QtGui import QIcon
3131

3232
from qgis.core import (QgsRasterFileWriter,
33+
QgsProcessingException,
3334
QgsProcessingParameterDefinition,
3435
QgsProcessingParameterRasterLayer,
3536
QgsProcessingParameterBand,
@@ -136,6 +137,9 @@ def commandName(self):
136137

137138
def getConsoleCommands(self, parameters, context, feedback, executing=True):
138139
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
140+
if inLayer is None:
141+
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
142+
139143
distance = self.parameterAsDouble(parameters, self.MAX_DISTANCE, context)
140144
replaceValue = self.parameterAsDouble(parameters, self.REPLACE, context)
141145
if self.NODATA in parameters and parameters[self.NODATA] is not None:

‎python/plugins/processing/algs/gdal/rgb2pct.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
from qgis.PyQt.QtGui import QIcon
3232

3333
from qgis.core import (QgsRasterFileWriter,
34+
QgsProcessingException,
3435
QgsProcessingParameterRasterLayer,
3536
QgsProcessingParameterNumber,
3637
QgsProcessingParameterRasterDestination)
@@ -87,7 +88,11 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
8788
out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
8889
arguments.append('-of')
8990
arguments.append(QgsRasterFileWriter.driverForExtension(os.path.splitext(out)[1]))
90-
arguments.append(self.parameterAsRasterLayer(parameters, self.INPUT, context).source())
91+
raster = self.parameterAsRasterLayer(parameters, self.INPUT, context)
92+
if raster is None:
93+
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
94+
95+
arguments.append(raster.source())
9196
arguments.append(out)
9297

9398
if isWindows():

‎python/plugins/processing/algs/gdal/roughness.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import os
2929

3030
from qgis.core import (QgsRasterFileWriter,
31+
QgsProcessingException,
3132
QgsProcessingParameterDefinition,
3233
QgsProcessingParameterRasterLayer,
3334
QgsProcessingParameterBand,
@@ -91,6 +92,9 @@ def commandName(self):
9192
def getConsoleCommands(self, parameters, context, feedback, executing=True):
9293
arguments = ['roughness']
9394
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
95+
if inLayer is None:
96+
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
97+
9498
arguments.append(inLayer.source())
9599

96100
out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)

‎python/plugins/processing/algs/gdal/sieve.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
from qgis.PyQt.QtGui import QIcon
3131

3232
from qgis.core import (QgsRasterFileWriter,
33+
QgsProcessingException,
3334
QgsProcessingParameterRasterLayer,
3435
QgsProcessingParameterNumber,
3536
QgsProcessingParameterBoolean,
@@ -111,7 +112,11 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
111112
arguments.append('-of')
112113
arguments.append(QgsRasterFileWriter.driverForExtension(os.path.splitext(out)[1]))
113114

114-
arguments.append(self.parameterAsRasterLayer(parameters, self.INPUT, context).source())
115+
raster = self.parameterAsRasterLayer(parameters, self.INPUT, context)
116+
if raster is None:
117+
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
118+
119+
arguments.append(raster.source())
115120
arguments.append(out)
116121

117122
commands = []

‎python/plugins/processing/algs/gdal/slope.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import os
3030

3131
from qgis.core import (QgsRasterFileWriter,
32+
QgsProcessingException,
3233
QgsProcessingParameterDefinition,
3334
QgsProcessingParameterRasterLayer,
3435
QgsProcessingParameterBand,
@@ -106,6 +107,9 @@ def commandName(self):
106107
def getConsoleCommands(self, parameters, context, feedback, executing=True):
107108
arguments = ['slope']
108109
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
110+
if inLayer is None:
111+
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
112+
109113
arguments.append(inLayer.source())
110114

111115
out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)

‎python/plugins/processing/algs/gdal/tpi.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@
2828

2929
import os
3030

31-
from qgis.core import (QgsProcessingParameterDefinition,
31+
from qgis.core import (QgsProcessingException,
32+
QgsProcessingParameterDefinition,
3233
QgsProcessingParameterRasterLayer,
3334
QgsProcessingParameterBand,
3435
QgsProcessingParameterString,
@@ -90,6 +91,9 @@ def commandName(self):
9091
def getConsoleCommands(self, parameters, context, feedback, executing=True):
9192
arguments = ['TPI']
9293
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
94+
if inLayer is None:
95+
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
96+
9397
arguments.append(inLayer.source())
9498
out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
9599
arguments.append(out)

‎python/plugins/processing/algs/gdal/translate.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
from qgis.PyQt.QtGui import QIcon
3131

3232
from qgis.core import (QgsRasterFileWriter,
33+
QgsProcessingException,
3334
QgsProcessingParameterDefinition,
3435
QgsProcessingParameterRasterLayer,
3536
QgsProcessingParameterNumber,
@@ -115,6 +116,9 @@ def commandName(self):
115116

116117
def getConsoleCommands(self, parameters, context, feedback, executing=True):
117118
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
119+
if inLayer is None:
120+
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
121+
118122
out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
119123
if self.NODATA in parameters and parameters[self.NODATA] is not None:
120124
nodata = self.parameterAsDouble(parameters, self.NODATA, context)

‎python/plugins/processing/algs/gdal/tri.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@
2727

2828
import os
2929

30-
from qgis.core import (QgsProcessingParameterDefinition,
30+
from qgis.core import (QgsProcessingException,
31+
QgsProcessingParameterDefinition,
3132
QgsProcessingParameterRasterLayer,
3233
QgsProcessingParameterBand,
3334
QgsProcessingParameterString,
@@ -89,6 +90,9 @@ def commandName(self):
8990
def getConsoleCommands(self, parameters, context, feedback, executing=True):
9091
arguments = ['TRI']
9192
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
93+
if inLayer is None:
94+
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
95+
9296
arguments.append(inLayer.source())
9397
out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
9498
arguments.append(out)

‎python/plugins/processing/algs/gdal/warp.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929

3030
from qgis.PyQt.QtGui import QIcon
3131
from qgis.core import (QgsRasterFileWriter,
32+
QgsProcessingException,
3233
QgsProcessingParameterDefinition,
3334
QgsProcessingParameterRasterLayer,
3435
QgsProcessingParameterCrs,
@@ -163,6 +164,9 @@ def commandName(self):
163164

164165
def getConsoleCommands(self, parameters, context, feedback, executing=True):
165166
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
167+
if inLayer is None:
168+
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
169+
166170
out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
167171
sourceCrs = self.parameterAsCrs(parameters, self.SOURCE_CRS, context)
168172
targetCrs = self.parameterAsCrs(parameters, self.TARGET_CRS, context)

‎python/plugins/processing/tests/GdalAlgorithmsTest.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
QgsPointXY,
5353
QgsProject,
5454
QgsRectangle,
55-
QgsProcessingUtils,
55+
QgsProcessingException,
5656
QgsProcessingFeatureSourceDefinition)
5757
import nose2
5858
import os
@@ -90,6 +90,18 @@ def testCommandName(self):
9090
for a in p.algorithms():
9191
self.assertTrue(a.commandName(), 'Algorithm {} has no commandName!'.format(a.id()))
9292

93+
def testNoParameters(self):
94+
# Test that algorithms throw QgsProcessingExceptions and not base Python
95+
# exceptions when no parameters specified
96+
p = QgsApplication.processingRegistry().providerById('gdal')
97+
context = QgsProcessingContext()
98+
feedback = QgsProcessingFeedback()
99+
for a in p.algorithms():
100+
try:
101+
a.getConsoleCommands({}, context, feedback)
102+
except QgsProcessingException:
103+
pass
104+
93105
def testGetOgrCompatibleSourceFromMemoryLayer(self):
94106
# create a memory layer and add to project and context
95107
layer = QgsVectorLayer("Point?field=fldtxt:string&field=fldint:integer",

‎python/plugins/processing/tools/postgis.py

Lines changed: 9 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,10 @@
3030
import re
3131
import os
3232

33-
from qgis.core import QgsDataSourceUri, QgsCredentials, QgsSettings
33+
from qgis.core import (QgsProcessingException,
34+
QgsDataSourceUri,
35+
QgsCredentials,
36+
QgsSettings)
3437

3538
from qgis.PyQt.QtCore import QCoreApplication
3639

@@ -44,7 +47,7 @@ def uri_from_name(conn_name):
4447
settings.beginGroup(u"/PostgreSQL/connections/%s" % conn_name)
4548

4649
if not settings.contains("database"): # non-existent entry?
47-
raise DbError(QCoreApplication.translate("PostGIS", 'There is no defined database connection "{0}".').format(conn_name))
50+
raise QgsProcessingException(QCoreApplication.translate("PostGIS", 'There is no defined database connection "{0}".').format(conn_name))
4851

4952
uri = QgsDataSourceUri()
5053

@@ -126,19 +129,6 @@ def __init__(self, row):
126129
self.columns = list(map(int, columns.split(' ')))
127130

128131

129-
class DbError(Exception):
130-
131-
def __init__(self, message, query=None):
132-
self.message = message
133-
self.query = query
134-
135-
def __str__(self):
136-
text = "MESSAGE: {}".format(self.message)
137-
if self.query:
138-
text = "{}\nQUERY: {}".format(text, self.query)
139-
return text
140-
141-
142132
class TableField(object):
143133

144134
def __init__(self, name, data_type, is_null=None, default=None,
@@ -207,7 +197,7 @@ def __init__(self, host=None, port=None, dbname=None, user=None,
207197
break
208198
except psycopg2.OperationalError as e:
209199
if i == 3:
210-
raise DbError(str(e))
200+
raise QgsProcessingException(str(e))
211201

212202
err = str(e)
213203
user = self.uri.username()
@@ -217,7 +207,7 @@ def __init__(self, host=None, port=None, dbname=None, user=None,
217207
password,
218208
err)
219209
if not ok:
220-
raise DbError(QCoreApplication.translate("PostGIS", 'Action canceled by user'))
210+
raise QgsProcessingException(QCoreApplication.translate("PostGIS", 'Action canceled by user'))
221211
if user:
222212
self.uri.setUsername(user)
223213
if password:
@@ -823,8 +813,8 @@ def _exec_sql(self, cursor, sql):
823813
try:
824814
cursor.execute(sql)
825815
except psycopg2.Error as e:
826-
raise DbError(str(e),
827-
e.cursor.query.decode(e.cursor.connection.encoding))
816+
raise QgsProcessingException(str(e) + ' QUERY: ' +
817+
e.cursor.query.decode(e.cursor.connection.encoding))
828818

829819
def _exec_sql_and_commit(self, sql):
830820
"""Tries to execute and commit some action, on error it rolls

0 commit comments

Comments
 (0)
Please sign in to comment.