diff --git a/VERSION b/VERSION index d125550e..14ab556c 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 1.99.4 (2012-01-12 14:18:47) stable +Version 1.99.4 (2012-01-12 22:51:51) stable diff --git a/gluon/dal.py b/gluon/dal.py index 09aecb76..b73e8b59 100644 --- a/gluon/dal.py +++ b/gluon/dal.py @@ -1461,7 +1461,7 @@ class BaseAdapter(ConnectionPool): return value else: key = regex_type.match(field_type).group(0) - return getattr(self,'parse_'+key)(value,field_type) + return self.parsemap[key](value,field_type) def parse_reference(self, value, field_type): referee = field_type[10:].strip() @@ -1535,7 +1535,25 @@ class BaseAdapter(ConnectionPool): def parse_double(self, value, field_type): return float(value) + def build_parsemap(self): + self.parsemap = { + 'id':self.parse_id, + 'integer':self.parse_integer, + 'double':self.parse_double, + 'reference':self.parse_reference, + 'boolean':self.parse_boolean, + 'date':self.parse_date, + 'time':self.parse_time, + 'datetime':self.parse_datetime, + 'blob':self.parse_blob, + 'decimal':self.parse_decimal, + 'list:integer':self.parse_list_integers, + 'list:reference':self.parse_list_references, + 'list:string':self.parse_list_strings, + } + def parse(self, rows, fields, colnames, blob_decode=True): + self.build_parsemap() db = self.db virtualtables = [] new_rows = [] @@ -3985,6 +4003,7 @@ class MongoDBAdapter(NoSQLAdapter): return self.parse(rows, fields, mongofields_dict.keys(), False, tablename) def parse(self, rows, fields, colnames, blob_decode=True,tablename=None): + self.build_parsemap() import pymongo.objectid print "in parse" print "colnames=%s" % colnames