description="Usage: python milestone_maker -p <Project> -m <Milestone Name> -rm True|False (Default is false)" ) parser.add_argument("-p", "--project", type=str, help="Project Name", required=True) parser.add_argument("-m", "--milestone", type=str, help="New Milestone name", required=True) parser.add_argument("-rm", "--delete", type=bool, help="Delete the milestone", default=False, required=False) args = parser.parse_args() project_map = {} projects = fogbugz.listProjects() for item in projects.findAll("project"): proj_number = item.ixproject.string.encode("UTF-8") proj_name = item.sproject.string.encode("UTF-8") project_map.update({proj_name: proj_number}) milestone_map = {} milestones = fogbugz.listFixFors() for item in milestones.findAll("fixfor"): milestone_number = item.ixfixfor.string.encode("UTF-8") milestone_name = item.sfixfor.string.encode("UTF-8") milestone_map.update({milestone_name: milestone_number}) try: project_id = project_map[args.project] except KeyError: raise KeyError("Unknown Project Name. Project name must be case sensitive. ") if args.delete == True: try: milestone_id = milestone_map[args.milestone] except KeyError: raise KeyError("Milestone doesn't exist") milestone = fogbugz.editFixFor(ixfixfor=milestone_id, sfixfor=args.milestone, fAssignable=0)
parser.add_argument('-n','--n_variable', type=str, help='New Milestone name', required=True) args = parser.parse_args() fb = FogBugz("https://sailthru.fogbugz.com/") # To run this needs a d.txt file that contains the json of: {"login":"******","pass":"******"} with open('../d.txt') as json_data: data = json.load(json_data) login = data["login"] passw = data["pass"] fb.logon(login,passw) milestones = fb.listFixFors() #this is not being used now ... it gets the most current milestone... i could probably trash it.. milestone_dates, sep, tail = milestones.sfixfor.renderContents().partition('T') miled = milestones.findAll('dt',limit=2)[1] work = miled.renderContents().partition('T') milestone = work[0] milestone = milestone.replace("-","/") print milestone search = 'milestone'+':'+args.o_variable+' '+'status:open -status:Merged -milestone:Undecided Project:Sailthru' print search response = fb.search(q=search) for case in response.cases.childGenerator(): print case['ixbug']