From d3ecb78ef9e6c76daad8abf2f1df7d096dfc2be0 Mon Sep 17 00:00:00 2001 From: mdipierro Date: Sat, 25 Aug 2012 18:42:27 -0500 Subject: [PATCH 1/4] yet better storage, thanks Michele --- VERSION | 2 +- gluon/storage.py | 17 +++++++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/VERSION b/VERSION index 012b7f9c..74853a61 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.00.0 (2012-08-25 16:19:46) dev +Version 2.00.0 (2012-08-25 18:42:23) dev diff --git a/gluon/storage.py b/gluon/storage.py index 50c2b9f8..74611c6d 100644 --- a/gluon/storage.py +++ b/gluon/storage.py @@ -38,10 +38,15 @@ class Storage(dict): >>> print o.a None """ + __slots__=() + __setattr__ = dict.__setitem__ __delattr__ = dict.__delitem__ __getitem__ = dict.get __getattr__ = dict.get + __repr__ = lambda self: '' % dict.__repr__(self) + __getstate__ = dict + __setstate__ = dict.update # def __getattr__(self, key): # return dict.get(self, key, None) # def __setattr__(self, key, value): @@ -50,12 +55,12 @@ class Storage(dict): # return dict.get(self, key, None) # def __delattr__(self, key): # del self[key] - def __repr__(self): - return '' % dict.__repr__(self) - def __getstate__(self): - return dict(self) - def __setstate__(self,values): - self.update(values) + # def __repr__(self): + # return '' % dict.__repr__(self) + # def __getstate__(self): + # return dict(self) + # def __setstate__(self,values): + # self.update(values) def getlist(self,key): """ From f405c2259106e16a954f66250a39bf92c32f701e Mon Sep 17 00:00:00 2001 From: mdipierro Date: Sat, 25 Aug 2012 23:06:28 -0500 Subject: [PATCH 2/4] minor imprvements in DAL repr --- VERSION | 2 +- gluon/dal.py | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/VERSION b/VERSION index 74853a61..d66f8288 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.00.0 (2012-08-25 18:42:23) dev +Version 2.00.0 (2012-08-25 23:06:24) dev diff --git a/gluon/dal.py b/gluon/dal.py index 97088915..f3a9a8d8 100644 --- a/gluon/dal.py +++ b/gluon/dal.py @@ -6315,10 +6315,10 @@ class Row(dict): def __str__(self): ### this could be made smarter - return '' + return '' % dict.__repr__(self) def __repr__(self): - return '' + return '' % dict.__repr__(self) def __int__(self): return dict.__getitem__(self,'id') @@ -7012,7 +7012,7 @@ def index(): dict.__setitem__(self,key,value) def __repr__(self): - return '' + return '' % self._uri def smart_query(self,fields,text): return Set(self, smart_query(fields,text)) @@ -7519,7 +7519,7 @@ class Table(dict): yield self[fieldname] def __repr__(self): - return '' + return '
' % dict.__repr__(self) def __str__(self): if self.get('_ot', None): From 25c4ee3704202c4262fbc63628d753d158045070 Mon Sep 17 00:00:00 2001 From: mdipierro Date: Sat, 25 Aug 2012 23:54:23 -0500 Subject: [PATCH 3/4] db().select().xml(strict=True) --- VERSION | 2 +- gluon/dal.py | 31 ++++++++++++++++++++++++++++--- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/VERSION b/VERSION index d66f8288..d38c6b08 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.00.0 (2012-08-25 23:06:24) dev +Version 2.00.0 (2012-08-25 23:54:19) dev diff --git a/gluon/dal.py b/gluon/dal.py index f3a9a8d8..f11f22d7 100644 --- a/gluon/dal.py +++ b/gluon/dal.py @@ -7519,7 +7519,7 @@ class Table(dict): yield self[fieldname] def __repr__(self): - return '
' % dict.__repr__(self) + return '
' % (self._tablename,','.join(self.fields())) def __str__(self): if self.get('_ot', None): @@ -8381,6 +8381,9 @@ class Query(object): self.second = second self.ignore_common_filters = ignore_common_filters + def __repr__(self): + return '' % BaseAdapter.expand(self.db._adapter,self) + def __str__(self): return self.db._adapter.expand(self) @@ -8437,6 +8440,9 @@ class Set(object): query.ignore_common_filters = ignore_common_filters self.query = query + def __repr__(self): + return '' % BaseAdapter.expand(self.db._adapter,self.query) + def __call__(self, query, ignore_common_filters=False): if isinstance(query,Table): query = query._id>0 @@ -8617,6 +8623,9 @@ class Rows(object): self.compact = compact self.response = rawrows + def __repr__(self): + return '' % len(self.records) + def setvirtualfields(self,**keyed_virtualfields): """ db.define_table('x',Field('number','integer')) @@ -8877,11 +8886,27 @@ class Rows(object): row.append(none_exception(value)) writer.writerow(row) - def xml(self): + def xml(self,strict=False): """ serializes the table using sqlhtml.SQLTABLE (if present) """ - + if strict: + ncols = len(self.colnames) + def f(row,field='row',indent=' '): + if isinstance(row,dict): + spc = indent+' \n' + items = [f(row[x],x,indent+' ') for x in row] + return '%s<%s>\n%s\n%s' % ( + indent, + field, + spc.join(item for item in items if item), + indent, + field) + elif not callable(row): + return '%s<%s>%s' % (indent,field,row,field) + else: + return None + return '\n%s\n' % '\n'.join(f(row) for row in self) import sqlhtml return sqlhtml.SQLTABLE(self).xml() From 8d1b892406a8af42ef9dd284e2f11a3dbf2e9601 Mon Sep 17 00:00:00 2001 From: mdipierro Date: Sun, 26 Aug 2012 00:00:15 -0500 Subject: [PATCH 4/4] xml(row_name,rows_name) --- VERSION | 2 +- gluon/dal.py | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/VERSION b/VERSION index d38c6b08..3fd1bc7d 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.00.0 (2012-08-25 23:54:19) dev +Version 2.00.0 (2012-08-26 00:00:11) dev diff --git a/gluon/dal.py b/gluon/dal.py index f11f22d7..f2e7e368 100644 --- a/gluon/dal.py +++ b/gluon/dal.py @@ -8886,13 +8886,13 @@ class Rows(object): row.append(none_exception(value)) writer.writerow(row) - def xml(self,strict=False): + def xml(self,strict=False,row_name='row',rows_name='rows'): """ serializes the table using sqlhtml.SQLTABLE (if present) """ if strict: ncols = len(self.colnames) - def f(row,field='row',indent=' '): + def f(row,field,indent=' '): if isinstance(row,dict): spc = indent+' \n' items = [f(row[x],x,indent+' ') for x in row] @@ -8906,7 +8906,10 @@ class Rows(object): return '%s<%s>%s' % (indent,field,row,field) else: return None - return '\n%s\n' % '\n'.join(f(row) for row in self) + return '<%s>\n%s\n' % ( + rows_name, + '\n'.join(f(row,row_name) for row in self), + rows_name) import sqlhtml return sqlhtml.SQLTABLE(self).xml()