summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES3
-rw-r--r--lib/sqlalchemy/orm/strategies.py2
-rw-r--r--test/ext/declarative.py70
-rw-r--r--test/testenv.py1
-rw-r--r--test/testlib/testing.py2
5 files changed, 55 insertions, 23 deletions
diff --git a/CHANGES b/CHANGES
index e4e384b95..670bc2397 100644
--- a/CHANGES
+++ b/CHANGES
@@ -37,6 +37,9 @@ CHANGES
- Restored NotImplementedError on Cls.relation.in_()
[ticket:1140] [ticket:1221]
+ - Fixed PendingDeprecationWarning involving order_by
+ parameter on relation(). [ticket:1226]
+
- sql
- Removed the 'properties' attribute of the
Connection object, Connection.info should be used.
diff --git a/lib/sqlalchemy/orm/strategies.py b/lib/sqlalchemy/orm/strategies.py
index ba5541944..156712bc7 100644
--- a/lib/sqlalchemy/orm/strategies.py
+++ b/lib/sqlalchemy/orm/strategies.py
@@ -546,7 +546,7 @@ class LoadLazyAttribute(object):
return q.get(ident)
if prop.order_by:
- q = q.order_by(prop.order_by)
+ q = q.order_by(*util.to_list(prop.order_by))
if self.options:
q = q._conditional_options(*self.options)
diff --git a/test/ext/declarative.py b/test/ext/declarative.py
index 13de2f246..ae83b1c99 100644
--- a/test/ext/declarative.py
+++ b/test/ext/declarative.py
@@ -44,7 +44,7 @@ class DeclarativeTest(testing.TestBase, testing.AssertsExecutionResults):
Address(email='two'),
])
sess = create_session()
- sess.save(u1)
+ sess.add(u1)
sess.flush()
sess.clear()
@@ -220,7 +220,7 @@ class DeclarativeTest(testing.TestBase, testing.AssertsExecutionResults):
Address(email='two'),
])
sess = create_session()
- sess.save(u1)
+ sess.add(u1)
sess.flush()
sess.clear()
@@ -254,7 +254,7 @@ class DeclarativeTest(testing.TestBase, testing.AssertsExecutionResults):
Address(email='one'),
])
sess = create_session()
- sess.save(u1)
+ sess.add(u1)
sess.flush()
sess.clear()
eq_(sess.query(User).options(eagerload(User.addresses)).all(), [User(name='u1', addresses=[
@@ -262,6 +262,32 @@ class DeclarativeTest(testing.TestBase, testing.AssertsExecutionResults):
Address(email='two'),
])])
+ def test_order_by_multi(self):
+ class Address(Base, ComparableEntity):
+ __tablename__ = 'addresses'
+
+ id = Column('id', Integer, primary_key=True)
+ email = Column('email', String(50))
+ user_id = Column('user_id', Integer, ForeignKey('users.id'))
+
+ class User(Base, ComparableEntity):
+ __tablename__ = 'users'
+
+ id = Column('id', Integer, primary_key=True)
+ name = Column('name', String(50))
+ addresses = relation("Address", order_by=(Address.email, Address.id))
+
+ Base.metadata.create_all()
+ u1 = User(name='u1', addresses=[
+ Address(email='two'),
+ Address(email='one'),
+ ])
+ sess = create_session()
+ sess.add(u1)
+ sess.flush()
+ sess.clear()
+ u = sess.query(User).filter(User.name == 'u1').one()
+ a = u.addresses
def test_as_declarative(self):
class User(ComparableEntity):
@@ -288,7 +314,7 @@ class DeclarativeTest(testing.TestBase, testing.AssertsExecutionResults):
Address(email='two'),
])
sess = create_session()
- sess.save(u1)
+ sess.add(u1)
sess.flush()
sess.clear()
@@ -389,7 +415,7 @@ class DeclarativeTest(testing.TestBase, testing.AssertsExecutionResults):
Address(email='two'),
])
sess = create_session()
- sess.save(u1)
+ sess.add(u1)
sess.flush()
sess.clear()
@@ -414,7 +440,7 @@ class DeclarativeTest(testing.TestBase, testing.AssertsExecutionResults):
eq_(u1.a, 'a')
eq_(User.a.get_history(u1), (['a'], (), ()))
sess = create_session()
- sess.save(u1)
+ sess.add(u1)
sess.flush()
sess.clear()
@@ -445,7 +471,7 @@ class DeclarativeTest(testing.TestBase, testing.AssertsExecutionResults):
Address(email='two'),
])
sess = create_session()
- sess.save(u1)
+ sess.add(u1)
sess.flush()
sess.clear()
@@ -482,7 +508,7 @@ class DeclarativeTest(testing.TestBase, testing.AssertsExecutionResults):
Base.metadata.create_all()
sess = create_session()
- sess.save(User(name='u1'))
+ sess.add(User(name='u1'))
sess.flush()
sess.clear()
@@ -510,7 +536,7 @@ class DeclarativeTest(testing.TestBase, testing.AssertsExecutionResults):
sess = create_session()
u1 = User(name='someuser')
eq_(u1.name, "SOMENAME someuser")
- sess.save(u1)
+ sess.add(u1)
sess.flush()
eq_(sess.query(User).filter(User.name == "SOMENAME someuser").one(), u1)
@@ -532,7 +558,7 @@ class DeclarativeTest(testing.TestBase, testing.AssertsExecutionResults):
sess = create_session()
u1 = User(name='someuser')
eq_(u1.name, "SOMENAME someuser")
- sess.save(u1)
+ sess.add(u1)
sess.flush()
eq_(sess.query(User).filter(User.name == "SOMENAME someuser").one(), u1)
@@ -591,8 +617,8 @@ class DeclarativeTest(testing.TestBase, testing.AssertsExecutionResults):
Engineer(name="vlad", primary_language="cobol")
])
- sess.save(c1)
- sess.save(c2)
+ sess.add(c1)
+ sess.add(c2)
sess.flush()
sess.clear()
@@ -668,7 +694,7 @@ class DeclarativeTest(testing.TestBase, testing.AssertsExecutionResults):
Address(email='two'),
])
sess = create_session()
- sess.save(u1)
+ sess.add(u1)
sess.flush()
sess.clear()
@@ -704,7 +730,7 @@ class DeclarativeTest(testing.TestBase, testing.AssertsExecutionResults):
Address(email='two'),
])
sess = create_session()
- sess.save(u1)
+ sess.add(u1)
sess.flush()
sess.clear()
@@ -766,8 +792,8 @@ class DeclarativeTest(testing.TestBase, testing.AssertsExecutionResults):
Engineer(name="vlad", primary_language="cobol")
])
- sess.save(c1)
- sess.save(c2)
+ sess.add(c1)
+ sess.add(c2)
sess.flush()
sess.clear()
@@ -791,7 +817,7 @@ class DeclarativeTest(testing.TestBase, testing.AssertsExecutionResults):
sess = create_session()
m = MyObj(id="someid", data="somedata")
- sess.save(m)
+ sess.add(m)
sess.flush()
eq_(t1.select().execute().fetchall(), [('someid', 'somedata')])
@@ -920,7 +946,7 @@ class DeclarativeReflectionTest(testing.TestBase):
Address(email='two'),
])
sess = create_session()
- sess.save(u1)
+ sess.add(u1)
sess.flush()
sess.clear()
@@ -951,7 +977,7 @@ class DeclarativeReflectionTest(testing.TestBase):
Address(email='two'),
])
sess = create_session()
- sess.save(u1)
+ sess.add(u1)
sess.flush()
sess.clear()
@@ -985,7 +1011,7 @@ class DeclarativeReflectionTest(testing.TestBase):
IMHandle(network='lol', handle='zomg')
])
sess = create_session()
- sess.save(u1)
+ sess.add(u1)
sess.flush()
sess.clear()
@@ -1016,7 +1042,7 @@ class DeclarativeReflectionTest(testing.TestBase):
u1 = User(name='someuser')
eq_(u1.name, "someuser")
eq_(u1.namesyn, 'someuser')
- sess.save(u1)
+ sess.add(u1)
sess.flush()
rt = sess.query(User).filter(User.namesyn == 'someuser').one()
@@ -1050,7 +1076,7 @@ class DeclarativeReflectionTest(testing.TestBase):
u1 = User(name='someuser')
eq_(u1.name, "someuser", u1.name)
eq_(u1.uc_name, 'SOMEUSER', u1.uc_name)
- sess.save(u1)
+ sess.add(u1)
sess.flush()
sess.clear()
diff --git a/test/testenv.py b/test/testenv.py
index 35e9032aa..808a3c5f0 100644
--- a/test/testenv.py
+++ b/test/testenv.py
@@ -5,6 +5,7 @@ import sys, os, logging, warnings
if sys.version_info < (2, 4):
warnings.filterwarnings('ignore', category=FutureWarning)
+
from testlib.testing import main
import testlib.config
diff --git a/test/testlib/testing.py b/test/testlib/testing.py
index b38968964..f6a16a4f8 100644
--- a/test/testlib/testing.py
+++ b/test/testlib/testing.py
@@ -377,6 +377,8 @@ def resetwarnings():
warnings.filterwarnings('error', category=sa_exc.SADeprecationWarning)
warnings.filterwarnings('error', category=sa_exc.SAWarning)
+# warnings.simplefilter('error')
+
if sys.version_info < (2, 4):
warnings.filterwarnings('ignore', category=FutureWarning)