Exemplo n.º 1
0
def ajax_error_save(request):
    try:
        if request.method == 'POST' and 'epoch' in request.POST and request.POST['epoch']:
            epoch = int(request.POST['epoch'])
            simple_traceback = request.POST['simple_traceback'].replace("\\n", "\n\n")
            create_caught_error(request, epoch, simple_traceback)
    except:
        print exception_string()
            
    return HttpResponse(simplejson.dumps({"success": True}))
Exemplo n.º 2
0
def ajax_error_save(request):
    try:
        if request.method == 'POST' and 'epoch' in request.POST and request.POST[
                'epoch']:
            epoch = int(request.POST['epoch'])
            simple_traceback = request.POST['simple_traceback'].replace(
                "\\n", "\n\n")
            create_caught_error(request, epoch, simple_traceback)
    except:
        print exception_string()

    return HttpResponse(simplejson.dumps({"success": True}))
Exemplo n.º 3
0
    def save_traceback_to_epoch_file(self, request, exc_info):
        try:
            resp = technical_500_response(request, *exc_info)

            if BETTER_500_LOG_DIR:
                epoch = int(time.mktime(datetime.datetime.now().timetuple()))
                epoch_file = "%s.html" % (epoch,)

                folder = os.path.join(BETTER_500_LOG_DIR, BETTER_500_UNCAUGHT_DIR)
                debug_log_file = os.path.join(folder, epoch_file)

                if not os.path.exists(folder):
                       os.makedirs(folder)

                try:
                    default_storage.save(debug_log_file, ContentFile(resp._container[0]))
                except:
                    f = open(debug_log_file,"a")
                    f.write(resp._container[0])
                    f.close()

                return epoch
        except:
            try:
                log = logging.getLogger("better500s")
                log.error(exception_string())
            except:
                pass
            pass
        return None
Exemplo n.º 4
0
    def save_traceback_to_epoch_file(self, request, exc_info):
        try:
            resp = technical_500_response(request, *exc_info)

            if BETTER_500_LOG_DIR:
                epoch = int(time.mktime(datetime.datetime.now().timetuple()))
                epoch_file = "%s.html" % (epoch, )

                folder = os.path.join(BETTER_500_LOG_DIR,
                                      BETTER_500_UNCAUGHT_DIR)
                debug_log_file = os.path.join(folder, epoch_file)

                if not os.path.exists(folder):
                    os.makedirs(folder)

                try:
                    default_storage.save(debug_log_file,
                                         ContentFile(resp._container[0]))
                except:
                    f = open(debug_log_file, "a")
                    f.write(resp._container[0])
                    f.close()

                return epoch
        except:
            try:
                log = logging.getLogger("better500s")
                log.error(exception_string())
            except:
                pass
            pass
        return None
Exemplo n.º 5
0
def create_caught_error(request, epoch, traceback, subject_prefix=""):
    error_obj = CaughtError.objects.create(
                            epoch_time=epoch,
                            user=request.user,
                            error_time=datetime.datetime.now(),
                            simple_traceback=traceback
                            )
    try:
        detail_page_url = request.build_absolute_uri(error_obj.view_url)
        subject = "%s500 - %s" % (subject_prefix, error_obj)
        body = render_to_string("better500s/admin_email.txt", locals(), context_instance=RequestContext(request))
        mail_admins(subject, body, fail_silently=True)
    except:
        log = logging.getLogger("better500s")
        log.error(exception_string())
        pass
Exemplo n.º 6
0
def create_caught_error(request, epoch, traceback, subject_prefix=""):
    error_obj = CaughtError.objects.create(
                            epoch_time=epoch,
                            user=request.user,
                            error_time=datetime.datetime.now(),
                            simple_traceback=traceback
                            )
    try:
        detail_page_url = request.build_absolute_uri(error_obj.view_url)
        subject = "%s500 - %s" % (subject_prefix, error_obj)
        body = render_to_string("better500s/admin_email.txt", locals(), context_instance=RequestContext(request))
        mail_admins(subject, body, fail_silently=True)
        if telegram and getattr(settings, 'BETTER_500_NOTIFICATION_CHANNEL', False):
            telegram.broadcast(settings.BETTER_500_NOTIFICATION_CHANNEL, subject, detail_page_url, add_to_queue=False)
    except:
        log = logging.getLogger("better500s")
        log.error(exception_string())
        pass
Exemplo n.º 7
0
    def process_exception(self, request, exception):
        if isinstance(exception, Http404):
            return None

        if hasattr(settings, "DEBUG") and settings.DEBUG == False and type(
                exception) != PermissionDenied:
            exc_info = sys.exc_info()
            try:
                context = {}
                epoch = self.save_traceback_to_epoch_file(request, exc_info)
                context['epoch'] = epoch
                context['MEDIA_URL'] = getattr(settings, "MEDIA_URL", None)
                context['STATIC_URL'] = getattr(settings, "STATIC_URL", None)
                context['ajax_url'] = reverse(BETTER_500_AJAX_URL)
                context['post_url'] = reverse(BETTER_500_POST_URL)
                try:
                    exception_value = smart_unicode(exc_info[1])
                    if exception_value != u"":
                        context['exception_value'] = exception_value
                except:
                    pass

                try:
                    context['simple_traceback'] = "\\n".join(
                        traceback.format_exception(*exc_info))
                except:
                    context['simple_traceback'] = ""

                html = render_to_string("better500s/500_handler.html",
                                        context,
                                        context_instance=Context())
                return HttpResponseServerError(html, mimetype='text/html')

            except:
                try:
                    log = logging.getLogger("better500s")
                    log.error(exception_string())
                except:
                    pass

        return None
Exemplo n.º 8
0
    def process_exception(self, request, exception):
        if isinstance(exception, Http404):
            return None

        if hasattr(settings,"DEBUG") and settings.DEBUG == False and type(exception) != PermissionDenied:
            exc_info = sys.exc_info()
            try:
                context = {}
                epoch = self.save_traceback_to_epoch_file(request, exc_info)
                context['epoch'] = epoch
                context['MEDIA_URL'] = getattr(settings, "MEDIA_URL", None)
                context['STATIC_URL'] = getattr(settings, "STATIC_URL", None)
                context['ajax_url'] = reverse(BETTER_500_AJAX_URL)
                context['post_url'] = reverse(BETTER_500_POST_URL)
                try:
                    exception_value = smart_unicode(exc_info[1])
                    if exception_value != u"":
                        context['exception_value'] = exception_value
                except:
                    pass

                try:
                    context['simple_traceback'] = "\\n".join(
                        traceback.format_exception(*exc_info))
                except:
                    context['simple_traceback'] = ""

                html = render_to_string("better500s/500_handler.html",
                                        context, context_instance=Context())
                return HttpResponseServerError(html, mimetype='text/html')

            except:
                try:
                    log = logging.getLogger("better500s")
                    log.error(exception_string())
                except:
                    pass

        return None
Exemplo n.º 9
0
def create_caught_error(request, epoch, traceback, subject_prefix=""):
    error_obj = CaughtError.objects.create(epoch_time=epoch,
                                           user=request.user,
                                           error_time=datetime.datetime.now(),
                                           simple_traceback=traceback)
    try:
        detail_page_url = request.build_absolute_uri(error_obj.view_url)
        subject = "%s500 - %s" % (subject_prefix, error_obj)
        body = render_to_string("better500s/admin_email.txt",
                                locals(),
                                context_instance=RequestContext(request))
        mail_admins(subject, body, fail_silently=True)
        if telegram and getattr(settings, 'BETTER_500_NOTIFICATION_CHANNEL',
                                False):
            telegram.broadcast(settings.BETTER_500_NOTIFICATION_CHANNEL,
                               subject,
                               detail_page_url,
                               add_to_queue=False)
    except:
        log = logging.getLogger("better500s")
        log.error(exception_string())
        pass
Exemplo n.º 10
0
    def process_exception(self, request, exception):
        if hasattr(settings,"DEBUG") and settings.DEBUG == False and type(exception) != PermissionDenied:
            exc_info = sys.exc_info()
            try:
                from django.template import Context
                from django.utils.encoding import smart_unicode
                from django.template.loader import render_to_string
                from django.http import HttpResponseServerError, HttpResponseNotFound
                from django.http import Http404  

                epoch = self.save_traceback_to_epoch_file(request, exc_info)
                context = {}
                if epoch:
                    try:
                        context = {}
                        context['epoch'] = epoch
                        context['MEDIA_URL'] = getattr(settings, "MEDIA_URL", None)
                        context['STATIC_URL'] = getattr(settings, "STATIC_URL", None)
                        context['ajax_url'] = BETTER_500_AJAX_URL
                        context['post_url'] = BETTER_500_POST_URL

                        context['simple_traceback'] = ""

                        try:
                            exception_value = smart_unicode(exc_info[1])
                            if exception_value != u"":
                                context['exception_value'] = exception_value
                        except:
                            pass
                        try:
                            context['simple_traceback'] = "\\n".join(traceback.format_exception(*exc_info))
                        except:
                            pass

                        from django.core.urlresolvers import reverse
                        context['ajax_url'] = reverse("better_500_response",)
                        context['post_url'] = reverse("better_500_saved",)
                    except:
                        try:
                            log = logging.getLogger("better500s")
                            log.error(exception_string())
                        except:
                            pass                        

                
                
                html = render_to_string("better500s/500_handler.html", context, context_instance=Context())

                if type(exception) == type(Http404):
                    return HttpResponseNotFound(html, mimetype='text/html')
                else:
                    return HttpResponseServerError(html, mimetype='text/html')

            except:
                try:
                    log = logging.getLogger("better500s")
                    log.error(exception_string())
                except:
                    pass

        return None