-
-
Save zsoldosp/5710abaa9dedc03417d60bcc714c95d4 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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