--- /dev/null
+Description: Removed redefinition of get_traceback_frame_variables
+ This code was part of fixes before Django 1.4 was released, and is no longer
+ necessary. In fact, it uses get_request_repr() which is not available in
+ Django 1.9 anymore, so it is necessary to remove it to avoid crashes.
+Author: Thomas Goirand <zigo@debian.org>
+Forwarded: no
+Last-Update: 2016-01-11
+
+--- horizon-8.0.0.orig/horizon/exceptions.py
++++ horizon-8.0.0/horizon/exceptions.py
+@@ -40,56 +40,6 @@ class HorizonReporterFilter(SafeExceptio
+ def is_active(self, request):
+ return True
+
+- # TODO(gabriel): This bugfix is cribbed from Django's code. When 1.4.1
+- # is available we can remove this code.
+- def get_traceback_frame_variables(self, request, tb_frame):
+- """Replaces the values of variables marked as sensitive with
+- stars (*********).
+- """
+- # Loop through the frame's callers to see if the sensitive_variables
+- # decorator was used.
+- current_frame = tb_frame.f_back
+- sensitive_variables = None
+- while current_frame is not None:
+- if (current_frame.f_code.co_name == 'sensitive_variables_wrapper'
+- and 'sensitive_variables_wrapper'
+- in current_frame.f_locals):
+- # The sensitive_variables decorator was used, so we take note
+- # of the sensitive variables' names.
+- wrapper = current_frame.f_locals['sensitive_variables_wrapper']
+- sensitive_variables = getattr(wrapper,
+- 'sensitive_variables',
+- None)
+- break
+- current_frame = current_frame.f_back
+-
+- cleansed = []
+- if self.is_active(request) and sensitive_variables:
+- if sensitive_variables == '__ALL__':
+- # Cleanse all variables
+- for name, value in tb_frame.f_locals.items():
+- cleansed.append((name, CLEANSED_SUBSTITUTE))
+- return cleansed
+- else:
+- # Cleanse specified variables
+- for name, value in tb_frame.f_locals.items():
+- if name in sensitive_variables:
+- value = CLEANSED_SUBSTITUTE
+- elif isinstance(value, HttpRequest):
+- # Cleanse the request's POST parameters.
+- value = self.get_request_repr(value)
+- cleansed.append((name, value))
+- return cleansed
+- else:
+- # Potentially cleanse only the request if it's one of the
+- # frame variables.
+- for name, value in tb_frame.f_locals.items():
+- if isinstance(value, HttpRequest):
+- # Cleanse the request's POST parameters.
+- value = self.get_request_repr(value)
+- cleansed.append((name, value))
+- return cleansed
+-
+
+ class HorizonException(Exception):
+ """Base exception class for distinguishing our own exception classes."""