mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-25 00:58:06 -05:00
[processing] Fix some script parameter export/import issues
This commit is contained in:
parent
ffd67f119e
commit
55e3ea033a
@ -229,7 +229,9 @@ class ParameterBoolean(Parameter):
|
||||
isOptional, name, definition = _splitParameterOptions(line)
|
||||
if definition.startswith("boolean"):
|
||||
descName = _createDescriptiveName(name)
|
||||
default = definition.strip()[len('boolean') + 1:]
|
||||
default = definition.strip()[len('boolean') + 1:] or None
|
||||
if default == 'None':
|
||||
default = None
|
||||
if default:
|
||||
param = ParameterBoolean(name, descName, default)
|
||||
else:
|
||||
@ -292,6 +294,8 @@ class ParameterCrs(Parameter):
|
||||
if definition.startswith("crs"):
|
||||
descName = _createDescriptiveName(name)
|
||||
default = definition.strip()[len('crs') + 1:]
|
||||
if default == 'None':
|
||||
default = None
|
||||
if default:
|
||||
return ParameterCrs(name, descName, default, isOptional)
|
||||
else:
|
||||
@ -574,7 +578,7 @@ class ParameterFixedTable(Parameter):
|
||||
if definition.startswith("fixedtable"):
|
||||
descName = _createDescriptiveName(name)
|
||||
default = definition.strip()[len('fixedtable') + 1:] or None
|
||||
return ParameterFixedTable(name, descName, default, isOptional)
|
||||
return ParameterFixedTable(name, descName, optional=isOptional)
|
||||
|
||||
|
||||
class ParameterMultipleInput(ParameterDataObject):
|
||||
@ -1186,15 +1190,17 @@ class ParameterString(Parameter):
|
||||
param_type = ''
|
||||
if self.optional:
|
||||
param_type += 'optional '
|
||||
param_type += 'string'
|
||||
return '##' + self.name + '=' + param_type + self.default
|
||||
param_type += 'string '
|
||||
return '##' + self.name + '=' + param_type + str(self.default)
|
||||
|
||||
@classmethod
|
||||
def fromScriptCode(self, line):
|
||||
isOptional, name, definition = _splitParameterOptions(line)
|
||||
descName = _createDescriptiveName(name)
|
||||
if definition.lower().strip().startswith('string'):
|
||||
default = definition.strip()[len('string') + 1:]
|
||||
default = definition.strip()[len('string') + 1:] or None
|
||||
if default == 'None':
|
||||
default = None
|
||||
if default:
|
||||
return ParameterString(name, descName, default, optional=isOptional)
|
||||
else:
|
||||
@ -1255,15 +1261,17 @@ class ParameterExpression(Parameter):
|
||||
param_type = ''
|
||||
if self.optional:
|
||||
param_type += 'optional '
|
||||
param_type += 'expression'
|
||||
return '##' + self.name + '=' + param_type + self.default
|
||||
param_type += 'expression '
|
||||
return '##' + self.name + '=' + param_type + str(self.default)
|
||||
|
||||
@classmethod
|
||||
def fromScriptCode(self, line):
|
||||
isOptional, name, definition = _splitParameterOptions(line)
|
||||
if definition.lower().strip().startswith('expression'):
|
||||
descName = _createDescriptiveName(name)
|
||||
default = definition.strip()[len('expression') + 1:]
|
||||
default = definition.strip()[len('expression') + 1:] or None
|
||||
if default == 'None':
|
||||
default = None
|
||||
if default:
|
||||
return ParameterExpression(name, descName, default, optional=isOptional)
|
||||
else:
|
||||
@ -1413,7 +1421,7 @@ class ParameterTableField(Parameter):
|
||||
if self.optional:
|
||||
param_type += 'optional '
|
||||
param_type += 'field'
|
||||
return '##' + self.name + '=' + param_type + self.parent
|
||||
return '##' + self.name + '=' + param_type + str(self.parent)
|
||||
|
||||
@classmethod
|
||||
def fromScriptCode(self, line):
|
||||
|
@ -25,6 +25,8 @@ __copyright__ = '(C) 2013, Victor Olaya'
|
||||
|
||||
__revision__ = '$Format:%H$'
|
||||
|
||||
import sys
|
||||
from inspect import isclass
|
||||
from qgis.testing import start_app, unittest
|
||||
|
||||
from processing.core.parameters import (Parameter,
|
||||
@ -66,6 +68,19 @@ class ParameterTest(unittest.TestCase):
|
||||
parameter.setValue(123)
|
||||
self.assertEqual(parameter.getValueAsCommandLineParameter(), '123')
|
||||
|
||||
def testScriptCode(self):
|
||||
"""Simple check that default constructed object export/import correctly"""
|
||||
paramClasses = [c for c in list(sys.modules[__name__].__dict__.values())
|
||||
if isclass(c) and issubclass(c, Parameter) and c != Parameter]
|
||||
|
||||
for paramClass in paramClasses:
|
||||
param = paramClass()
|
||||
if hasattr(param, 'getAsScriptCode'):
|
||||
code = param.getAsScriptCode()
|
||||
importedParam = paramClass.fromScriptCode(code)
|
||||
self.assertEquals(param.optional, importedParam.optional)
|
||||
self.assertEquals(param.default, importedParam.default, param)
|
||||
|
||||
|
||||
class ParameterBooleanTest(unittest.TestCase):
|
||||
|
||||
@ -619,6 +634,7 @@ class ParameterExpressionTest(unittest.TestCase):
|
||||
result = getParameterFromString(code)
|
||||
self.assertIsInstance(result, ParameterExpression)
|
||||
self.assertTrue(result.optional)
|
||||
self.assertEquals(result.default, parameter.default)
|
||||
|
||||
|
||||
class ParameterTableFieldTest(unittest.TestCase):
|
||||
|
Loading…
x
Reference in New Issue
Block a user