]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Accept unicode in CascadeOptions
authorJulien Castets <jcastets@ocs.online.net>
Mon, 16 Mar 2015 10:45:06 +0000 (11:45 +0100)
committerJulien Castets <jcastets@ocs.online.net>
Mon, 16 Mar 2015 15:23:14 +0000 (16:23 +0100)
lib/sqlalchemy/orm/util.py
test/orm/test_cascade.py

index 9787b0fb43317f369bd4d748d4ab5dd82cb4e17c..ad071376dc6e2715533082dc9f8eb252bd36875b 100644 (file)
@@ -35,7 +35,7 @@ class CascadeOptions(frozenset):
         'expunge', 'delete_orphan')
 
     def __new__(cls, value_list):
-        if isinstance(value_list, str) or value_list is None:
+        if isinstance(value_list, util.string_types) or value_list is None:
             return cls.from_string(value_list)
         values = set(value_list)
         if values.difference(cls._allowed_cascades):
index e39911d0f603b68723be51d5a78fb07eb3d5313a..f104ee34c0b756aef7f1c0f3337d3e635f17df01 100644 (file)
@@ -2,7 +2,7 @@ import copy
 
 from sqlalchemy.testing import assert_raises, assert_raises_message
 from sqlalchemy import Integer, String, ForeignKey, Sequence, \
-    exc as sa_exc
+    exc as sa_exc, util
 from sqlalchemy.testing.schema import Table, Column
 from sqlalchemy.orm import mapper, relationship, create_session, \
     sessionmaker, class_mapper, backref, Session, util as orm_util,\
@@ -119,6 +119,14 @@ class CascadeArgTest(fixtures.MappedTest):
                     'refresh-expire', 'save-update'])
             )
 
+    def test_cascade_unicode(self):
+        User, Address = self.classes.User, self.classes.Address
+        users, addresses = self.tables.users, self.tables.addresses
+
+        rel = relationship(Address)
+        rel.cascade = util.u('save-update, merge, expunge')
+        eq_(rel.cascade, set(['save-update', 'merge', 'expunge']))
+
 
 class O2MCascadeDeleteOrphanTest(fixtures.MappedTest):
     run_inserts = None