[POS-commit] r6352 - stoqlib/trunk/external/sqlobject

Johan Dahlin jdahlin at async.com.br
Mon Apr 9 13:00:14 BRT 2007


Author: jdahlin
Date: Mon Apr  9 13:00:14 2007
New Revision: 6352

Modified:
   stoqlib/trunk/external/sqlobject/viewable.py

Log:
#3198: Ao alternar entre os aplicativos um erro é gerado. Make sure that sqlmeta in viewable subclasses do not share any state.

Modified: stoqlib/trunk/external/sqlobject/viewable.py
==============================================================================
--- stoqlib/trunk/external/sqlobject/viewable.py	(original)
+++ stoqlib/trunk/external/sqlobject/viewable.py	Mon Apr  9 13:00:14 2007
@@ -13,10 +13,10 @@
 class ViewableMeta(object):
     table = None
     defaultOrder = None
-    columnList = []
-    columnNames = []
+    columnList = None
+    columnNames = None
     idName = 'id'
-    columns = {}
+    columns = None
     parentClass = None
 
 
@@ -47,6 +47,12 @@
     clause = None
 
     def __classinit__(cls, new_attrs):
+        if not cls.__bases__ == (object,):
+            cls.sqlmeta = type('sqlmeta', (cls.sqlmeta,), {})
+            cls.sqlmeta.columns = {}
+            cls.sqlmeta.columnList = []
+            cls.sqlmeta.columnNames = []
+
         setup_attributes(cls, new_attrs)
 
         columns = new_attrs['columns']
@@ -55,11 +61,12 @@
 
         cols = columns.copy()
         if not 'id' in cols:
-            raise TypeError("You need a id column in %r" % Viewable)
+            raise TypeError("You need a id column in %r" % cls)
 
         idquery = cols.pop('id')
         cls.sqlmeta.table = idquery.tableName
 
+        assert not cls.sqlmeta.columns
         for colName in sorted(cols):
             cls.addColumn(colName, cols[colName])
 


More information about the POS-commit mailing list