Sophie

Sophie

distrib > Fedora > 16 > x86_64 > media > updates-src > by-pkgid > f086fec8b1f9aa257b4ffea2942c6844 > files > 2

python-sqlamp-0.5.2-3.fc16.src.rpm

diff -up sqlamp-0.5.2/CHANGES.sa72 sqlamp-0.5.2/CHANGES
--- sqlamp-0.5.2/CHANGES.sa72	2011-12-02 13:23:32.887982415 +0100
+++ sqlamp-0.5.2/CHANGES	2011-12-02 13:25:41.049320307 +0100
@@ -2,6 +2,7 @@
 -------------------------
 - Workaround for bug in sqlite 3.6.x (problems with binding two integer
   attributes). Initial patch by Josip Delic.
+- Backported support for SA 0.7.2 from 0.6 branch of sqlamp
 
 0.5.2: released 2010-09-19
 --------------------------
diff -up sqlamp-0.5.2/sqlamp/__init__.py.sa72 sqlamp-0.5.2/sqlamp/__init__.py
--- sqlamp-0.5.2/sqlamp/__init__.py.sa72	2011-12-02 13:21:20.813603674 +0100
+++ sqlamp-0.5.2/sqlamp/__init__.py	2011-12-02 13:22:33.311360487 +0100
@@ -77,8 +77,18 @@ ALPHABET = "0123456789ABCDEFGHIJKLMNOPQR
 PATH_FIELD_LENGTH = 255
 
 
-class PathOverflowError(Exception):
-    "Base class for exceptions in calculations of node's path."
+if hasattr(sqlalchemy.exc, 'DontWrapMixin'):
+    # SQLAlchemy 0.7.2+ allows deriving from this special mixin in order to
+    # let exceptions raised from types methods during flush pass intact.
+    class PathOverflowError(Exception, sqlalchemy.exc.DontWrapMixin):
+        "Base class for exceptions in calculations of node's path."
+else:
+    # SQLAlchemy < 0.7 doesn't need any special base class.
+    class PathOverflowError(Exception):
+        "Base class for exceptions in calculations of node's path."
+    # 0.7 and 0.7.1 wrap exceptions and reraise
+    # sqlalchemy.exc.StatementError, so are not fully supported.
+
 
 class TooManyChildrenError(PathOverflowError):
     "Maximum children limit is exceeded. Raised during flush."
@@ -203,10 +213,10 @@ class MPOptions(object):
         `Query.order_by()`. Used to sort subtree query
         by `tree_id` and `path`.
         """
-        return sqlalchemy.sql.expression.ClauseList(
+        return str(sqlalchemy.sql.expression.ClauseList(
             self.tree_id_field,
             self.path_field
-        )
+        ).compile())
 
 
 class _InsertionsParamsSelector(object):
@@ -1016,6 +1026,13 @@ class DeclarativeMeta(BaseDeclarativeMet
         super(DeclarativeMeta, cls).__init__(name, bases, dct)
         mp_manager = MPManager(cls.__table__, **opts)
         setattr(cls, mp_manager_name, mp_manager)
-        mp_class_manager = getattr(cls, mp_manager_name)
-        cls.__mapper__.extension.append(mp_manager.mapper_extension)
+        mapper_ext = mp_manager.mapper_extension
+        if hasattr(cls.__mapper__, 'extension'):
+            # SQLAlchemy < 0.7
+            cls.__mapper__.extension.append(mapper_ext)
+        else:
+            # SQLAlchemy 0.7+
+            from sqlalchemy import event
+            event.listen(cls.__mapper__, 'before_insert', mapper_ext.before_insert, propagate=True)
+            event.listen(cls.__mapper__, 'after_insert', mapper_ext.after_insert, propagate=True)