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):
|
||||
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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user