Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@zsoldosp
Created May 17, 2017 07:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zsoldosp/5710abaa9dedc03417d60bcc714c95d4 to your computer and use it in GitHub Desktop.
Save zsoldosp/5710abaa9dedc03417d60bcc714c95d4 to your computer and use it in GitHub Desktop.
from django.views import debug as debug_views # noqa: E402
class NestedSafeExceptionReporterFilter(
debug_views.SafeExceptionReporterFilter):
def _super(self):
return super(NestedSafeExceptionReporterFilter, self)
def get_post_parameters(self, request):
res = self._super().get_post_parameters(request)
self.mark_self_as_sensitive_based_on_prior_cleaning(res.items())
# no need to clean or anything, as it's already done
# important is that we have marked it for the coming frames
return res
def get_traceback_frame_variables(self, request, tb_frame):
res = self._super().get_traceback_frame_variables(request, tb_frame)
self.mark_self_as_sensitive_based_on_prior_cleaning(res)
if self._has_sensitive_params:
return {}
else:
return res
def mark_self_as_sensitive_based_on_prior_cleaning(self, items):
if not hasattr(self, '_has_sensitive_params'):
self._has_sensitive_params = False
if self._has_sensitive_params:
return
self._has_sensitive_params = self.contains_sensitive_vars(items)
def contains_sensitive_vars(self, items):
for k, v in items:
if v == debug_views.CLEANSED_SUBSTITUTE:
return True
return False
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment