Ticket #623: django_ticket_623_patch

File django_ticket_623_patch, 2.2 KB (added by L.Plant.98@…, 19 years ago)

Patch to implement this ticket

Line 
1Index: core/defaulttags.py
2===================================================================
3--- core/defaulttags.py (revision 854)
4+++ core/defaulttags.py (working copy)
5@@ -1,7 +1,9 @@
6 "Default tags used by the template system, available to all templates."
7
8+import os
9 import sys
10 import template
11+import template_file
12
13 class CommentNode(template.Node):
14 def render(self, context):
15@@ -210,14 +212,20 @@
16 self.filepath, self.parsed = filepath, parsed
17
18 def render(self, context):
19- if not include_is_allowed(self.filepath):
20- return '' # Fail silently for invalid includes.
21- try:
22- fp = open(self.filepath, 'r')
23- output = fp.read()
24- fp.close()
25- except IOError:
26- output = ''
27+ if not os.path.isabs(self.filepath):
28+ try:
29+ output = template_file.load_template_source(self.filepath)
30+ except template.TemplateDoesNotExist:
31+ return '' # Fail silently for non-existant templates
32+ else:
33+ if not include_is_allowed(self.filepath):
34+ return '' # Fail silently for invalid includes.
35+ try:
36+ fp = open(self.filepath, 'r')
37+ output = fp.read()
38+ fp.close()
39+ except IOError:
40+ output = ''
41 if self.parsed:
42 try:
43 t = template.Template(output)
44@@ -586,11 +594,17 @@
45 Output the contents of a given file into the page.
46
47 Like a simple "include" tag, the ``ssi`` tag includes the contents
48- of another file -- which must be specified using an absolute page --
49- in the current page::
50+ of another file in the current page. The file must be specified
51+ as either an absolute path (in which case the path must be in the
52+ ALLOWED_INCLUDE_ROOTS setting in settings/main.py)::
53
54 {% ssi /home/html/ljworld.com/includes/right_generic.html %}
55
56+ ... or as a relative path to a template file as per a call to
57+ template_loader.get_template()::
58+
59+ {% ssi news/right_generic %}
60+
61 If the optional "parsed" parameter is given, the contents of the included
62 file are evaluated as template code, with the current context::
63
Back to Top