Michael Manfre avatar Michael Manfre committed 5f942d6

Monkey patched django.db.backends.utils.CursorWrapper to allow using cursors as contextmanagers with Python 2.7.

Comments (0)

Files changed (3)

docs/changelog.txt

 - AVG function now matches core backend behaviors and will auto-cast to ``float``, instead of maintaining datatype. 
   Set database ``OPTIONS`` setting ``disable_avg_cast`` to turn off the auto-cast behavior.
 - StdDev and Variance aggregate functions are now supported and will map to the proper MSSQL named functions. Includes work around for Django ticket `#18334`_.
+- Monkey patched ``django.db.backends.util.CursorWrapper`` to allow using cursors as ContextManagers in Python 2.7. Django Ticket `#17671`_.
 
-.. _`#18334`: https://code.djangoproject.com/ticket/18334
+.. _`#17671`: https://code.djangoproject.com/ticket/17671
+.. _`#18334`: https://code.djangoproject.com/ticket/18334

sqlserver_ado/__init__.py

 # following PEP 386
 __version__ = "1.1rc2"
+
+import patches

sqlserver_ado/patches.py

+import sys
+
+if sys.version_info >= (2,7):
+    # Django Ticket #17671 - Allow using a cursor as a ContextManager 
+    # in Python 2.7
+    from django.db.backends.util import CursorWrapper
+    if not hasattr(CursorWrapper, '__enter__'):
+        enter = lambda self: self
+        exit = lambda self, type, value, traceback: self.cursor.__exit__(type, value, traceback)
+        
+        CursorWrapper.__enter__ = enter
+        CursorWrapper.__exit__ = exit
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.