[Python-checkins] r71050 - tracker/instances/python-dev/scripts/close-pending

sean.reifschneider python-checkins at python.org
Thu Apr 2 17:25:05 CEST 2009


Author: sean.reifschneider
Date: Thu Apr  2 17:25:05 2009
New Revision: 71050

Log:
Adding a script that will close pending issues within a date range.


Added:
   tracker/instances/python-dev/scripts/close-pending   (contents, props changed)

Added: tracker/instances/python-dev/scripts/close-pending
==============================================================================
--- (empty file)
+++ tracker/instances/python-dev/scripts/close-pending	Thu Apr  2 17:25:05 2009
@@ -0,0 +1,80 @@
+#!/usr/bin/python
+# Make sure you are using the python that has the roundup runtime used by the
+# tracker. Requires Python 2.3 or later.
+#
+# Based on roundup-summary script to create a tracker summary by
+# Richard Jones and Paul Dubois
+#
+# Changed into close-pending script by Sean Reifschneider, 2009.
+
+import sys, math
+
+# kludge
+sys.path.insert(1,'/home/roundup/roundup/lib/python2.4/site-packages')
+#
+import roundup
+import roundup.date, roundup.instance
+import optparse , datetime
+import cStringIO, MimeWriter, smtplib
+from roundup.mailer import SMTPConnection
+
+### CONFIGURATION
+# Roundup date range, pending issues that don't have activity in this
+# date range will be set to "closed" status.
+expireDates = ';-2w'
+
+##### END CONFIGURATION
+
+usage = """%prog trackerHome
+                             [--expire-dates 'date1;date2']
+                        # for maintainers
+                             [--DEBUG]
+         dates is a roundup date range such as:
+            '-1w;' -- newer than a week
+
+         Be sure to protect commas and semicolons from the shell with quotes!
+         Execute %prog --help for detailed help
+"""
+#### Options
+parser = optparse.OptionParser(usage=usage)
+parser.add_option('-e','--expire-dates', dest='expire_dates',
+   default=expireDates, metavar="'expire_dates;'",
+   help="""Specification for range of dates, such as: \
+';-1w'    -- Older than 1 week;
+';-1y'    -- Older than 1 year""")
+
+#### Get the command line args:
+(options, args) = parser.parse_args()
+
+if len(args) != 1:
+    parser.error("""Incorrect number of arguments;
+                    you must supply a tracker home.""")
+instanceHome = args[0]
+
+instance = roundup.instance.open(instanceHome)
+db = instance.open('admin')
+
+pendingID = db.status.lookup('pending')
+expireIdList = db.issue.filter(None,
+        { 'activity' : options.expire_dates, 'status' : pendingID })
+
+messageBody = (
+'This issue is being automatically closed due to inactivity while it is in '
+'the pending state.  If you are able to provide further information to help '
+'move this along, please update the ticket (which will re-open it).')
+
+closedID = db.status.lookup('closed')
+for issueID in expireIdList:
+    #print 'Closing issue "%s" with activity "%s"' % ( issueID,
+    #        db.issue.get(issueID, 'activity'))
+
+    messages = db.issue.get(issueID, 'messages')
+    msgID = db.msg.create(author = db.getuid(),
+            summary = 'Automatically closing pending issue',
+            content = messageBody)
+    messages.append(msgID)
+
+    db.issue.set(issueID, status = closedID, messages = messages)
+
+db.commit()
+sys.exit(0)


More information about the Python-checkins mailing list