Skip to content

Commit 3472ac8

Browse files
rldhontvolaya
authored andcommittedNov 4, 2015
[Processing] Manage optional parameters
Can't set parameters to null (None or '') if the parameter is not optional
1 parent 55e75ad commit 3472ac8

File tree

1 file changed

+49
-27
lines changed

1 file changed

+49
-27
lines changed
 

‎python/plugins/processing/core/parameters.py

Lines changed: 49 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,11 @@ def setValue(self, obj):
7676
Returns true if the value passed is correct for the type
7777
of parameter.
7878
"""
79+
if obj is None:
80+
if not self.optional:
81+
return False
82+
self.value = None
83+
return True
7984
self.value = unicode(obj)
8085
return True
8186

@@ -111,6 +116,8 @@ def __init__(self, name='', description='', default=True):
111116

112117
def setValue(self, value):
113118
if value is None:
119+
if not self.optional:
120+
return False
114121
self.value = self.default
115122
return True
116123
if isinstance(value, basestring):
@@ -133,6 +140,8 @@ def __init__(self, name='', description='', default='EPSG:4326'):
133140

134141
def setValue(self, value):
135142
if value is None:
143+
if not self.optional:
144+
return False
136145
self.value = self.default
137146
return True
138147

@@ -167,7 +176,9 @@ def __init__(self, name='', description='', default='0,1,0,1'):
167176

168177
def setValue(self, text):
169178
if text is None:
170-
self.value = self.default
179+
if not self.optional:
180+
return False
181+
self.value = None
171182
return True
172183
tokens = text.split(',')
173184
if len(tokens) != 4:
@@ -203,8 +214,7 @@ def setValue(self, obj):
203214
if self.value.strip() == '' or self.value is None:
204215
if not self.optional:
205216
return False
206-
else:
207-
self.value = ''
217+
self.value = ''
208218
if self.ext is not None and self.value != '':
209219
return self.value.endswith(self.ext)
210220
return True
@@ -229,6 +239,11 @@ def __init__(self, name='', description='', numRows=3,
229239
self.value = None
230240

231241
def setValue(self, obj):
242+
if obj is None:
243+
if not self.optional:
244+
return False
245+
self.value = None
246+
return True
232247
# TODO: check that it contains a correct number of elements
233248
if isinstance(obj, (str, unicode)):
234249
self.value = obj
@@ -276,11 +291,10 @@ def __init__(self, name='', description='', datatype=-1, optional=False):
276291
def setValue(self, obj):
277292
self.exported = None
278293
if obj is None:
279-
if self.optional:
280-
self.value = None
281-
return True
282-
else:
294+
if not self.optional:
283295
return False
296+
self.value = None
297+
return True
284298

285299
if isinstance(obj, list):
286300
if len(obj) == 0:
@@ -417,7 +431,9 @@ def __init__(self, name='', description='', minValue=None, maxValue=None,
417431

418432
def setValue(self, n):
419433
if n is None:
420-
self.value = self.default
434+
if not self.optional:
435+
return False
436+
self.value = None
421437
return True
422438
try:
423439
if float(n) - int(float(n)) == 0:
@@ -453,7 +469,9 @@ def __init__(self, name='', description='', default='0,1'):
453469

454470
def setValue(self, text):
455471
if text is None:
456-
self.value = self.default
472+
if not self.optional:
473+
return False
474+
self.value = None
457475
return True
458476
tokens = text.split(',')
459477
if len(tokens) != 2:
@@ -510,11 +528,10 @@ def getSafeExportedLayer(self):
510528
def setValue(self, obj):
511529
self.exported = None
512530
if obj is None:
513-
if self.optional:
514-
self.value = None
515-
return True
516-
else:
531+
if not self.optional:
517532
return False
533+
self.value = None
534+
return True
518535
if isinstance(obj, QgsRasterLayer):
519536
self.value = unicode(obj.dataProvider().dataSourceUri())
520537
return True
@@ -552,6 +569,8 @@ def __init__(self, name='', description='', options=[], default=0, isSource=Fals
552569

553570
def setValue(self, n):
554571
if n is None:
572+
if not self.optional:
573+
return False
555574
self.value = self.default
556575
return True
557576
try:
@@ -577,10 +596,9 @@ def __init__(self, name='', description='', default='', multiline=False,
577596

578597
def setValue(self, obj):
579598
if obj is None:
580-
if self.optional:
581-
self.value = ''
582-
return True
583-
self.value = self.default
599+
if not self.optional:
600+
return false
601+
self.value = ''
584602
return True
585603
self.value = unicode(obj).replace(
586604
ParameterString.ESCAPED_NEWLINE,
@@ -604,11 +622,10 @@ def __init__(self, name='', description='', optional=False):
604622
def setValue(self, obj):
605623
self.exported = None
606624
if obj is None:
607-
if self.optional:
608-
self.value = None
609-
return True
610-
else:
625+
if not self.optional:
611626
return False
627+
self.value = None
628+
return True
612629
if isinstance(obj, QgsVectorLayer):
613630
source = unicode(obj.source())
614631
self.value = source
@@ -679,7 +696,10 @@ def getValueAsCommandLineParameter(self):
679696

680697
def setValue(self, value):
681698
if value is None:
682-
return self.optional
699+
if not self.optional:
700+
return False
701+
self.value = None
702+
return True
683703
elif len(value) > 0:
684704
self.value = unicode(value)
685705
else:
@@ -721,11 +741,10 @@ def __init__(self, name='', description='', shapetype=[-1],
721741
def setValue(self, obj):
722742
self.exported = None
723743
if obj is None:
724-
if self.optional:
725-
self.value = None
726-
return True
727-
else:
744+
if not self.optional:
728745
return False
746+
self.value = None
747+
return True
729748
if isinstance(obj, QgsVectorLayer):
730749
self.value = unicode(obj.source())
731750
return True
@@ -814,7 +833,10 @@ def getValueAsCommandLineParameter(self):
814833

815834
def setValue(self, value):
816835
if value is None:
817-
return self.optional
836+
if not self.optional:
837+
return False
838+
self.value = None
839+
return True
818840
elif len(value) == 0:
819841
return self.optional
820842
if isinstance(value, unicode):

0 commit comments

Comments
 (0)