[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.
|