X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=scripts%2Froundup-reminder;h=38ed9c34b2874624122396dfb7646d261cff6832;hb=840af79b7d2c41ed0dfd70b496b6b5f3ffefc510;hp=733d233a8f4b4d0fb792009ef30b1ce01e613f7c;hpb=3026636ec44af3e8bfa4f231be5f20e2c450a2ab;p=roundup.git diff --git a/scripts/roundup-reminder b/scripts/roundup-reminder index 733d233..38ed9c3 100755 --- a/scripts/roundup-reminder +++ b/scripts/roundup-reminder @@ -19,21 +19,17 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -# $Id: roundup-reminder,v 1.5 2003-02-06 05:43:49 richard Exp $ - ''' Simple script that emails all users of a tracker with the issues that are currently assigned to them. TODO: introduce some structure ;) TODO: possibly make this more general and configurable... - -Note: The instance that this script was designed for has a modified schema! - You will want to modify this script to customise it for your own schema! ''' import sys, cStringIO, MimeWriter, smtplib from roundup import instance, date +from roundup.mailer import SMTPConnection # open the instance if len(sys.argv) != 2: @@ -44,6 +40,18 @@ db = instance.open('admin') resolved_id = db.status.lookup('resolved') +def listCompare(x, y): + "compare two tuples such that order is positive on [0] and negative on [1]" + if x[0] < y[0]: + return -1 + if x[0] > y[0]: + return 1 + if x[1] > y[1]: + return -1 + if x[1] < y[1]: + return 1 + return 0 + # loop through all the users for user_id in db.user.list(): # make sure we care aboue this user @@ -57,16 +65,14 @@ for user_id in db.user.list(): # extract this user's issues l = [] for issue_id in db.issue.find(assignedto=user_id): - if db.issue.get(issue_id, 'status') == resolved_id: continue - timeliness_id = db.issue.get(issue_id, 'timeliness') - if timeliness_id: - timeliness = db.timeliness.get(timeliness_id, 'name') - else: - timeliness = '~~~' - l.append((timeliness, db.issue.get(issue_id, 'creation'), issue_id)) + if db.issue.get(issue_id, 'status') == resolved_id: + continue + order = db.priority.get(db.issue.get(issue_id, 'priority'), 'order') + l.append((order, db.issue.get(issue_id, 'activity'), + db.issue.get(issue_id, 'creation'), issue_id)) # sort the issues by timeliness and creation date - l.sort() + l.sort(listCompare) if not l: continue @@ -88,20 +94,25 @@ for user_id in db.user.list(): body = part.startbody('text/plain') # do the plain text bit - print >>body, 'Created ID Urgency Title' + print >>body, 'Created ID Activity Title' print >>body, '='*75 # '2 months 213 immediate cc_daemon barfage - for timeliness, creation_date, issue_id in l: + old_priority = None + for priority_order, activity_date, creation_date, issue_id in l: + priority = db.issue.get(issue_id, 'priority') + if (priority != old_priority): + old_priority = priority + print >>body, ' ', db.priority.get(priority,'name') # pretty creation - creation = (date.Date('.') - creation_date).pretty() + creation = (creation_date - date.Date('.')).pretty() if creation is None: creation = creation_date.pretty() - - if not timeliness: timeliness = '' + activity = (activity_date - date.Date('.')).pretty() title = db.issue.get(issue_id, 'title') - if len(title) > 52: title = title[:48] + ' ...' - print >>body, '%-11s %-4s %-9s %-52s'%(creation, issue_id, - timeliness, title) + if len(title) > 42: + title = title[:38] + ' ...' + print >>body, '%-11s %-4s %-9s %-42s'%(creation, issue_id, + activity, title) # some help to finish off print >>body, ''' @@ -124,19 +135,23 @@ and click on "My Issues". Do NOT respond to this message. 'whenever': ' bgcolor="#ffffff"', } print >>body, ''' - + ''' - for timeliness, creation_date, issue_id in l: + old_priority = None + for priority_order, activity_date, creation_date, issue_id in l: + priority = db.issue.get(issue_id,'priority') + if (priority != old_priority): + old_priority = priority + print >>body, ''%db.priority.get(priority,'name') creation = (date.Date('.') - creation_date).pretty() if creation is None: - creation = creation_date.pretty() - if not timeliness_id: timeliness_id = ' ' + creation = (creation_date - date.Date('.')).pretty() title = db.issue.get(issue_id, 'title') issue_id = '%s'%(db.config.TRACKER_WEB, issue_id, issue_id) - colour = colours.get(timeliness, '') - print >>body, ''' - '''%(colour, creation, issue_id, timeliness, title) + activity = (activity_date - date.Date('.')).pretty() + print >>body, ''' + '''%(creation, issue_id, activity, title) print >>body, '
Created ID Urgency Title
Created ID Activity Title
->->->%s
%s%s%s%s
%s%s%s%s
' print >>body, '''

To view or respond to any of the issues listed @@ -147,7 +162,7 @@ and click on "My Issues". Do NOT respond to this message. writer.lastpart() # all done, send! - smtp = smtplib.SMTP(db.config.MAILHOST) + smtp = SMTPConnection(db.config) smtp.sendmail(db.config.ADMIN_EMAIL, address, message.getvalue()) # vim: set filetype=python ts=4 sw=4 et si