add support to link to changelogs and pullrequests

This commit is contained in:
Mike Bayer
2012-10-21 17:26:10 -04:00
parent 39fdc1e21a
commit e5fb4fec47
2 changed files with 41 additions and 19 deletions
+38 -18
View File
@@ -143,29 +143,39 @@ class ChangeLogDirective(EnvDirective, Directive):
topsection.append(nodes.Text("no release date"))
return topsection
def _render_rec(self, rec, section, cat, append_sec):
para = rec['node'].deepcopy()
#targetid = "%s-%d" % (self.type_, self.env.new_serialno(self.type_))
#targetnode = nodes.target('', '', ids=[targetid])
#para.insert(0, targetnode)
insert_ticket = nodes.paragraph('')
para.append(insert_ticket)
for i, ticket in enumerate(rec['tickets']):
if i > 0:
insert_ticket.append(nodes.Text(", ", ", "))
else:
insert_ticket.append(nodes.Text(" ", " "))
refuri = self.env.config.changelog_render_ticket
if refuri is not None:
refuri = refuri % ticket
insert_ticket.append(
nodes.reference('', '',
nodes.Text("#%s" % ticket, "#%s" % ticket),
refuri=refuri
)
)
else:
insert_ticket.append(
nodes.Text("#%s" % ticket, "#%s" % ticket)
)
i = 0
for collection, render, prefix in (
(rec['tickets'], self.env.config.changelog_render_ticket, "#%s"),
(rec['pullreq'], self.env.config.changelog_render_pullreq,
"pull request %s"),
(rec['changeset'], self.env.config.changelog_render_changeset, "r%s"),
):
for refname in collection:
if i > 0:
insert_ticket.append(nodes.Text(", ", ", "))
else:
insert_ticket.append(nodes.Text(" ", " "))
i += 1
if render is not None:
refuri = render % refname
node = nodes.reference('', '',
nodes.Text(prefix % refname, prefix % refname),
refuri=refuri
)
else:
node = nodes.Text(prefix % refname, prefix % refname)
insert_ticket.append(node)
if rec['tags']:
tag_node = nodes.strong('',
@@ -199,6 +209,8 @@ class ChangeDirective(EnvDirective, Directive):
rec = {
'tags': set(_comma_list(content.get('tags', ''))).difference(['']),
'tickets': set(_comma_list(content.get('tickets', ''))).difference(['']),
'pullreq': set(_comma_list(content.get('pullreq', ''))).difference(['']),
'changeset': set(_comma_list(content.get('changeset', ''))).difference(['']),
'node': p,
'type': self.type_,
"title": content.get("title", None)
@@ -227,3 +239,11 @@ def setup(app):
None,
'env'
)
app.add_config_value("changelog_render_pullreq",
None,
'env'
)
app.add_config_value("changelog_render_changeset",
None,
'env'
)
+3 -1
View File
@@ -60,8 +60,10 @@ changelog_sections = ["general", "orm", "orm declarative", "orm querying", \
# tags to sort on inside of sections
changelog_inner_tag_sort = ["feature", "bug", "moved", "changed", "removed"]
# how to render a ticket link
# how to render changelog links
changelog_render_ticket = "http://www.sqlalchemy.org/trac/ticket/%s"
changelog_render_pullreq = "https://bitbucket.org/sqlalchemy/sqlalchemy/pull-request/%s"
changelog_render_changeset = "http://www.sqlalchemy.org/trac/changeset/%s"
# The encoding of source files.