From a8a4fee6353060452666671c47fd75776b25ba24 Mon Sep 17 00:00:00 2001 From: Massimo Di Pierro Date: Thu, 1 Mar 2012 11:02:23 -0600 Subject: [PATCH] IS_IN_DB ignoring common filters, thanks tsvim --- VERSION | 2 +- gluon/validators.py | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/VERSION b/VERSION index b5fcf3c1..d501bb92 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 1.99.4 (2012-03-01 09:12:01) stable +Version 1.99.4 (2012-03-01 11:01:59) stable diff --git a/gluon/validators.py b/gluon/validators.py index c7281f24..206721a3 100644 --- a/gluon/validators.py +++ b/gluon/validators.py @@ -440,19 +440,21 @@ class IS_IN_DB(Validator): self._and.record_id = id def build_set(self): + table = self.dbset.db[self.ktable] if self.fields == 'all': - fields = [f for f in self.dbset.db[self.ktable]] + fields = [f for f in table] else: - fields = [self.dbset.db[self.ktable][k] for k in self.fields] + fields = [table[k] for k in self.fields] if self.dbset.db._dbname != 'gae': orderby = self.orderby or reduce(lambda a,b:a|b,fields) groupby = self.groupby dd = dict(orderby=orderby, groupby=groupby, cache=self.cache) - records = self.dbset.select(*fields, **dd) + records = self.dbset(table).select(*fields, **dd) else: - orderby = self.orderby or reduce(lambda a,b:a|b,(f for f in fields if not f.name=='id')) + orderby = self.orderby or \ + reduce(lambda a,b:a|b,(f for f in fields if not f.name=='id')) dd = dict(orderby=orderby, cache=self.cache) - records = self.dbset.select(self.dbset.db[self.ktable].ALL, **dd) + records = self.dbset(table).select(table.ALL, **dd) self.theset = [str(r[self.kfield]) for r in records] if isinstance(self.label,str): self.labels = [self.label % dict(r) for r in records]