24
24
""" Send recent changes as an RSS document
27
request.mimetype = 'text/plain'
27
httpheaders = ["Content-Type: text/plain; charset=%s" % config.charset]
28
request.emit_http_headers(httpheaders)
28
29
request.write("rss_rc action is not supported because of missing pyxml module.")
36
max_items = int(request.values['items'])
37
max_items = int(request.form['items'][0])
37
38
max_items = min(max_items, items_limit) # not more than `items_limit`
38
39
except (KeyError, ValueError):
39
40
# not more than 15 items in a RSS file by default
42
unique = int(request.values.get('unique', 0))
43
unique = int(request.form.get('unique', [0])[0])
46
diffs = int(request.values.get('diffs', 0))
47
diffs = int(request.form.get('diffs', [0])[0])
49
50
## ddiffs inserted by Ralf Zosel <ralf@zosel.com>, 04.12.2003
51
ddiffs = int(request.values.get('ddiffs', 0))
52
ddiffs = int(request.form.get('ddiffs', [0])[0])
85
86
if request.if_modified_since == timestamp:
86
87
if request.if_none_match:
87
88
if request.if_none_match == etag:
88
request.status_code = 304
89
request.emit_http_headers(["Status: 304 Not modified"])
90
request.status_code = 304
91
request.emit_http_headers(["Status: 304 Not modified"])
91
92
elif request.if_none_match == etag:
92
93
if request.if_modified_since:
93
94
if request.if_modified_since == timestamp:
94
request.status_code = 304
95
request.emit_http_headers(["Status: 304 Not modified"])
96
request.status_code = 304
97
request.emit_http_headers(["Status: 304 Not modified"])
98
99
# generate an Expires header, using whatever setting the admin
99
100
# defined for suggested cache lifetime of the RecentChanges RSS doc
100
expires = time.time() + cfg.rss_cache
101
expires = timefuncs.formathttpdate(time.time() + cfg.rss_cache)
102
request.mimetype = 'application/rss+xml'
103
request.expires = expires
104
request.last_modified = lastmod
105
request.headers['Etag'] = etag
103
httpheaders = ["Content-Type: text/xml; charset=%s" % config.charset,
104
"Expires: %s" % expires,
105
"Last-Modified: %s" % timestamp,
107
108
# send the generated XML document
108
baseurl = request.url_root
109
request.emit_http_headers(httpheaders)
111
baseurl = request.getBaseURL()
112
if not baseurl.endswith('/'):
110
115
logo = re.search(r'src="([^"]*)"', cfg.logo_string)
135
140
# emit channel description
136
141
handler.startNode('channel', {
137
(handler.xmlns['rdf'], 'about'): request.url_root,
142
(handler.xmlns['rdf'], 'about'): request.getBaseURL(),
139
144
handler.simpleNode('title', cfg.sitename)
140
145
page = Page(request, pagename)