Author: luke
Date: 2007-04-17 08:21:50 -0600 (Tue, 17 Apr 2007)
New Revision: 2547
Modified:
SQLObject/branches/cache-deps-on-views/sqlobject/materialized/materialized.py
SQLObject/branches/cache-deps-on-views/sqlobject/materialized/tests/test_materialized.py
Log:
checkpoint
Modified: SQLObject/branches/cache-deps-on-views/sqlobject/materialized/materialized.py
===================================================================
--- SQLObject/branches/cache-deps-on-views/sqlobject/materialized/materialized.py 2007-04-17 14:21:13 UTC (rev 2546)
+++ SQLObject/branches/cache-deps-on-views/sqlobject/materialized/materialized.py 2007-04-17 14:21:50 UTC (rev 2547)
@@ -5,7 +5,16 @@
class MaterializedSQLObject(SQLObject):
class sqlmeta(_sqlmeta):
- pass
+ cachedIn = None
+
+ def setClass(cls, soClass):
+ super(cls, sqlmeta).setClass(soClass)
+
+ if cls.cachedIn is None:
+ cls.cachedIn = cls.table + '_cache'
+ cls.cacheClass = type(cls.soClass.__name__+'Cache', (SQLObject,))
+
+ setClass = classmethod(setClass)
def _addColumn(cls, connection, column_name, column_definition, changeSchema, post_funcs):
def f(cls, col):
@@ -47,4 +56,14 @@
def decorate(func):
return MaterializedAttr(func, colType, name=name)
return decorate
-
\ No newline at end of file
+
+
+
+def _processCacheClass(new_class_name, bases, new_attrs, post_funcs, early_funcs):
+ def f(cls):
+ for name, value in new_attrs.items():
+ if isinstance(value, MaterializedAttr):
+ cls.sqlmeta.
+ post_funcs.append(f)
+
+listen(_processCacheClass, MaterializedSQLObject, ClassCreateSignal)
\ No newline at end of file
Modified: SQLObject/branches/cache-deps-on-views/sqlobject/materialized/tests/test_materialized.py
===================================================================
--- SQLObject/branches/cache-deps-on-views/sqlobject/materialized/tests/test_materialized.py 2007-04-17 14:21:13 UTC (rev 2546)
+++ SQLObject/branches/cache-deps-on-views/sqlobject/materialized/tests/test_materialized.py 2007-04-17 14:21:50 UTC (rev 2547)
@@ -23,6 +23,9 @@
return self.twos.sum('length')
class MaterializedTwo(MaterializedSQLObject):
+ class sqlmeta:
+ cachedIn = 'cache_materialized_two'
+
detail = StringCol()
length = IntCol()
one = ForeignKey('MaterializedOne')
@@ -72,4 +75,12 @@
assert dep.instancesToProcess(ones[0], ['name']) == {
('MaterializedTwo', '_get_name'): [twos[0], twos[1]],
('MaterializedTwo', '_get_name2'): [twos[0], twos[1]],
- }
\ No newline at end of file
+ }
+
+def testCacheObject():
+ assert MaterializedOne.sqlmeta.cacheClass.sqlmeta.table == 'materialized_one_cache'
+ # Overridden by MaterializedTow.sqlmeta.cachedIn
+ assert MaterializedTwo.sqlmeta.cacheClass.sqlmeta.table == 'cache_materialized_two'
+
+def testCacheObject():
+ assert ones[0]._SO_cacheObject is None
\ No newline at end of file
|