def process_django_templates(event, hint): # type: (Dict[str, Any], Dict[str, Any]) -> Dict[str, Any] if hint.get("exc_info", None) is None: return event if "exception" not in event: return event exception = event["exception"] if "values" not in exception: return event for exception, (_, exc_value, _) in zip(exception["values"], walk_exception_chain(hint["exc_info"])): frame = get_template_frame_from_exception(exc_value) if frame is not None: frames = exception.get("stacktrace", {}).get("frames", []) for i in reversed(range(len(frames))): f = frames[i] if (f.get("function") in ("parse", "render") and f.get("module") == "django.template.base"): i += 1 break else: i = len(frames) frames.insert(i, frame) return event
def process_django_templates(event, hint): # type: (Event, Optional[Hint]) -> Optional[Event] if hint is None: return event exc_info = hint.get("exc_info", None) if exc_info is None: return event exception = event.get("exception", None) if exception is None: return event values = exception.get("values", None) if values is None: return event for exception, (_, exc_value, _) in zip( reversed(values), walk_exception_chain(exc_info) ): frame = get_template_frame_from_exception(exc_value) if frame is not None: frames = exception.get("stacktrace", {}).get("frames", []) for i in reversed(range(len(frames))): f = frames[i] if ( f.get("function") in ("Parser.parse", "parse", "render") and f.get("module") == "django.template.base" ): i += 1 break else: i = len(frames) frames.insert(i, frame) return event
def process_django_templates(event, hint): if hint.get("exc_info", None) is None: return event if "exception" not in event: return event exception = event["exception"] if "values" not in exception: return event for exception, (_, exc_value, _) in zip(exception["values"], walk_exception_chain(hint["exc_info"])): frame = get_template_frame_from_exception(exc_value) if frame is not None: frames = exception.setdefault("stacktrace", {}).setdefault("frames", []) frames.append(frame) return event