From 8696a01eda7fbdc2e4b8342a1d409354cc451989 Mon Sep 17 00:00:00 2001 From: mdipierro Date: Sun, 17 Nov 2013 13:36:35 -0600 Subject: [PATCH] some GAE optimization, thanks Quint --- VERSION | 2 +- gluon/dal.py | 20 +++++++++++--------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/VERSION b/VERSION index 59dfe220..18442620 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.7.4-stable+timestamp.2013.11.17.12.02.33 +Version 2.7.4-stable+timestamp.2013.11.17.13.35.32 diff --git a/gluon/dal.py b/gluon/dal.py index 79462425..a9e4a832 100644 --- a/gluon/dal.py +++ b/gluon/dal.py @@ -4979,16 +4979,18 @@ class GoogleDatastoreAdapter(NoSQLAdapter): def truncate(self,table,mode): self.db(self.db._adapter.id_query(table)).delete() + GAE_FILTER_OPTIONS = { + '=': lambda q, t, p, v: q.filter(getattr(t,p) == v), + '>': lambda q, t, p, v: q.filter(getattr(t,p) > v), + '<': lambda q, t, p, v: q.filter(getattr(t,p) < v), + '<=': lambda q, t, p, v: q.filter(getattr(t,p) <= v), + '>=': lambda q, t, p, v: q.filter(getattr(t,p) >= v), + '!=': lambda q, t, p, v: q.filter(getattr(t,p) != v), + 'in': lambda q, t, p, v: q.filter(getattr(t,p).IN(v)), + } + def filter(self, query, tableobj, prop, op, value): - return { - '=': query.filter(getattr(tableobj, prop) == value), - '>': query.filter(getattr(tableobj, prop) > value), - '<': query.filter(getattr(tableobj, prop) < value), - '<=': query.filter(getattr(tableobj, prop) <= value), - '>=': query.filter(getattr(tableobj, prop) >= value), - '!=': query.filter(getattr(tableobj, prop) != value), - 'in': query.filter(getattr(tableobj, prop).IN(value)), - }[op] + return self.GAE_FILTER_OPTIONS[op](query, tableobj, prop, value) def select_raw(self,query,fields=None,attributes=None): db = self.db