Row code speedups
This commit is contained in:
67
gluon/dal.py
67
gluon/dal.py
@@ -6857,23 +6857,26 @@ class Row(object):
|
||||
this is only used to store a Row
|
||||
"""
|
||||
|
||||
def __init__(self,*args,**kwargs):
|
||||
self.__dict__.update(*args,**kwargs)
|
||||
__init__ = lambda self,*args,**kwargs: self.__dict__.update(*args,**kwargs)
|
||||
|
||||
def __getitem__(self, key):
|
||||
key=str(key)
|
||||
m = REGEX_TABLE_DOT_FIELD.match(key)
|
||||
if key in self.get('_extra',{}):
|
||||
return self._extra[key]
|
||||
elif m:
|
||||
def __getitem__(self, k):
|
||||
key=str(k)
|
||||
_extra = getattr(self, '_extra', None)
|
||||
if _extra:
|
||||
return _extra.get(key)
|
||||
if v:
|
||||
return v
|
||||
#m = REGEX_TABLE_DOT_FIELD.match(key)
|
||||
idot = key.find('.')
|
||||
if idot != -1:
|
||||
m = (key[:idot],key[idot+1:])
|
||||
try:
|
||||
return ogetattr(self, m.group(1))[m.group(2)]
|
||||
return ogetattr(self, m[0])[m[1]]
|
||||
except (KeyError,AttributeError,TypeError):
|
||||
key = m.group(2)
|
||||
key = m[1]
|
||||
return ogetattr(self, key)
|
||||
|
||||
def __setitem__(self, key, value):
|
||||
setattr(self, str(key), value)
|
||||
__setitem__ = lambda self, key, value: setattr(self, str(key), value)
|
||||
|
||||
__delitem__ = object.__delattr__
|
||||
|
||||
@@ -6881,47 +6884,31 @@ class Row(object):
|
||||
|
||||
__call__ = __getitem__
|
||||
|
||||
def get(self,key,default=None):
|
||||
return self.__dict__.get(key,default)
|
||||
get = lambda self, key, default: self.__dict__.get(key,default)
|
||||
|
||||
def __contains__(self,key):
|
||||
return key in self.__dict__
|
||||
|
||||
has_key = __contains__
|
||||
has_key = __contains__ = lambda self, key: key in self.__dict__
|
||||
|
||||
def __nonzero__(self):
|
||||
return len(self.__dict__)>0
|
||||
__nonzero__ = lambda self: len(self.__dict__)>0
|
||||
|
||||
def update(self, *args, **kwargs):
|
||||
self.__dict__.update(*args, **kwargs)
|
||||
update = lambda self, *args, **kwargs: self.__dict__.update(*args, **kwargs)
|
||||
|
||||
def keys(self):
|
||||
return self.__dict__.keys()
|
||||
keys = lambda self: self.__dict__.keys()
|
||||
|
||||
def items(self):
|
||||
return self.__dict__.items()
|
||||
items = lambda self: self.__dict__.items()
|
||||
|
||||
def values(self):
|
||||
return self.__dict__.values()
|
||||
values = lambda self: self.__dict__.values()
|
||||
|
||||
def __iter__(self):
|
||||
return self.__dict__.__iter__()
|
||||
__iter__ = lambda self: self.__dict__.__iter__()
|
||||
|
||||
def iteritems(self):
|
||||
return self.__dict__.iteritems()
|
||||
iteritems = lambda self: self.__dict__.iteritems()
|
||||
|
||||
def __str__(self):
|
||||
### this could be made smarter
|
||||
return '<Row %s>' % self.as_dict()
|
||||
__str__ = __repr__ = lambda self: '<Row %s>' % self.as_dict()
|
||||
|
||||
def __repr__(self):
|
||||
return '<Row %s>' % self.as_dict()
|
||||
__int__ = lambda self: object.__getattribute__(self,'id')
|
||||
|
||||
def __int__(self):
|
||||
return object.__getattribute__(self,'id')
|
||||
__long__ = lambda self: long(object.__getattribute__(self,'id'))
|
||||
|
||||
def __long__(self):
|
||||
return long(object.__getattribute__(self,'id'))
|
||||
|
||||
def __eq__(self,other):
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user