db.thing(name='Cohen',_orderby=db.thing.name), thanks Yair
This commit is contained in:
@@ -1 +1 @@
|
|||||||
Version 2.3.0 (2012-12-04 18:29:48) rc1
|
Version 2.3.0 (2012-12-05 09:00:19) rc1
|
||||||
|
|||||||
+7
-3
@@ -7740,22 +7740,26 @@ class Table(object):
|
|||||||
def __call__(self, key=DEFAULT, **kwargs):
|
def __call__(self, key=DEFAULT, **kwargs):
|
||||||
for_update = kwargs.get('_for_update',False)
|
for_update = kwargs.get('_for_update',False)
|
||||||
if '_for_update' in kwargs: del kwargs['_for_update']
|
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 not key is DEFAULT:
|
||||||
if isinstance(key, Query):
|
if isinstance(key, Query):
|
||||||
record = self._db(key).select(
|
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():
|
elif not str(key).isdigit():
|
||||||
record = None
|
record = None
|
||||||
else:
|
else:
|
||||||
record = self._db(self._id == key).select(
|
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:
|
if record:
|
||||||
for k,v in kwargs.iteritems():
|
for k,v in kwargs.iteritems():
|
||||||
if record[k]!=v: return None
|
if record[k]!=v: return None
|
||||||
return record
|
return record
|
||||||
elif kwargs:
|
elif kwargs:
|
||||||
query = reduce(lambda a,b:a&b,[self[k]==v for k,v in kwargs.iteritems()])
|
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:
|
else:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user