Thread: [SQL-CVS] r3965 - in SQLObject/trunk/sqlobject: . tests
SQLObject is a Python ORM.
Brought to you by:
ianbicking,
phd
From: <sub...@co...> - 2009-08-24 15:19:26
|
Author: phd Date: 2009-08-24 09:19:10 -0600 (Mon, 24 Aug 2009) New Revision: 3965 Modified: SQLObject/trunk/sqlobject/sqlbuilder.py SQLObject/trunk/sqlobject/tests/test_converters.py SQLObject/trunk/sqlobject/views.py Log: Merged UnicodeSQLObjectField into SQLObjectField; pass all values via .from_python, not only unicode. Modified: SQLObject/trunk/sqlobject/sqlbuilder.py =================================================================== --- SQLObject/trunk/sqlobject/sqlbuilder.py 2009-08-21 17:20:17 UTC (rev 3964) +++ SQLObject/trunk/sqlobject/sqlbuilder.py 2009-08-24 15:19:10 UTC (rev 3965) @@ -321,44 +321,38 @@ return executor.field(self.tableName, self.fieldName) class SQLObjectField(Field): - def __init__(self, tableName, fieldName, original): - self.original = original + def __init__(self, tableName, fieldName, original, soClass, column): Field.__init__(self, tableName, fieldName) - -registerConverter(SQLObjectField, SQLExprConverter) - - -class UnicodeField(SQLObjectField): - def __init__(self, tableName, fieldName, original, column): - SQLObjectField.__init__(self, tableName, fieldName, original) + self.original = original + self.soClass = soClass self.column = column + def _from_python(self, value): + column = self.column + if not isinstance(value, SQLExpression) and column and column.from_python: + value = column.from_python(value, self.soClass) + return value def __eq__(self, other): if other is None: return ISNULL(self) - if isinstance(other, unicode): - other = other.encode(self.column.dbEncoding) + other = self._from_python(other) return SQLOp('=', self, other) def __ne__(self, other): if other is None: return ISNOTNULL(self) - if isinstance(other, unicode): - other = other.encode(self.column.dbEncoding) + other = self._from_python(other) return SQLOp('<>', self, other) def startswith(self, s): - if isinstance(s, unicode): - s = s.encode(self.column.dbEncoding) + s = self._from_python(s) return STARTSWITH(self, s) def endswith(self, s): - if isinstance(s, unicode): - s = s.encode(self.column.dbEncoding) + s = self._from_python(s) return ENDSWITH(self, s) def contains(self, s): - if isinstance(s, unicode): - s = s.encode(self.column.dbEncoding) + s = self._from_python(s) return CONTAINSSTRING(self, s) +registerConverter(SQLObjectField, SQLExprConverter) -registerConverter(UnicodeField, SQLExprConverter) class Table(SQLExpression): FieldClass = Field @@ -378,7 +372,6 @@ class SQLObjectTable(Table): FieldClass = SQLObjectField - UnicodeFieldClass = UnicodeField def __init__(self, soClass): self.soClass = soClass @@ -394,10 +387,7 @@ return self._getattrFromID(attr) elif attr in self.soClass.sqlmeta.columns: column = self.soClass.sqlmeta.columns[attr] - if hasattr(column, "dbEncoding"): - return self._getattrFromUnicodeColumn(column, attr) - else: - return self._getattrFromColumn(column, attr) + return self._getattrFromColumn(column, attr) elif attr+'ID' in [k for (k, v) in self.soClass.sqlmeta.columns.items() if v.foreignKey]: attr += 'ID' column = self.soClass.sqlmeta.columns[attr] @@ -406,14 +396,11 @@ raise AttributeError("%s instance has no attribute '%s'" % (self.soClass.__name__, attr)) def _getattrFromID(self, attr): - return self.FieldClass(self.tableName, self.soClass.sqlmeta.idName, attr) + return self.FieldClass(self.tableName, self.soClass.sqlmeta.idName, attr, self.soClass, None) def _getattrFromColumn(self, column, attr): - return self.FieldClass(self.tableName, column.dbName, attr) + return self.FieldClass(self.tableName, column.dbName, attr, self.soClass, column) - def _getattrFromUnicodeColumn(self, column, attr): - return self.UnicodeFieldClass(self.tableName, column.dbName, attr, column) - class SQLObjectTableWithJoins(SQLObjectTable): def __getattr__(self, attr): Modified: SQLObject/trunk/sqlobject/tests/test_converters.py =================================================================== --- SQLObject/trunk/sqlobject/tests/test_converters.py 2009-08-21 17:20:17 UTC (rev 3964) +++ SQLObject/trunk/sqlobject/tests/test_converters.py 2009-08-24 15:19:10 UTC (rev 3965) @@ -105,7 +105,7 @@ assert sqlrepr(instance) == repr(instance) def test_sqlobjectfield(): - instance = SQLObjectField('test', 'test', 'test') + instance = SQLObjectField('test', 'test', 'test', None, None) assert sqlrepr(instance) == repr(instance) def test_select(): Modified: SQLObject/trunk/sqlobject/views.py =================================================================== --- SQLObject/trunk/sqlobject/views.py 2009-08-21 17:20:17 UTC (rev 3964) +++ SQLObject/trunk/sqlobject/views.py 2009-08-24 15:19:10 UTC (rev 3965) @@ -11,23 +11,15 @@ class ViewSQLObjectField(SQLObjectField): def __init__(self, alias, *arg): - self.alias = alias SQLObjectField.__init__(self, *arg) + self.alias = alias def __sqlrepr__(self, db): return self.alias + "." + self.fieldName def tablesUsedImmediate(self): return [self.tableName] -class UnicodeViewSQLObjectField(UnicodeField): - def __init__(self, alias, *arg): - self.alias = alias - UnicodeField.__init__(self, *arg) - __sqlrepr__ = ViewSQLObjectField.__sqlrepr__ - tablesUsedImmediate = ViewSQLObjectField.tablesUsedImmediate - class ViewSQLObjectTable(SQLObjectTable): FieldClass = ViewSQLObjectField - UnicodeFieldClass = UnicodeViewSQLObjectField def __getattr__(self, attr): if attr == 'sqlmeta': @@ -35,15 +27,12 @@ return SQLObjectTable.__getattr__(self, attr) def _getattrFromID(self, attr): - return self.FieldClass(self.soClass.sqlmeta.alias, self.tableName, 'id', attr) + return self.FieldClass(self.soClass.sqlmeta.alias, self.tableName, 'id', attr, self.soClass, None) def _getattrFromColumn(self, column, attr): - return self.FieldClass(self.soClass.sqlmeta.alias, self.tableName, column.name, attr) + return self.FieldClass(self.soClass.sqlmeta.alias, self.tableName, column.name, attr, self.soClass, column) - def _getattrFromUnicodeColumn(self, column, attr): - return self.UnicodeFieldClass(self.soClass.sqlmeta.alias, self.tableName, column.name, attr, column) - class ViewSQLObject(SQLObject): """ A SQLObject class that derives all it's values from other SQLObject classes. |