mirror of
https://github.com/django/django.git
synced 2025-07-04 09:49:12 +00:00
fix: create template pprint from repr implementation
This commit is contained in:
parent
0f59f75254
commit
4a10aa1b4f
@ -3,6 +3,7 @@
|
|||||||
import random as random_module
|
import random as random_module
|
||||||
import re
|
import re
|
||||||
import types
|
import types
|
||||||
|
from collections.abc import Sized
|
||||||
from decimal import ROUND_HALF_UP, Context, Decimal, InvalidOperation, getcontext
|
from decimal import ROUND_HALF_UP, Context, Decimal, InvalidOperation, getcontext
|
||||||
from functools import wraps
|
from functools import wraps
|
||||||
from inspect import unwrap
|
from inspect import unwrap
|
||||||
@ -16,6 +17,7 @@ from django.utils.html import avoid_wrapping, conditional_escape, escape, escape
|
|||||||
from django.utils.html import json_script as _json_script
|
from django.utils.html import json_script as _json_script
|
||||||
from django.utils.html import linebreaks, strip_tags
|
from django.utils.html import linebreaks, strip_tags
|
||||||
from django.utils.html import urlize as _urlize
|
from django.utils.html import urlize as _urlize
|
||||||
|
from django.utils.repr import DjangoRepr
|
||||||
from django.utils.safestring import SafeData, mark_safe
|
from django.utils.safestring import SafeData, mark_safe
|
||||||
from django.utils.text import Truncator, normalize_newlines, phone2numeric
|
from django.utils.text import Truncator, normalize_newlines, phone2numeric
|
||||||
from django.utils.text import slugify as _slugify
|
from django.utils.text import slugify as _slugify
|
||||||
@ -966,3 +968,22 @@ def pluralize(value, arg="s"):
|
|||||||
def phone2numeric_filter(value):
|
def phone2numeric_filter(value):
|
||||||
"""Take a phone number and converts it in to its numerical equivalent."""
|
"""Take a phone number and converts it in to its numerical equivalent."""
|
||||||
return phone2numeric(value)
|
return phone2numeric(value)
|
||||||
|
|
||||||
|
|
||||||
|
PRINT_LIMIT = 4096
|
||||||
|
repr_instance = DjangoRepr()
|
||||||
|
repr_instance.config(PRINT_LIMIT)
|
||||||
|
|
||||||
|
|
||||||
|
@register.filter(is_safe=True)
|
||||||
|
def pprint(v):
|
||||||
|
try:
|
||||||
|
if isinstance(v, Sized) and len(v) > PRINT_LIMIT:
|
||||||
|
diff = len(v) - PRINT_LIMIT
|
||||||
|
repr_instance.fillvalue = "...<trimmed %d bytes string>" % diff
|
||||||
|
v = repr_instance.repr(v)
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
v = "Error in formatting: %s: %s" % (e.__class__.__name__, e)
|
||||||
|
|
||||||
|
return v
|
||||||
|
@ -5,12 +5,12 @@ import re
|
|||||||
import sys
|
import sys
|
||||||
import types
|
import types
|
||||||
import warnings
|
import warnings
|
||||||
from collections.abc import Sized
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.http import Http404, HttpResponse, HttpResponseNotFound
|
from django.http import Http404, HttpResponse, HttpResponseNotFound
|
||||||
from django.template import Context, Engine, TemplateDoesNotExist
|
from django.template import Context, Engine, TemplateDoesNotExist
|
||||||
|
from django.template.defaultfilters import pprint
|
||||||
from django.urls import resolve
|
from django.urls import resolve
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from django.utils.datastructures import MultiValueDict
|
from django.utils.datastructures import MultiValueDict
|
||||||
@ -358,18 +358,7 @@ class ExceptionReporter:
|
|||||||
if "vars" in frame:
|
if "vars" in frame:
|
||||||
frame_vars = []
|
frame_vars = []
|
||||||
for k, v in frame["vars"]:
|
for k, v in frame["vars"]:
|
||||||
|
v = pprint(v)
|
||||||
try:
|
|
||||||
if isinstance(v, Sized) and len(v) > self.PRINT_LIMIT:
|
|
||||||
diff = len(v) - self.PRINT_LIMIT
|
|
||||||
self.repr_instance.fillvalue = (
|
|
||||||
"...<trimmed %d bytes string>" % diff
|
|
||||||
)
|
|
||||||
v = self.repr_instance.repr(v)
|
|
||||||
|
|
||||||
except Exception as e:
|
|
||||||
v = "Error in formatting: %s: %s" % (e.__class__.__name__, e)
|
|
||||||
|
|
||||||
frame_vars.append((k, v))
|
frame_vars.append((k, v))
|
||||||
frame["vars"] = frame_vars
|
frame["vars"] = frame_vars
|
||||||
frames[i] = frame
|
frames[i] = frame
|
||||||
|
Loading…
x
Reference in New Issue
Block a user