浏览代码

wxGUI/dbmgr: attempt to fix unicode errors from https://trac.osgeo.org/grass/ticket/1681

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@61897 15284696-431f-4ddb-bdfa-cd5b030d7da7
Anna Petrášová 10 年之前
父节点
当前提交
c3d3867d5a
共有 3 个文件被更改,包括 11 次插入11 次删除
  1. 7 8
      gui/wxpython/dbmgr/base.py
  2. 4 2
      gui/wxpython/dbmgr/dialogs.py
  3. 0 1
      gui/wxpython/dbmgr/vinfo.py

+ 7 - 8
gui/wxpython/dbmgr/base.py

@@ -850,7 +850,7 @@ class DbMgrNotebookBase(FN.FlatNotebook):
                 if enc:
                     sqlFile.write(sql.encode(enc) + ';')
                 else:
-                    sqlFile.write(sql + ';')
+                    sqlFile.write(sql.encode('utf-8') + ';')
                 sqlFile.write(os.linesep)
             sqlFile.close()
 
@@ -1438,14 +1438,13 @@ class DbMgrBrowsePage(DbMgrNotebookBase):
                     try:
                         if tlist.columns[columnName[i]]['ctype'] == int:
                             # values[i] is stored as text. 
-                            value = float(values[i])
-                        else:
-                            value = values[i]
-                        values[i] = tlist.columns[columnName[i]]['ctype'] (value)
+                            values[i] = int(float(values[i]))
+                        elif tlist.columns[columnName[i]]['ctype'] == float:
+                            values[i] = float(values[i])
                     except:
-                        raise ValueError(_("Value '%(value)s' needs to be entered as %(type)s.") % 
-                                         {'value' : str(values[i]),
-                                          'type' : tlist.columns[columnName[i]]['type']})
+                        raise ValueError(_("Value '%(value)s' needs to be entered as %(type)s.") %
+                                         {'value': values[i],
+                                          'type': tlist.columns[columnName[i]]['type']})
                     columnsString += '%s,' % columnName[i]
                     
                     if tlist.columns[columnName[i]]['ctype'] == str:

+ 4 - 2
gui/wxpython/dbmgr/dialogs.py

@@ -242,7 +242,7 @@ class DisplayAttributesDialog(wx.Dialog):
                             if ctype != str:
                                 updatedValues.append(str(newvalue))
                             else:
-                                updatedValues.append("'" + str(newvalue) + "'")
+                                updatedValues.append("'" + newvalue + "'")
                         columns[name]['values'][idx] = newvalue
 
                 if self.action != "add" and len(updatedValues) == 0:
@@ -265,7 +265,7 @@ class DisplayAttributesDialog(wx.Dialog):
                 if self.action == "add":
                     sqlString += ") VALUES (%s," % cat
                     for value in updatedValues:
-                        sqlString += str(value) + ","
+                        sqlString += value + ","
                     sqlString = sqlString[:-1] # remove last comma
                     sqlString += ")"
                 else:
@@ -327,6 +327,8 @@ class DisplayAttributesDialog(wx.Dialog):
                 continue
             if enc:
                 sql = sql.encode(enc)
+            else:
+                sql = sql.encode('utf-8')
             
             driver, database = self.mapDBInfo.GetDbSettings(layer)
             Debug.msg(1, "SQL: %s" % sql)

+ 0 - 1
gui/wxpython/dbmgr/vinfo.py

@@ -147,7 +147,6 @@ class VectorDBInfo(VectorDBInfoBase):
             sql = "SELECT %s FROM %s WHERE %s" % (cols, table, where)
         
         ret = RunCommand('db.select',
-                         parent = self,
                          read = True,
                          quiet = True,
                          flags = 'v',