Index: third_party/twisted_8_1/twisted/enterprise/reflector.py |
diff --git a/third_party/twisted_8_1/twisted/enterprise/reflector.py b/third_party/twisted_8_1/twisted/enterprise/reflector.py |
deleted file mode 100644 |
index cc15a3705c5a478fa555d3709c9dfcebe4e660b8..0000000000000000000000000000000000000000 |
--- a/third_party/twisted_8_1/twisted/enterprise/reflector.py |
+++ /dev/null |
@@ -1,167 +0,0 @@ |
-# -*- test-case-name: twisted.test.test_reflector -*- |
-# Copyright (c) 2001-2007 Twisted Matrix Laboratories. |
-# See LICENSE for details. |
- |
- |
-import weakref, warnings |
- |
-from twisted.enterprise.util import DBError |
- |
-class Reflector: |
- """ |
- DEPRECATED. |
- |
- Base class for enterprise reflectors. This implements row caching. |
- """ |
- populated = 0 |
- |
- def __init__(self, rowClasses): |
- """ |
- Initialize me against a database. |
- |
- @param rowClasses: a list of row class objects that describe the |
- database schema. |
- """ |
- warnings.warn("twisted.enterprise.reflector is deprecated since " |
- "Twisted 8.0", category=DeprecationWarning, stacklevel=2) |
- # does not hold references to cached rows. |
- self.rowCache = weakref.WeakValueDictionary() |
- self.rowClasses = rowClasses |
- self.schema = {} |
- self._populate() |
- |
- def __getstate__(self): |
- d = self.__dict__.copy() |
- del d['rowCache'] |
- return d |
- |
- def __setstate__(self, state): |
- self.__dict__ = state |
- self.rowCache = weakref.WeakValueDictionary() |
- self._populate() |
- |
- def _populate(self): |
- """Implement me to populate schema information for the reflector. |
- """ |
- raise DBError("not implemented") |
- |
- def populateSchemaFor(self, tableInfo): |
- """This is called once for each registered rowClass to add it |
- and its foreign key relationships for that rowClass to the |
- schema.""" |
- |
- self.schema[ tableInfo.rowTableName ] = tableInfo |
- |
- # add the foreign key to the foreign table. |
- for foreignTableName, childColumns, parentColumns, containerMethod, autoLoad in tableInfo.rowForeignKeys: |
- self.schema[foreignTableName].addForeignKey(childColumns, |
- parentColumns, tableInfo.rowClass, |
- containerMethod, autoLoad) |
- |
- def getTableInfo(self, rowObject): |
- """Get a TableInfo record about a particular instance. |
- |
- This record contains various information about the instance's |
- class as registered with this reflector. |
- |
- @param rowObject: a L{RowObject} instance of a class previously |
- registered with me. |
- @raises twisted.enterprise.row.DBError: raised if this class was not |
- previously registered. |
- """ |
- try: |
- return self.schema[rowObject.rowTableName] |
- except KeyError: |
- raise DBError("class %s was not registered with %s" % ( |
- rowObject.__class__, self)) |
- |
- def buildWhereClause(self, relationship, row): |
- """util method used by reflectors. builds a where clause to link a row to another table. |
- """ |
- whereClause = [] |
- for i in range(0,len(relationship.childColumns)): |
- value = getattr(row, relationship.parentColumns[i][0]) |
- whereClause.append( [relationship.childColumns[i][0], EQUAL, value] ) |
- return whereClause |
- |
- def addToParent(self, parentRow, rows, tableName): |
- """util method used by reflectors. adds these rows to the parent row object. |
- If a rowClass does not have a containerMethod, then a list attribute "childRows" |
- will be used. |
- """ |
- parentInfo = self.getTableInfo(parentRow) |
- relationship = parentInfo.getRelationshipFor(tableName) |
- if not relationship: |
- raise DBError("no relationship from %s to %s" % ( parentRow.rowTableName, tableName) ) |
- |
- if not relationship.containerMethod: |
- if hasattr(parentRow, "childRows"): |
- for row in rows: |
- if row not in parentRow.childRows: |
- parentRow.childRows.append(row) |
- else: |
- parentRow.childRows = rows |
- return |
- |
- if not hasattr(parentRow, relationship.containerMethod): |
- raise DBError("parent row (%s) doesnt have container method <%s>!" % (parentRow, relationship.containerMethod)) |
- |
- meth = getattr(parentRow, relationship.containerMethod) |
- for row in rows: |
- meth(row) |
- |
- ####### Row Cache ######## |
- |
- def addToCache(self, rowObject): |
- """NOTE: Should this be recursive?! requires better container knowledge...""" |
- self.rowCache[ rowObject.getKeyTuple() ] = rowObject |
- |
- def findInCache(self, rowClass, kw): |
- keys = [] |
- keys.append(rowClass.rowTableName) |
- for keyName, keyType in rowClass.rowKeyColumns: |
- keys.append( kw[keyName] ) |
- keyTuple = tuple(keys) |
- return self.rowCache.get(keyTuple) |
- |
- def removeFromCache(self, rowObject): |
- """NOTE: should this be recursive!??""" |
- key = rowObject.getKeyTuple() |
- if self.rowCache.has_key(key): |
- del self.rowCache[key] |
- |
- ####### Row Operations ######## |
- |
- def loadObjectsFrom(self, tableName, parent=None, data=None, |
- whereClause=[], loadChildren=1): |
- """Implement me to load objects from the database. |
- |
- @param whereClause: a list of tuples of (columnName, conditional, value) |
- so it can be parsed by all types of reflectors. eg.:: |
- whereClause = [("name", EQUALS, "fred"), ("age", GREATERTHAN, 18)] |
- """ |
- raise DBError("not implemented") |
- |
- def updateRow(self, rowObject): |
- """update this rowObject to the database. |
- """ |
- raise DBError("not implemented") |
- |
- def insertRow(self, rowObject): |
- """insert a new row for this object instance. |
- """ |
- raise DBError("not implemented") |
- |
- def deleteRow(self, rowObject): |
- """delete the row for this object from the database. |
- """ |
- raise DBError("not implemented") |
- |
-# conditionals |
-EQUAL = 0 |
-LESSTHAN = 1 |
-GREATERTHAN = 2 |
-LIKE = 3 |
- |
- |
-__all__ = ['Reflector', 'EQUAL', 'LESSTHAN', 'GREATERTHAN', 'LIKE'] |