From 2d835fbae06d0de31e3d9544544b3a2bc47e809f Mon Sep 17 00:00:00 2001 From: Alexander Bruy Date: Wed, 30 Jul 2014 19:27:23 +0300 Subject: [PATCH] [processing] replace str() with unicode() to avoid possible issues with non-ASCII characters (work in progress) --- .../processing/algs/gdal/OgrAlgorithm.py | 6 ++--- python/plugins/processing/core/outputs.py | 12 ++++----- python/plugins/processing/core/parameters.py | 26 +++++++++---------- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/python/plugins/processing/algs/gdal/OgrAlgorithm.py b/python/plugins/processing/algs/gdal/OgrAlgorithm.py index be5b5d9b68c..9263bafe223 100644 --- a/python/plugins/processing/algs/gdal/OgrAlgorithm.py +++ b/python/plugins/processing/algs/gdal/OgrAlgorithm.py @@ -54,15 +54,15 @@ class OgrAlgorithm(GdalAlgorithm): if provider == 'spatialite': # dbname='/geodata/osm_ch.sqlite' table="places" (Geometry) sql= regex = re.compile("dbname='(.+)'") - r = regex.search(str(layer.source())) + r = regex.search(unicode(layer.source())) ogrstr = r.groups()[0] elif provider == 'postgres': # dbname='ktryjh_iuuqef' host=spacialdb.com port=9999 # user='ktryjh_iuuqef' password='xyqwer' sslmode=disable # key='gid' estimatedmetadata=true srid=4326 type=MULTIPOLYGON # table="t4" (geom) sql= - s = re.sub(''' sslmode=.+''', '', str(layer.source())) + s = re.sub(''' sslmode=.+''', '', unicode(layer.source())) ogrstr = 'PG:%s' % s else: - ogrstr = str(layer.source()) + ogrstr = unicode(layer.source()) return ogrstr diff --git a/python/plugins/processing/core/outputs.py b/python/plugins/processing/core/outputs.py index f253a24fec4..e5663b2eb2d 100644 --- a/python/plugins/processing/core/outputs.py +++ b/python/plugins/processing/core/outputs.py @@ -53,7 +53,7 @@ class Output(object): # in a vector layer). In the case of layers, hidden outputs are # not loaded into QGIS after the algorithm is executed. Other # outputs not representing layers or tables should always be hidden. - self.hidden = str(hidden).lower() == str(True).lower() + self.hidden = unicode(hidden).lower() == unicode(True).lower() # This value indicates whether the output has to be opened # after being produced by the algorithm or not @@ -64,12 +64,12 @@ class Output(object): def getValueAsCommandLineParameter(self): if self.value is None: - return str(None) + return unicode(None) else: if not isWindows(): - return '"' + str(self.value) + '"' + return '"' + unicode(self.value) + '"' else: - return '"' + str(self.value).replace('\\', '\\\\') + '"' + return '"' + unicode(self.value).replace('\\', '\\\\') + '"' def setValue(self, value): try: @@ -99,7 +99,7 @@ class OutputExtent(Output): if value is not None and isinstance(value, basestring): value = value.strip() else: - self.value = ','.join([str(v) for v in value]) + self.value = ','.join([unicode(v) for v in value]) return True except: return False @@ -292,4 +292,4 @@ class OutputVector(Output): w = VectorWriter(self.value, self.encoding, fields, geomType, crs, options) self.memoryLayer = w.memLayer - return w \ No newline at end of file + return w diff --git a/python/plugins/processing/core/parameters.py b/python/plugins/processing/core/parameters.py index 943026c9369..53cd98f2255 100644 --- a/python/plugins/processing/core/parameters.py +++ b/python/plugins/processing/core/parameters.py @@ -39,9 +39,9 @@ def getParameterFromString(s): return clazz(*params) def parseBool(s): - if s == str(None): + if s == unicode(None): return None - return str(s).lower() == str(True).lower() + return unicode(s).lower() == unicode(True).lower() class Parameter: @@ -69,7 +69,7 @@ class Parameter: Returns true if the value passed is correct for the type of parameter. """ - self.value = str(obj) + self.value = unicode(obj) return True def __str__(self): @@ -81,7 +81,7 @@ class Parameter: entered in the console if calling an algorithm using the Processing.runalg() method. """ - return str(self.value) + return unicode(self.value) def parameterName(self): return self.__module__.split('.')[-1] @@ -102,7 +102,7 @@ class ParameterBoolean(Parameter): self.value = self.default return True if isinstance(value, basestring): - self.value = str(value).lower() == str(True).lower() + self.value = unicode(value).lower() == unicode(True).lower() else: self.value = bool(value) return True @@ -122,18 +122,18 @@ class ParameterCrs(Parameter): return True # TODO: check it is a valid authid - self.value = str(value) + self.value = unicode(value) return True def getValueAsCommandLineParameter(self): - return '"' + str(self.value) + '"' + return '"' + unicode(self.value) + '"' class ParameterDataObject(Parameter): def getValueAsCommandLineParameter(self): if self.value is None: - return str(None) + return unicode(None) else: if not isWindows(): return '"' + unicode(self.value) + '"' @@ -168,7 +168,7 @@ class ParameterExtent(Parameter): return False def getValueAsCommandLineParameter(self): - return '"' + str(self.value) + '"' + return '"' + unicode(self.value) + '"' class ParameterFile(Parameter): @@ -214,7 +214,7 @@ class ParameterFixedTable(Parameter): return True def getValueAsCommandLineParameter(self): - return '"' + str(self.value) + '"' + return '"' + unicode(self.value) + '"' @staticmethod def tableToString(table): @@ -362,7 +362,7 @@ class ParameterNumber(Parameter): default=0.0): Parameter.__init__(self, name, description) try: - self.default = int(str(default)) + self.default = int(unicode(default)) self.isInteger = True except: self.default = float(default) @@ -415,7 +415,7 @@ class ParameterRange(Parameter): return False def getValueAsCommandLineParameter(self): - return '"' + str(self.value) + '"' + return '"' + unicode(self.value) + '"' class ParameterRaster(ParameterDataObject): @@ -709,4 +709,4 @@ class ParameterVector(ParameterDataObject): exts = dataobjects.getSupportedOutputVectorLayerExtensions() for i in range(len(exts)): exts[i] = exts[i].upper() + ' files(*.' + exts[i].lower() + ')' - return ';;'.join(exts) \ No newline at end of file + return ';;'.join(exts)