faster lazytables check
This commit is contained in:
@@ -1 +1 @@
|
|||||||
Version 2.00.1 (2012-08-28 15:36:00) rc4
|
Version 2.00.1 (2012-08-28 16:52:25) rc4
|
||||||
|
|||||||
+11
-9
@@ -184,6 +184,8 @@ SELECT_ARGS = set(
|
|||||||
('orderby', 'groupby', 'limitby','required', 'cache', 'left',
|
('orderby', 'groupby', 'limitby','required', 'cache', 'left',
|
||||||
'distinct', 'having', 'join','for_update', 'processor','cacheable'))
|
'distinct', 'having', 'join','for_update', 'processor','cacheable'))
|
||||||
|
|
||||||
|
ogetattr = object.__getattribute__
|
||||||
|
osetattr = object.__setattr__
|
||||||
|
|
||||||
###################################################################################
|
###################################################################################
|
||||||
# following checks allow the use of dal without web2py, as a standalone module
|
# following checks allow the use of dal without web2py, as a standalone module
|
||||||
@@ -6325,10 +6327,10 @@ class Row(object):
|
|||||||
return self._extra[key]
|
return self._extra[key]
|
||||||
elif m:
|
elif m:
|
||||||
try:
|
try:
|
||||||
return object.__getattribute__(self, m.group(1))[m.group(2)]
|
return ogetattr(self, m.group(1))[m.group(2)]
|
||||||
except (KeyError,AttributeError,TypeError):
|
except (KeyError,AttributeError,TypeError):
|
||||||
key = m.group(2)
|
key = m.group(2)
|
||||||
return object.__getattribute__(self, key)
|
return ogetattr(self, key)
|
||||||
|
|
||||||
def __setitem__(self, key, value):
|
def __setitem__(self, key, value):
|
||||||
setattr(self, str(key), value)
|
setattr(self, str(key), value)
|
||||||
@@ -7042,19 +7044,19 @@ def index():
|
|||||||
return self.__getattr__(str(key))
|
return self.__getattr__(str(key))
|
||||||
|
|
||||||
def __getattr__(self, key):
|
def __getattr__(self, key):
|
||||||
if not key is '_LAZY_TABLES' and key in self._LAZY_TABLES:
|
if ogetattr(self,'_lazy_tables') and not key in ogetattr(self,'_LAZY_TABLES'):
|
||||||
tablename, fields, args = self._LAZY_TABLES.pop(key)
|
tablename, fields, args = self._LAZY_TABLES.pop(key)
|
||||||
return self.lazy_define_table(tablename,*fields,**args)
|
return self.lazy_define_table(tablename,*fields,**args)
|
||||||
return object.__getattribute__(self, key)
|
return ogetattr(self, key)
|
||||||
|
|
||||||
def __setitem__(self, key, value):
|
def __setitem__(self, key, value):
|
||||||
object.__setattr__(self, str(key), value)
|
osetattr(self, str(key), value)
|
||||||
|
|
||||||
def __setattr__(self, key, value):
|
def __setattr__(self, key, value):
|
||||||
if key[:1]!='_' and key in self:
|
if key[:1]!='_' and key in self:
|
||||||
raise SyntaxError, \
|
raise SyntaxError, \
|
||||||
'Object %s exists and cannot be redefined' % key
|
'Object %s exists and cannot be redefined' % key
|
||||||
object.__setattr__(self,key,value)
|
osetattr(self,key,value)
|
||||||
|
|
||||||
__delitem__ = object.__delattr__
|
__delitem__ = object.__delattr__
|
||||||
|
|
||||||
@@ -7494,7 +7496,7 @@ class Table(object):
|
|||||||
elif str(key).isdigit() or 'google' in drivers and isinstance(key, Key):
|
elif str(key).isdigit() or 'google' in drivers and isinstance(key, Key):
|
||||||
return self._db(self._id == key).select(limitby=(0,1)).first()
|
return self._db(self._id == key).select(limitby=(0,1)).first()
|
||||||
elif key:
|
elif key:
|
||||||
return object.__getattribute__(self, str(key))
|
return ogetattr(self, str(key))
|
||||||
|
|
||||||
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)
|
||||||
@@ -7543,14 +7545,14 @@ class Table(object):
|
|||||||
if isinstance(key, dict):
|
if isinstance(key, dict):
|
||||||
raise SyntaxError,\
|
raise SyntaxError,\
|
||||||
'value must be a dictionary: %s' % value
|
'value must be a dictionary: %s' % value
|
||||||
object.__setattr__(self, str(key), value)
|
osetattr(self, str(key), value)
|
||||||
|
|
||||||
__getattr__ = __getitem__
|
__getattr__ = __getitem__
|
||||||
|
|
||||||
def __setattr__(self, key, value):
|
def __setattr__(self, key, value):
|
||||||
if key[:1]!='_' and key in self:
|
if key[:1]!='_' and key in self:
|
||||||
raise SyntaxError, 'Object exists and cannot be redefined: %s' % key
|
raise SyntaxError, 'Object exists and cannot be redefined: %s' % key
|
||||||
object.__setattr__(self,key,value)
|
osetattr(self,key,value)
|
||||||
|
|
||||||
def __delitem__(self, key):
|
def __delitem__(self, key):
|
||||||
if isinstance(key, dict):
|
if isinstance(key, dict):
|
||||||
|
|||||||
Reference in New Issue
Block a user