27 |
27 |
from django import template
|
28 |
28 |
from django.core import signing
|
29 |
29 |
from django.core.exceptions import PermissionDenied
|
30 |
|
from django.core.serializers.json import DjangoJSONEncoder
|
31 |
30 |
from django.template import VariableDoesNotExist
|
32 |
31 |
|
33 |
32 |
try:
|
... | ... | |
43 |
42 |
from django.template.defaultfilters import stringfilter
|
44 |
43 |
from django.utils import dateparse
|
45 |
44 |
from django.utils.encoding import force_text
|
46 |
|
from django.utils.html import format_html
|
47 |
|
from django.utils.safestring import mark_safe
|
48 |
45 |
from django.utils.timezone import is_naive, make_aware
|
49 |
46 |
|
50 |
47 |
from combo.apps.dashboard.models import DashboardCell, Tile
|
... | ... | |
652 |
649 |
return decimal(abs(parse_decimal(value)))
|
653 |
650 |
|
654 |
651 |
|
655 |
|
_json_script_escapes = {
|
656 |
|
ord('>'): '\\u003E',
|
657 |
|
ord('<'): '\\u003C',
|
658 |
|
ord('&'): '\\u0026',
|
659 |
|
}
|
660 |
|
|
661 |
|
|
662 |
|
@register.filter(is_safe=True)
|
663 |
|
def json_script(value, element_id):
|
664 |
|
"""
|
665 |
|
Escape all the HTML/XML special characters with their unicode escapes, so
|
666 |
|
value is safe to be output anywhere except for inside a tag attribute. Wrap
|
667 |
|
the escaped JSON in a script tag.
|
668 |
|
--
|
669 |
|
This is a backport from Django 2.1; it should be removed once Combo bumps
|
670 |
|
its minimal dependency to 2.1.
|
671 |
|
"""
|
672 |
|
json_str = json.dumps(value, cls=DjangoJSONEncoder).translate(_json_script_escapes)
|
673 |
|
return format_html('<script id="{}" type="application/json">{}</script>', element_id, mark_safe(json_str))
|
674 |
|
|
675 |
|
|
676 |
652 |
@register.filter(is_safe=False)
|
677 |
653 |
def phonenumber_fr(value, separator=' '):
|
678 |
654 |
DROMS = ('262', '508', '590', '594', '596')
|