Esempio n. 1
0
        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
Esempio n. 2
0
        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
Esempio n. 3
0
        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