Author: jross
Date: Fri Sep 6 12:20:05 2013
New Revision: 1520556
URL: http://svn.apache.org/r1520556
Log:
QPID-4990: Use the jira rest api instead of the rss api to generate release
notes
Removed:
qpid/site/python/transom/jira.py
qpid/site/scripts/gen-jiropticon
Modified:
qpid/site/python/transom/generate.py
Modified: qpid/site/python/transom/generate.py
URL:
http://svn.apache.org/viewvc/qpid/site/python/transom/generate.py?rev=1520556&r1=1520555&r2=1520556&view=diff
==============================================================================
--- qpid/site/python/transom/generate.py (original)
+++ qpid/site/python/transom/generate.py Fri Sep 6 12:20:05 2013
@@ -17,7 +17,9 @@
# under the License.
#
-import re, urllib
+import re
+import urllib
+import yaml
from pygments import highlight as pygments_highlight
from pygments.lexers import get_lexer_by_name
@@ -263,29 +265,21 @@ def gen_examples_index(release, input_na
## Release notes ##
def render_release_notes(project, release):
- db = _import_issues(project, release)
-
+ issues = _fetch_issues(project, release)
lines = list()
- conn = sqlite3.connect(db.path)
- try:
- lines.append("\n## New features and improvements\n")
- lines.append(_render_issues(conn, "New Feature", "Improvement"))
-
- lines.append("\n## Bugs fixed\n")
- lines.append(_render_issues(conn, "Bug"))
-
- lines.append("\n## Tasks\n")
- lines.append(_render_issues(conn, "Task"))
- finally:
- conn.close()
+ lines.append("\n## New features and improvements\n")
+ lines.append(_render_issues(issues, "New Feature", "Improvement"))
- return "\n".join(lines)
+ lines.append("\n## Bugs fixed\n")
+ lines.append(_render_issues(issues, "Bug"))
+
+ lines.append("\n## Tasks\n")
+ lines.append(_render_issues(issues, "Task"))
-def _import_issues(project, release):
- xml_path = get_entry_path("issues.xml")
- db_path = get_entry_path("issues.db")
+ return "\n".join(lines)
+def _fetch_issues(project, release):
query = list()
query.append("project = '{}'".format(project))
@@ -298,44 +292,55 @@ def _import_issues(project, release):
args = devel_version, release
query.append("fixVersion in ('{}', '{}')".format(*args))
query.append("fixVersion != '{}'".format(prev_version))
+ query.append("resolution = 'fixed'")
else:
query.append("fixVersion = '{}'".format(release))
query = " and ".join(query)
+ query = "{} order by key asc".format(query)
- params = urllib.urlencode({"jqlQuery": query})
- url =
"https://issues.apache.org/jira/sr/jira.issueviews:searchrequest-xml/temp/SearchRequest.xml?{}".format(params)
+ page_size = 100
- urllib.urlretrieve(url, xml_path)
+ params = {
+ "jql": query,
+ "fields": "summary,issuetype",
+ "maxResults": page_size,
+ }
- db = IssueDatabase(db_path)
- db.clear()
- db.init()
- db.update(xml_path)
-
- return db
-
-_issues_sql = """
-select link, key, summary
-from issues
-where type in ({}) and resolution = 'Fixed'
-order by key
-"""
+ issues = list()
+
+ for i in range(100):
+ params["startAt"] = i * page_size
-def _render_issues(conn, *types):
- cursor = conn.cursor()
- types_sql = ", ".join(["'{}'".format(x) for x in types])
- cursor.execute(_issues_sql.format(types_sql))
+ url = "https://issues.apache.org/jira/rest/api/2/search?{}".format \
+ (urllib.urlencode(params))
- records = cursor.fetchall()
+ filename, headers = urllib.urlretrieve(url)
- if not records:
+ with open(filename) as f:
+ data = yaml.load(f)
+
+ issues.extend(data["issues"])
+
+ if len(issues) >= int(data["total"]):
+ break
+
+ return issues
+
+def _render_issues(issues, *types):
+ filtered_issues = [x for x in issues
+ if x["fields"]["issuetype"]["name"] in types]
+
+ if not filtered_issues:
return "<div class=\"none\">None</div>"
lines = list()
- for record in records:
- args = escape_html(record[1]), record[0], escape_html(record[2])
- lines.append(" - [{}]({}) - {}".format(*args))
+ for issue in filtered_issues:
+ key = escape_html(issue["key"])
+ url = "https://issues.apache.org/jira/browse/{}".format(key)
+ summary = escape_html(issue["fields"]["summary"])
+
+ lines.append(" - [{}]({}) - {}".format(key, url, summary))
return "\n".join(lines)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]