diff --git a/VERSION b/VERSION index 89699d8c..c5d8fa43 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.0.9 (2012-09-17 09:12:09) stable +Version 2.0.9 (2012-09-17 09:36:10) stable diff --git a/gluon/dal.py b/gluon/dal.py index 95683268..5de7d881 100644 --- a/gluon/dal.py +++ b/gluon/dal.py @@ -1692,9 +1692,9 @@ class BaseAdapter(ConnectionPool): elif not isinstance(obj, (list, tuple)): obj = [obj] if field_is_type('list:string'): - obj = [str(item) for item in obj] + obj = map(str,obj) else: - obj = [int(item) for item in obj] + obj = map(int,obj) if isinstance(obj, (list, tuple)): obj = bar_encode(obj) if obj is None: @@ -2654,9 +2654,9 @@ class NewPostgreSQLAdapter(PostgreSQLAdapter): elif not isinstance(obj, (list, tuple)): obj = [obj] if field_is_type('list:string'): - obj = [str(item) for item in obj] + obj = map(str,obj) else: - obj = [int(item) for item in obj] + obj = map(int,obj) return 'ARRAY[%s]' % ','.join(repr(item) for item in obj) return BaseAdapter.represent(self, obj, fieldtype) @@ -5701,7 +5701,7 @@ class IMAPAdapter(NoSQLAdapter): year = int(date_list[2]) month = months.index(date_list[1]) day = int(date_list[0]) - hms = [int(value) for value in date_list[3].split(":")] + hms = map(int, date_list[3].split(":")) return datetime.datetime(year, month, day, hms[0], hms[1], hms[2]) + add elif isinstance(date, (datetime.datetime, datetime.date)): @@ -6384,11 +6384,9 @@ def sqlhtml_validators(field): refs = None db, id = r._db, r._id if isinstance(db._adapter, GoogleDatastoreAdapter): - for i in xrange(0, len(ids), 30): - if not refs: - refs = db(id.belongs(ids[i:i+30])).select(id) - else: - refs = refs&db(id.belongs(ids[i:i+30])).select(id) + def count(values): return db(id.belongs(values)).select(id) + rx = range(0, len(ids), 30) + refs = reduce(lambda a,b:a&b, [count(ids[i:i+30]) for i in rx]) else: refs = db(id.belongs(ids)).select(id) return (refs and ', '.join(str(f(r,x.id)) for x in refs) or '') diff --git a/gluon/validators.py b/gluon/validators.py index 6b467297..4098d73f 100644 --- a/gluon/validators.py +++ b/gluon/validators.py @@ -488,6 +488,8 @@ class IS_IN_DB(Validator): table = self.dbset.db[self.ktable] field = table[self.kfield] if self.multiple: + if self._and: + raise NotImplementedError if isinstance(value,list): values=value elif value: @@ -497,8 +499,20 @@ class IS_IN_DB(Validator): if isinstance(self.multiple,(tuple,list)) and \ not self.multiple[0]<=len(values)