Thread: [SQL-CVS] r2547 - in SQLObject/branches/cache-deps-on-views/sqlobject/materialized: . tests
SQLObject is a Python ORM.
Brought to you by:
ianbicking,
phd
From: <sub...@co...> - 2007-04-17 14:21:53
|
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 |