• 
      

    Improve compatibility and usage of CursorDebugWrapper.

    Review Request #8685 — Created Jan. 31, 2017 and submitted — Latest diff uploaded

    Information

    Djblets
    release-0.10.x
    ca0ed92...

    Reviewers

    This improves CursorDebugWrapper to be compatible with modern versions
    of Django, and to implement missing functionality.

    Our CursorDebugWrapper was re-implementing logic from Django's, instead
    of just using the base logic, which didn't make sense and wasn't
    future-proof. We now heavily rely on the base functionality.

    We register CursorDebugWrapper in a better way. The old way of
    overriding the version on the module wasn't safe, and caused infinite
    loop issues on newer versions of Django. We now instead override the
    method on BaseDatabaseWrapper that creates and returns an instance of
    the CursorDebugWrapper, which is safer.

    Last but not least, we weren't adding stack traces for executemany()
    calls. While Django itself doesn't make use of this method, applications
    might. We now store the stack trace for these calls as well.

    Unit tests were added for both methods.

    Unit tests pass on Django 1.6, 1.7, 1.8, 1.9, and 1.10.