verify = True, headers = self.headers) def getXMLElementData(self, the_xml, tag_name): results = the_xml.getElementsByTagName(tag_name) if len(results) == 0: return "" elif results[0].firstChild == None: return "" else: return results[0].firstChild.data if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("token", help="Your Pivotal Tracker API Token from 'www.pivotaltracker.com/profile'") parser.add_argument("pid", help="Your Project ID (e.g. www.pivotaltracker.com/s/projects/<pid>)", type=int) parser.add_argument("-o", "--output", help="The HTML file you want to output to", default=None) args = parser.parse_args() api_token = args.token helper = PivotalAPIHelper(api_token) tracker = Tracker(helper) tracker.reloadDetailsOfProjects() pid = args.pid print('Getting all stories for project %s' % pid) project = Project(helper, pid) project.reinitialiseAllStories() project.reloadDetailsOfAllStories() story_renderer = StoryRenderer() story_renderer.render(project.stories.values(), file_name=args.output) # renderer needs a list of stories
task.complete = _task['complete'] story_tasks.append(task) story['tasks_list'] = story_tasks return story if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('username', help="Your Pivotal Tracker username") parser.add_argument('password', help="Your Pivotal Tracker password") parser.add_argument( "pid", help="Your Project ID (e.g. www.pivotaltracker.com/s/projects/<pid>)", type=int ) parser.add_argument( "-o", "--output", help="The HTML file you want to output to", default=None ) args = parser.parse_args() scraper = PivotalScraper() scraper.login(args.username, args.password) scraper.reloadStories(project_id=args.pid) stories = scraper.stories.values() story_renderer = StoryRenderer() story_renderer.render(stories, args.output)
help="Your Pivotal Tracker password", default=None ) args = parser.parse_args() print('Getting stories for project %s via API' % args.pid) api_parser = PivotalAPIParser() api_parser.login(args.token) api_parser.reloadStories(args.pid, args.since) if args.username <> None and args.password <> None: print('Getting stories for project %s via scraping' % args.pid) scraper = PivotalScraper() scraper.login(args.username, args.password) scraper.reloadStories(project_id=args.pid) # Scraped data doesn't pickup changes as quickly as the API. May result # in good data being overwritten. for story_id in api_parser.stories.keys(): if story_id in scraper.stories.keys(): extra_details = scraper.stories[story_id] for (k,v) in extra_details.iteritems(): api_parser.stories[story_id][k] = v story_renderer = StoryRenderer() stories = api_parser.stories.values() print('Sending %s stories to the renderer'%len(stories)) story_renderer.render(stories, file_name=args.output) # renderer needs a list of stories