From 4079288a51fa62c7c7267e9e7d3f700f5a3eb2bf Mon Sep 17 00:00:00 2001 From: mdipierro Date: Sat, 25 Aug 2012 16:19:50 -0500 Subject: [PATCH] major optimization in Storage, Table, Row (2x), thanks Michele --- VERSION | 2 +- gluon/dal.py | 20 ++++++++++---------- gluon/storage.py | 20 ++++++++++++-------- 3 files changed, 23 insertions(+), 19 deletions(-) diff --git a/VERSION b/VERSION index 7fc9260a..012b7f9c 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.00.0 (2012-08-25 15:49:58) dev +Version 2.00.0 (2012-08-25 16:19:46) dev diff --git a/gluon/dal.py b/gluon/dal.py index 7c63d6d9..97088915 100644 --- a/gluon/dal.py +++ b/gluon/dal.py @@ -6289,11 +6289,9 @@ class Row(dict): this is only used to store a Row """ - def __getattr__(self, key): - return self[key] - - def __setattr__(self, key, value): - self[key] = value + __setattr__ = dict.__setitem__ + __getattr__ = dict.__getitem__ + __delattr__ = dict.__delitem__ def __getitem__(self, key): key=str(key) @@ -6307,8 +6305,10 @@ class Row(dict): key = m.group(2) return dict.__getitem__(self, key) - def __call__(self,key): - return self.__getitem__(key) + __call__ = __getitem__ + + #def __call__(self,key): + # return self.__getitem__(key) def __setitem__(self, key, value): dict.__setitem__(self, str(key), value) @@ -7498,15 +7498,15 @@ class Table(dict): 'value must be a dictionary: %s' % value dict.__setitem__(self, str(key), value) - def __getattr__(self, key): - return self[key] + __getattr__ = __getitem__ def __delitem__(self, key): if isinstance(key, dict): query = self._build_query(key) if not self._db(query).delete(): raise SyntaxError, 'No such record: %s' % key - elif not str(key).isdigit() or not self._db(self._id == key).delete(): + elif not str(key).isdigit() or \ + not self._db(self._id == key).delete(): raise SyntaxError, 'No such record: %s' % key def __setattr__(self, key, value): diff --git a/gluon/storage.py b/gluon/storage.py index 7ed1ed82..50c2b9f8 100644 --- a/gluon/storage.py +++ b/gluon/storage.py @@ -38,14 +38,18 @@ class Storage(dict): >>> print o.a None """ - def __getattr__(self, key): - return dict.get(self, key, None) - def __setattr__(self, key, value): - self[key] = value - def __delattr__(self, key): - del self[key] - def __getitem__(self, key): - return dict.get(self, key, None) + __setattr__ = dict.__setitem__ + __delattr__ = dict.__delitem__ + __getitem__ = dict.get + __getattr__ = dict.get + # def __getattr__(self, key): + # return dict.get(self, key, None) + # def __setattr__(self, key, value): + # self[key] = value + # def __getitem__(self, key): + # return dict.get(self, key, None) + # def __delattr__(self, key): + # del self[key] def __repr__(self): return '' % dict.__repr__(self) def __getstate__(self):