Coverage for /var/srv/projects/api.amasfac.comuna18.com/tmp/venv/lib/python3.9/site-packages/django/template/loader.py: 14%

32 statements  

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

1from . import engines 

2from .exceptions import TemplateDoesNotExist 

3 

4 

5def get_template(template_name, using=None): 

6 """ 

7 Load and return a template for the given name. 

8 

9 Raise TemplateDoesNotExist if no such template exists. 

10 """ 

11 chain = [] 

12 engines = _engine_list(using) 

13 for engine in engines: 

14 try: 

15 return engine.get_template(template_name) 

16 except TemplateDoesNotExist as e: 

17 chain.append(e) 

18 

19 raise TemplateDoesNotExist(template_name, chain=chain) 

20 

21 

22def select_template(template_name_list, using=None): 

23 """ 

24 Load and return a template for one of the given names. 

25 

26 Try names in order and return the first template found. 

27 

28 Raise TemplateDoesNotExist if no such template exists. 

29 """ 

30 if isinstance(template_name_list, str): 

31 raise TypeError( 

32 "select_template() takes an iterable of template names but got a " 

33 "string: %r. Use get_template() if you want to load a single " 

34 "template by name." % template_name_list 

35 ) 

36 

37 chain = [] 

38 engines = _engine_list(using) 

39 for template_name in template_name_list: 

40 for engine in engines: 

41 try: 

42 return engine.get_template(template_name) 

43 except TemplateDoesNotExist as e: 

44 chain.append(e) 

45 

46 if template_name_list: 

47 raise TemplateDoesNotExist(", ".join(template_name_list), chain=chain) 

48 else: 

49 raise TemplateDoesNotExist("No template names provided") 

50 

51 

52def render_to_string(template_name, context=None, request=None, using=None): 

53 """ 

54 Load a template and render it with a context. Return a string. 

55 

56 template_name may be a string or a list of strings. 

57 """ 

58 if isinstance(template_name, (list, tuple)): 

59 template = select_template(template_name, using=using) 

60 else: 

61 template = get_template(template_name, using=using) 

62 return template.render(context, request) 

63 

64 

65def _engine_list(using=None): 

66 return engines.all() if using is None else [engines[using]]