#!/usr/bin/env python import logging from launchpadlib.launchpad import Launchpad launchpad = Launchpad.login_with('add-milestone', 'production') def addMilestoneToProject(project, milestone_name, date_targeted): milestone = project.getMilestone(name=milestone_name) if milestone is None: logging.info( "Creating milestone %s/%s..." % (project.name, milestone_name)) milestone = project.development_focus.newMilestone( name=milestone_name, date_targeted=date_targeted) else: logging.info( "Updating milestone %s/%s..." % (project.name, milestone_name)) milestone.date_targeted = date_targeted milestone.lp_save() if __name__ == '__main__': import sys project_name = sys.argv[1] milestone_name = sys.argv[2] if len(sys.argv) > 3: date_targeted = sys.argv[3] else: date_targeted = None logging.basicConfig(level=logging.INFO) matching_project = launchpad.projects[project_name] if matching_project is None: logging.error("No projects matching '%s' found." % project_name) sys.exit(1) if matching_project.resource_type_link.endswith('#project_group'): logging.info("Found project group '%s'...", matching_project.title) projects = matching_project.projects elif matching_project.resource_type_link.endswith('#project'): logging.info("Found project '%s'...", matching_project.title) projects = [matching_project] elif matching_project.resource_type_link.endswith('#distribution'): logging.error( "'%s' is a distribution, and distributions are not supported." % ( project_name)) sys.exit(2) for subproject in projects: addMilestoneToProject(subproject, milestone_name, date_targeted)