mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 15:27:13 +03:00
[PATCH] Add RSS support to hgweb
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 [PATCH] Add RSS support to hgweb From: Goffredo Baroncelli <kreijack@libero.it> with the two small patches below, now hgweb can act as feed source. Two kinds ofobjects can be tracked: the changelong and the files. This can be useful if anyone would track the changes of a file ( and because git has it, mercurial have to has ). To check the changelog the url is http://127.0.0.1:8000/pippo.pluto?cmd=changelog;style=rss To check a file ( the mercurial/hgweb.py for examples ) the url is http://127.0.0.1:8000/?cmd=filelog;file=mercurial/hgweb.py;filenode=0;style=rss The first patch adds a new filter for the template: the filter is named rfc822date, and translates the date from the touple format to a rfc822 style date. The second patch adds the templates needed to create the rss pages. Tested with akgregator ( kde ). [tweaked by mpm: add Content-type: text/xml add support for URL to header() add header with link and content type add RSS links on the normal pages] manifest hash: 170c03d50490d7160097f59abdde1a5073d2ba82 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (GNU/Linux) iD8DBQFCyFmLywK+sNU5EO8RApkrAKCYF/vZ3DwdMXPBds2LxGEX8+tK5QCfTeOc ZhPN8Xjt2cD3wMbNXMcoNSo= =COlM -----END PGP SIGNATURE-----
This commit is contained in:
parent
4acd72ad9f
commit
f1ebc0d231
@ -108,6 +108,12 @@ class templater:
|
||||
tmpl = self.cache[t] = file(self.map[t]).read()
|
||||
return template(tmpl, self.filters, **map)
|
||||
|
||||
def rfc822date(x):
|
||||
month= [None,"Jan", "Feb", "Mar", "Apr", "May", "Jun",
|
||||
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
|
||||
yyyy,mon,dd,hh,mm,ss,wd,x,y = time.gmtime(x)
|
||||
return "%d %s %d %d:%d:%d"%(dd, month[mon], yyyy, hh, mm, ss)
|
||||
|
||||
class hgweb:
|
||||
maxchanges = 10
|
||||
maxfiles = 10
|
||||
@ -127,7 +133,8 @@ class hgweb:
|
||||
"obfuscate": obfuscate,
|
||||
"short": (lambda x: x[:12]),
|
||||
"firstline": (lambda x: x.splitlines(1)[0]),
|
||||
"permissions": (lambda x: x and "-rwxr-xr-x" or "-rw-r--r--")
|
||||
"permissions": (lambda x: x and "-rwxr-xr-x" or "-rw-r--r--"),
|
||||
"rfc822date": rfc822date,
|
||||
}
|
||||
|
||||
def refresh(self):
|
||||
@ -217,7 +224,12 @@ class hgweb:
|
||||
yield diffblock(mdiff.unidiff(to, date1, tn, date2, f), f, tn)
|
||||
|
||||
def header(self):
|
||||
yield self.t("header", repo = self.reponame)
|
||||
port = os.environ["SERVER_PORT"]
|
||||
port = port != "80" and (":" + port) or ""
|
||||
self.url = "http://%s%s%s" % \
|
||||
(os.environ["SERVER_NAME"], port, os.environ["REQUEST_URI"])
|
||||
|
||||
yield self.t("header", repo = self.reponame, url = self.url)
|
||||
|
||||
def footer(self):
|
||||
yield self.t("footer", repo = self.reponame)
|
||||
@ -729,6 +741,9 @@ def server(path, name, templates, address, port):
|
||||
env = {}
|
||||
env['GATEWAY_INTERFACE'] = 'CGI/1.1'
|
||||
env['REQUEST_METHOD'] = self.command
|
||||
env['SERVER_NAME'] = self.server.server_name
|
||||
env['SERVER_PORT'] = str(self.server.server_port)
|
||||
env['REQUEST_URI'] = "/"
|
||||
if query:
|
||||
env['QUERY_STRING'] = query
|
||||
host = self.address_string()
|
||||
|
6
templates/changelog-rss.tmpl
Normal file
6
templates/changelog-rss.tmpl
Normal file
@ -0,0 +1,6 @@
|
||||
#header#
|
||||
<title>#repo|escape# Changelog</title>
|
||||
<description>#repo|escape# Changelog</description>
|
||||
#entries#
|
||||
</channel>
|
||||
</rss>
|
@ -6,6 +6,7 @@
|
||||
<div class="buttons">
|
||||
<a href="?cmd=tags">tags</a>
|
||||
<a href="?cmd=manifest;manifest=#manifest#;path=/">manifest</a>
|
||||
<a href="?cmd=changelog;style=rss">rss</a>
|
||||
</div>
|
||||
|
||||
<h2>changelog for #repo|escape#</h2>
|
||||
|
7
templates/changelogentry-rss.tmpl
Normal file
7
templates/changelogentry-rss.tmpl
Normal file
@ -0,0 +1,7 @@
|
||||
<item>
|
||||
<title>#desc|firstline|escape#</title>
|
||||
<link>http://127.0.0.1:8000/?cmd=changeset;node=#node#"</link>
|
||||
<description>#desc|escape|addbreaks#</description>
|
||||
<author>#author|obfuscate#</author>
|
||||
<pubDate>#date|rfc822date#</pubDate>
|
||||
</item>
|
6
templates/filelog-rss.tmpl
Normal file
6
templates/filelog-rss.tmpl
Normal file
@ -0,0 +1,6 @@
|
||||
#header#
|
||||
<title>#repo|escape#: #file# history</title>
|
||||
<description>#file# revision history</description>
|
||||
#entries#
|
||||
</channel>
|
||||
</rss>
|
@ -8,6 +8,7 @@
|
||||
<a href="?cmd=tags">tags</a>
|
||||
<a href="?cmd=file;file=#file#;filenode=#filenode#">file</a>
|
||||
<a href="?cmd=annotate;file=#file#;filenode=#filenode#">annotate</a>
|
||||
<a href="?cmd=filelog;file=#file#;filenode=0;style=rss">rss</a>
|
||||
</div>
|
||||
|
||||
<h2>#file# revision history</h2>
|
||||
|
7
templates/filelogentry-rss.tmpl
Normal file
7
templates/filelogentry-rss.tmpl
Normal file
@ -0,0 +1,7 @@
|
||||
<item>
|
||||
<title>#desc|firstline|escape#</title>
|
||||
<link>http://127.0.0.1:8000/?cmd=file;file=#file#;filenode=#filenode#"</link>
|
||||
<description>#desc|escape|addbreaks#</description>
|
||||
<author>#author|obfuscate#</author>
|
||||
<pubDate>#date|rfc822date#</pubDate>>
|
||||
</item>
|
6
templates/header-rss.tmpl
Normal file
6
templates/header-rss.tmpl
Normal file
@ -0,0 +1,6 @@
|
||||
Content-type: text/xml
|
||||
|
||||
<rss version="2.0">
|
||||
<channel>
|
||||
<link>#url#</link>
|
||||
<language>en-us</language>
|
5
templates/map-rss
Normal file
5
templates/map-rss
Normal file
@ -0,0 +1,5 @@
|
||||
header = header-rss.tmpl
|
||||
changelog = changelog-rss.tmpl
|
||||
changelogentry = changelogentry-rss.tmpl
|
||||
filelog = filelog-rss.tmpl
|
||||
filelogentry = filelogentry-rss.tmpl
|
Loading…
Reference in New Issue
Block a user