~ubuntu-branches/ubuntu/natty/moin/natty-updates

« back to all changes in this revision

Viewing changes to MoinMoin/action/rss_rc.py

  • Committer: Bazaar Package Importer
  • Author(s): Jonas Smedegaard
  • Date: 2008-06-22 21:17:13 UTC
  • mto: This revision was merged to the branch mainline in revision 18.
  • Revision ID: james.westby@ubuntu.com-20080622211713-inlv5k4eifxckelr
ImportĀ upstreamĀ versionĀ 1.7.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
24
24
    """ Send recent changes as an RSS document
25
25
    """
26
26
    if not wikixml.ok:
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.")
29
30
        return
30
31
 
33
34
    # get params
34
35
    items_limit = 100
35
36
    try:
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
40
41
        max_items = 15
41
42
    try:
42
 
        unique = int(request.values.get('unique', 0))
 
43
        unique = int(request.form.get('unique', [0])[0])
43
44
    except ValueError:
44
45
        unique = 0
45
46
    try:
46
 
        diffs = int(request.values.get('diffs', 0))
 
47
        diffs = int(request.form.get('diffs', [0])[0])
47
48
    except ValueError:
48
49
        diffs = 0
49
50
    ## ddiffs inserted by Ralf Zosel <ralf@zosel.com>, 04.12.2003
50
51
    try:
51
 
        ddiffs = int(request.values.get('ddiffs', 0))
 
52
        ddiffs = int(request.form.get('ddiffs', [0])[0])
52
53
    except ValueError:
53
54
        ddiffs = 0
54
55
 
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"])
89
90
        else:
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"])
95
96
        else:
96
 
            request.status_code = 304
 
97
            request.emit_http_headers(["Status: 304 Not modified"])
97
98
    else:
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)
101
102
 
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,
 
106
                       "Etag: %s" % etag, ]
106
107
 
107
108
        # send the generated XML document
108
 
        baseurl = request.url_root
 
109
        request.emit_http_headers(httpheaders)
 
110
 
 
111
        baseurl = request.getBaseURL()
 
112
        if not baseurl.endswith('/'):
 
113
            baseurl += '/'
109
114
 
110
115
        logo = re.search(r'src="([^"]*)"', cfg.logo_string)
111
116
        if logo:
134
139
 
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(),
138
143
            })
139
144
        handler.simpleNode('title', cfg.sitename)
140
145
        page = Page(request, pagename)