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]

Reply via email to