# trac.py - A script to perform mass updates on trac tickets. # Requirements: python-offtrac and your project's trac must have the XML-RPC # plugin enabled. # Author: lmacken@redhat.com import sys import urllib from getpass import getuser, getpass from offtrac import TracServer class Trac(object): def __init__(self, username, password, project, baseurl='https://%s:%s@fedorahosted.org/%s/login/xmlrpc'): self.trac = TracServer(baseurl % (username, password, project)) def update_tickets(self, tickets, resolution='invalid'): for ticket in tickets: if '-' in ticket: start, end = ticket.split('-') for t in range(int(start), int(end)+1): self.update_ticket(t, resolution) else: self.update_ticket(ticket, resolution) def update_ticket(self, ticket, resolution): print "Marking ticket %s as %s" % (ticket, resolution) self.trac.update_ticket(ticket, resolution=resolution) if __name__ == '__main__': if len(sys.argv) < 2: print "Usage: %s [1-5] [6] [7] ..." % sys.argv[0] sys.exit(-1) project = raw_input('Fedora Hosted Project: ').strip() user = getuser() password = urllib.quote(getpass()) trac = Trac(user, password, project) trac.update_tickets(sys.argv[1:])