Esempio n. 1
0
def group(request, group_id):
    group = get_object_or_404(GroupedMessage, pk=group_id)

    try:
        obj = group.message_set.all().order_by("-id")[0]
    except IndexError:
        # It's possible that a message would not be created under certain circumstances
        # (such as a post_save signal failing)
        obj = Message(group=group, data=group.data)

    if "__sentry__" in obj.data and "exc" in obj.data["__sentry__"]:
        module, args, frames = obj.data["__sentry__"]["exc"]
        obj.class_name = str(obj.class_name)
        # We fake the exception class due to many issues with imports/builtins/etc
        exc_type = type(obj.class_name, (Exception,), {})
        exc_value = exc_type(obj.message)

        exc_value.args = args

        reporter = ImprovedExceptionReporter(
            obj.request, exc_type, exc_value, frames, obj.data["__sentry__"].get("template")
        )
        traceback = mark_safe(reporter.get_traceback_html())
        version_data = obj.data["__sentry__"].get("versions", {}).iteritems()

    elif group.traceback:
        traceback = mark_safe("<pre>%s</pre>" % (group.traceback,))
        version_data = None

    else:
        traceback = None
        version_data = None

    return render_to_response(
        "sentry/group/details.html",
        {
            "page": "details",
            "group": group,
            "json_data": iter_data(obj),
            "traceback": traceback,
            "version_data": version_data,
        },
    )
Esempio n. 2
0
def group(request, group_id):
    group = get_object_or_404(GroupedMessage, pk=group_id)

    try:
        obj = group.message_set.all().order_by('-id')[0]
    except IndexError:
        # It's possible that a message would not be created under certain circumstances
        # (such as a post_save signal failing)
        obj = Message(group=group, data=group.data)

    if '__sentry__' in obj.data and 'exc' in obj.data['__sentry__']:
        module, args, frames = obj.data['__sentry__']['exc']
        obj.class_name = str(obj.class_name)
        # We fake the exception class due to many issues with imports/builtins/etc
        exc_type = type(obj.class_name, (Exception, ), {})
        exc_value = exc_type(obj.message)

        exc_value.args = args

        reporter = ImprovedExceptionReporter(
            obj.request, exc_type, exc_value, frames,
            obj.data['__sentry__'].get('template'))
        traceback = mark_safe(reporter.get_traceback_html())
        version_data = obj.data['__sentry__'].get('versions', {}).iteritems()

    elif group.traceback:
        traceback = mark_safe('<pre>%s</pre>' % (group.traceback, ))
        version_data = None

    def iter_data(obj):
        for k, v in obj.data.iteritems():
            if k.startswith('_') or k in ['url']:
                continue
            yield k, v

    json_data = iter_data(obj)

    page = 'details'

    return render_to_response('sentry/group/details.html', locals())
Esempio n. 3
0
def group(request, group_id):
    group = get_object_or_404(GroupedMessage, pk=group_id)

    try:
        obj = group.message_set.all().order_by('-id')[0]
    except IndexError:
        # It's possible that a message would not be created under certain circumstances
        # (such as a post_save signal failing)
        obj = Message(group=group, data=group.data)

    if '__sentry__' in obj.data and 'exc' in obj.data['__sentry__']:
        module, args, frames = obj.data['__sentry__']['exc']
        obj.class_name = str(obj.class_name)
        # We fake the exception class due to many issues with imports/builtins/etc
        exc_type = type(obj.class_name, (Exception,), {})
        exc_value = exc_type(obj.message)

        exc_value.args = args
    
        reporter = ImprovedExceptionReporter(obj.request, exc_type, exc_value, frames, obj.data['__sentry__'].get('template'))
        traceback = mark_safe(reporter.get_traceback_html())
        version_data = obj.data['__sentry__'].get('versions', {}).iteritems()

    elif group.traceback:
        traceback = mark_safe('<pre>%s</pre>' % (group.traceback,))
        version_data = None
    
    def iter_data(obj):
        for k, v in obj.data.iteritems():
            if k.startswith('_') or k in ['url']:
                continue
            yield k, v

    json_data = iter_data(obj)

    page = 'details'

    return render_to_response('sentry/group/details.html', locals(),
                              context_instance=RequestContext(request))