|
@@ -250,13 +250,15 @@ class VirtualAttributeList(wx.ListCtrl,
|
|
|
j = 0
|
|
|
|
|
|
for value in record.split('|'):
|
|
|
- # casting ...
|
|
|
if self.columns[columns[j]]['ctype'] != type(''):
|
|
|
try:
|
|
|
- self.itemDataMap[i].append(self.columns[columns[j]]['ctype'] (value))
|
|
|
+ ### casting disabled (2009/03)
|
|
|
+ ### self.itemDataMap[i].append(self.columns[columns[j]]['ctype'](value))
|
|
|
+ self.itemDataMap[i].append(value)
|
|
|
except ValueError:
|
|
|
- self.itemDataMap[i].append('')
|
|
|
+ self.itemDataMap[i].append(_('Unknown value'))
|
|
|
else:
|
|
|
+ # encode string values
|
|
|
try:
|
|
|
self.itemDataMap[i].append(unicodeValue(value))
|
|
|
except UnicodeDecodeError:
|
|
@@ -270,7 +272,7 @@ class VirtualAttributeList(wx.ListCtrl,
|
|
|
cat = -1
|
|
|
wx.MessageBox(parent=self,
|
|
|
message=_("Error loading attribute data. "
|
|
|
- "Record number: %(rec)d. Unable to cast value '%(val)s' in "
|
|
|
+ "Record number: %(rec)d. Unable to convert value '%(val)s' in "
|
|
|
"key column (%(key)s) to integer.\n\n"
|
|
|
"Details: %(detail)s") % \
|
|
|
{ 'rec' : i + 1, 'val' : value,
|
|
@@ -1256,9 +1258,15 @@ class AttributeManager(wx.Frame):
|
|
|
continue
|
|
|
|
|
|
try:
|
|
|
- values[i] = list.columns[columnName[i]]['ctype'] (values[i])
|
|
|
+ if list.columns[columnName[i]]['ctype'] == int:
|
|
|
+ # values[i] is stored as text.
|
|
|
+ value = float(values[i])
|
|
|
+ else:
|
|
|
+ value = values[i]
|
|
|
+ values[i] = list.columns[columnName[i]]['ctype'] (value)
|
|
|
+
|
|
|
except:
|
|
|
- raise ValueError(_("Casting value '%(value)s' to %(type)s failed.") %
|
|
|
+ raise ValueError(_("Value '%(value)s' needs to be entered as %(type)s.") %
|
|
|
{'value' : str(values[i]),
|
|
|
'type' : list.columns[columnName[i]]['type']})
|
|
|
columnsString += '%s,' % columnName[i]
|
|
@@ -1356,12 +1364,16 @@ class AttributeManager(wx.Frame):
|
|
|
else:
|
|
|
idx = i
|
|
|
if list.columns[columnName[i]]['ctype'] != type(''):
|
|
|
+ if list.columns[columnName[i]]['ctype'] == int:
|
|
|
+ value = float(values[i])
|
|
|
+ else:
|
|
|
+ value = values[i]
|
|
|
list.itemDataMap[item][idx] = \
|
|
|
- list.columns[columnName[i]]['ctype'] (values[i])
|
|
|
+ list.columns[columnName[i]]['ctype'] (value)
|
|
|
else:
|
|
|
list.itemDataMap[item][idx] = values[i]
|
|
|
except:
|
|
|
- raise ValueError(_("Casting value '%(value)s' to %(type)s failed.") % \
|
|
|
+ raise ValueError(_("Value '%(value)s' needs to be entered as %(type)s.") % \
|
|
|
{'value' : str(values[i]),
|
|
|
'type' : list.columns[columnName[i]]['type']})
|
|
|
|
|
@@ -1371,6 +1383,7 @@ class AttributeManager(wx.Frame):
|
|
|
updateString += "%s=%s," % (columnName[i], values[i])
|
|
|
else: # NULL
|
|
|
updateString += "%s=NULL," % (columnName[i])
|
|
|
+
|
|
|
except ValueError, err:
|
|
|
wx.MessageBox(parent=self,
|
|
|
message="%s%s%s" % (_("Unable to update existing record."),
|
|
@@ -1383,7 +1396,9 @@ class AttributeManager(wx.Frame):
|
|
|
(table, updateString.strip(','),
|
|
|
keyColumn, cat))
|
|
|
self.ApplyCommands()
|
|
|
-
|
|
|
+
|
|
|
+ list.Update(self.mapDBInfo)
|
|
|
+
|
|
|
def OnDataReload(self, event):
|
|
|
"""Reload list of records"""
|
|
|
self.OnApplySqlStatement(None)
|