From 3843406ba91d1e3b6cf86ad580c4e83c294cb9ef Mon Sep 17 00:00:00 2001 From: mdipierro Date: Tue, 21 Aug 2012 15:56:53 -0500 Subject: [PATCH] Table, DAL and Row use self.__dict__=self --- VERSION | 2 +- gluon/dal.py | 24 ++++++++---------------- 2 files changed, 9 insertions(+), 17 deletions(-) diff --git a/VERSION b/VERSION index 15d5dd07..34d6208e 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.00.0 (2012-08-21 14:41:40) dev +Version 2.00.0 (2012-08-21 15:56:50) dev diff --git a/gluon/dal.py b/gluon/dal.py index 4be920b8..a6248424 100644 --- a/gluon/dal.py +++ b/gluon/dal.py @@ -6281,6 +6281,9 @@ class Row(dict): this is only used to store a Row """ + def __init__(self): + self.__dict__ = self + def __getitem__(self, key): key=str(key) m = regex_table_field.match(key) @@ -6299,12 +6302,6 @@ class Row(dict): def __setitem__(self, key, value): dict.__setitem__(self, str(key), value) - def __getattr__(self, key): - return self[key] - - def __setattr__(self, key, value): - self[key] = value - def __str__(self): ### this could be made smarter return '' @@ -6574,6 +6571,7 @@ class DAL(dict): :fake_migrate_all (defaults to False). If sets to True fake migrates ALL tables :attempts (defaults to 5). Number of times to attempt connecting """ + self.__dict__ = self if not decode_credentials: credential_decoder = lambda cred: cred else: @@ -6993,14 +6991,11 @@ def index(): def __setitem__(self, key, value): dict.__setitem__(self, str(key), value) - def __getattr__(self, key): - return self[key] - def __setattr__(self, key, value): if key[:1]!='_' and key in self: raise SyntaxError, \ 'Object %s exists and cannot be redefined' % key - self[key] = value + dict.__setattr__(self,key,value) def __repr__(self): return '' @@ -7202,7 +7197,7 @@ class Table(dict): :raises SyntaxError: when a supplied field is of incorrect type. """ - + self.__dict__ = self self._actual = False # set to True by define_table() self._tablename = tablename self._sequence_name = args.get('sequence_name',None) or \ @@ -7273,7 +7268,7 @@ class Table(dict): tmp = field.uploadfield = '%s_blob' % field.name if isinstance(field.uploadfield,str) and \ not [f for f in fields if f.name==field.uploadfield]: - fields.append(self._db.Field(field.uploadfield,'blob',default='')) + fields.append(Field(field.uploadfield,'blob',default='')) lower_fieldnames = set() reserved = dir(Table) + ['fields'] @@ -7472,13 +7467,10 @@ class Table(dict): elif not str(key).isdigit() or not self._db(self._id == key).delete(): raise SyntaxError, 'No such record: %s' % key - def __getattr__(self, key): - return self[key] - def __setattr__(self, key, value): if key[:1]!='_' and key in self: raise SyntaxError, 'Object exists and cannot be redefined: %s' % key - self[key] = value + dict.__setattr__(self,key,value) def __iter__(self): for fieldname in self.fields: