]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
add support to link to changelogs and pullrequests
authorMike Bayer <mike_mp@zzzcomputing.com>
Sun, 21 Oct 2012 21:26:10 +0000 (17:26 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sun, 21 Oct 2012 21:26:10 +0000 (17:26 -0400)
doc/build/builder/changelog.py
doc/build/conf.py

index 24ceaeaa3a9448bf5400e65ac212e2ae08705b3f..1d24d486ca901c4dbc9ff81bce84e1740c9953e5 100644 (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'
+        )
index 9e2749888a341c0b525d64d387ec220355a71def..b89b81c0e51b29bf79b208cba8fb4b8c57bbd4bd 100644 (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.