Coverage for /var/srv/projects/api.amasfac.comuna18.com/tmp/venv/lib/python3.9/site-packages/django/templatetags/l10n.py: 38%

33 statements  

« prev     ^ index     » next       coverage.py v6.4.4, created at 2023-07-17 14:22 -0600

1from django.template import Library, Node, TemplateSyntaxError 

2from django.utils import formats 

3 

4register = Library() 

5 

6 

7@register.filter(is_safe=False) 

8def localize(value): 

9 """ 

10 Force a value to be rendered as a localized value, 

11 regardless of the value of ``settings.USE_L10N``. 

12 """ 

13 return str(formats.localize(value, use_l10n=True)) 

14 

15 

16@register.filter(is_safe=False) 

17def unlocalize(value): 

18 """ 

19 Force a value to be rendered as a non-localized value, 

20 regardless of the value of ``settings.USE_L10N``. 

21 """ 

22 return str(formats.localize(value, use_l10n=False)) 

23 

24 

25class LocalizeNode(Node): 

26 def __init__(self, nodelist, use_l10n): 

27 self.nodelist = nodelist 

28 self.use_l10n = use_l10n 

29 

30 def __repr__(self): 

31 return "<%s>" % self.__class__.__name__ 

32 

33 def render(self, context): 

34 old_setting = context.use_l10n 

35 context.use_l10n = self.use_l10n 

36 output = self.nodelist.render(context) 

37 context.use_l10n = old_setting 

38 return output 

39 

40 

41@register.tag("localize") 

42def localize_tag(parser, token): 

43 """ 

44 Force or prevents localization of values, regardless of the value of 

45 `settings.USE_L10N`. 

46 

47 Sample usage:: 

48 

49 {% localize off %} 

50 var pi = {{ 3.1415 }}; 

51 {% endlocalize %} 

52 """ 

53 use_l10n = None 

54 bits = list(token.split_contents()) 

55 if len(bits) == 1: 

56 use_l10n = True 

57 elif len(bits) > 2 or bits[1] not in ("on", "off"): 

58 raise TemplateSyntaxError("%r argument should be 'on' or 'off'" % bits[0]) 

59 else: 

60 use_l10n = bits[1] == "on" 

61 nodelist = parser.parse(("endlocalize",)) 

62 parser.delete_first_token() 

63 return LocalizeNode(nodelist, use_l10n)