From 06f5a32c488bdbd5b177417f0ae01afdc3dc9aae Mon Sep 17 00:00:00 2001 From: mdipierro Date: Wed, 5 Dec 2012 09:01:03 -0600 Subject: [PATCH] db.thing(name='Cohen',_orderby=db.thing.name), thanks Yair --- VERSION | 2 +- gluon/dal.py | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/VERSION b/VERSION index 5a1ea2e8..0d37fbfc 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.3.0 (2012-12-04 18:29:48) rc1 +Version 2.3.0 (2012-12-05 09:00:19) rc1 diff --git a/gluon/dal.py b/gluon/dal.py index ca0493f2..61567253 100644 --- a/gluon/dal.py +++ b/gluon/dal.py @@ -7740,22 +7740,26 @@ class Table(object): def __call__(self, key=DEFAULT, **kwargs): for_update = kwargs.get('_for_update',False) if '_for_update' in kwargs: del kwargs['_for_update'] + + orderby = kwargs.get('_orderby',None) + if '_orderby' in kwargs: del kwargs['_orderby'] + if not key is DEFAULT: if isinstance(key, Query): record = self._db(key).select( - limitby=(0,1),for_update=for_update).first() + limitby=(0,1),for_update=for_update, orderby=orderby).first() elif not str(key).isdigit(): record = None else: record = self._db(self._id == key).select( - limitby=(0,1),for_update=for_update).first() + limitby=(0,1),for_update=for_update, orderby=orderby).first() if record: for k,v in kwargs.iteritems(): if record[k]!=v: return None return record elif kwargs: query = reduce(lambda a,b:a&b,[self[k]==v for k,v in kwargs.iteritems()]) - return self._db(query).select(limitby=(0,1),for_update=for_update).first() + return self._db(query).select(limitby=(0,1),for_update=for_update, orderby=orderby).first() else: return None