def fetch_scrum(self, sprint_name, project_id=None, component_id=None): base_url = '%srepos/%s/%s/' % ( self.tracker.url, project_id, component_id, ) milestones_url = ''.join((base_url, 'milestones')) issues_url = ''.join((base_url, 'issues?')) milestones = self.fetch_milestones( milestones_url, ) if sprint_name not in milestones: raise FetcherBadDataError('There is no %s milestone' % sprint_name) opened_bugs_url = serialize_url( issues_url, **dict( milestone=milestones.get(sprint_name), state='open' ) ) closed_bugs_url = serialize_url( issues_url, **dict( milestone=milestones.get(sprint_name), state='closed' ) ) self.consume(RPC(url=opened_bugs_url)) self.consume(RPC(url=closed_bugs_url))
def fetch_scrum(self, sprint_name, project_id=None, component_id=None): base_url = '%srepos/%s/%s/' % (self.tracker.url, project_id, component_id) milestones_url = ''.join((base_url, 'milestones')) issues_url = ''.join((base_url, 'issues?')) if self.milestones is None: self.fetch_milestones(partial(self.fetch_scrum, sprint_name, project_id, component_id), milestones_url) elif self.milestones == {}: return self.fail('No milestones') else: opened_bugs_url = serialize_url( issues_url, **dict( milestone = self.milestones.get(sprint_name), state = 'open' ) ) closed_bugs_url = serialize_url( issues_url, **dict( milestone = self.milestones.get(sprint_name), state = 'closed' ) ) self.fetch(opened_bugs_url) self.fetch(closed_bugs_url)
def fetch_bugs_for_query(self, ticket_ids=None, project_selector=None, component_selector=None, version=None, resolved=False): if resolved: return super(GithubFetcher, self).fetch_bugs_for_query( ticket_ids, project_selector, component_selector, version, resolved, ) params = self.common_url_params() if ticket_ids: self._wanted_ticket_ids = ticket_ids if project_selector and component_selector: uri = self.tracker.url + "repos/%s/%s/issues?" % ( project_selector, component_selector[0], ) url = serialize_url(uri, **params) self.consume(RPC(url=url))
def fetch_bugs_for_query(self, ticket_ids=None, project_selector=None, component_selector=None, version=None, resolved=False): super(TracFetcher, self).fetch_bugs_for_query( ticket_ids, project_selector, component_selector, version, resolved, ) if resolved: params = self.resolved_common_url_params() else: params = self.common_url_params() if ticket_ids: params.update(id=[str(id) for id in ticket_ids]) elif project_selector: params.update(client_name=project_selector) if component_selector: params.update(component=component_selector) url = serialize_url(self.tracker.url + '/query?', **params) self.fetch(url)
def prepare_url(self, project_id='', endpoint='', params={}): tracker_url = self.tracker.url.replace('http://', 'https://') url = make_path(tracker_url, self.api_url, project_id, endpoint) if params: url += '?' url = serialize_url(url, **params) return url
def get_dependson_and_blocked_by(self): url = h.serialize_url('%s/show_bug.cgi?' % self.tracker.url, ctype='xml', id=self.bugs.keys(), field=['blocked', 'dependson', 'bug_id']) headers = self.get_headers() self.request(url, headers, partial(self.xml_response, self.parse_xml))
def fetch_post(self, url, params, on_success=None): if not on_success: on_success = self.responded url = url.encode('utf-8') body = h.serialize_url('', **params) headers = self.get_headers() self.request(url, headers, on_success, method='POST', body=body)
def fetch_scrum(self, sprint_name, project_id=None): if not self._custom_fields: url = '/api/v1/projects/%s/custom_field_values.json' % project_id url = str(make_path(self.tracker.url, url)) self.request( url, self.get_headers(), partial(self.responded, on_success=partial(self.parse_custom_fields, partial(self.fetch_scrum, sprint_name, project_id))), ) elif not self._milestones: url = '/api/v1/milestones.json' url = str(make_path(self.tracker.url, url)) self.request( url, self.get_headers(), partial(self.responded, on_success=partial(self.parse_milestones, partial(self.fetch_scrum, sprint_name, project_id))), ) else: url = self.api_url() + '?' milestone_id = self._milestones.get(sprint_name) if not milestone_id: flash('Wrong sprint name') self.fail('Wrong sprint name') else: conditions_string = 'milestone-eq-%s' % self._milestones[sprint_name] full_url = serialize_url(url, conditions_string=conditions_string) self.fetch(full_url)
def fetcher(self): params = self.resolved_common_url_params( ) if resolved else self.common_url_params() params.update( self.single_user_params() if single else self.all_users_params()) url = h.serialize_url(self.tracker.url + '/buglist.cgi?', **params) self.fetch(url)
def fetch_all_tickets(self, resolved=False): if resolved: return params = self.common_url_params() params.update(self.all_users_params()) url = serialize_url(self.tracker.url + 'issues?', **params) self.consume(RPC(url=url))
def fetcher(self): params = self.resolved_common_url_params() if resolved else self.common_url_params() params.update(self.single_user_params() if single else self.all_users_params()) if resolved: params['reporter'] = params['owner'] del params['owner'] url = serialize_url(self.tracker.url + '/query?', **params) self.fetch(url)
def fetch_all_resolved_tickets(self): if not self.unfuddle_data: self.get_data(self.fetch_all_resolved_tickets) else: url = self.api_url() + '?' conditions_string = '%s,%s' % (self.get_resolved_conditions(), self.get_user_conditions(all=True)) full_url = serialize_url(url, conditions_string=conditions_string) self.fetch(full_url)
def fetch_resolved_bugs_for_query(self, ticket_ids, project_selector, component_selector, version): url = self.api_url(project_selector) + '?' conditions_string = self.get_resolved_conditions() if ticket_ids: conditions_string += ',' + self.get_ticket_conditions(ticket_ids) full_url = serialize_url(url, conditions_string=conditions_string) self.fetch(full_url)
def fetcher(self): if resolved: # bitbucked doesn't have resolved not-closed self.success() return params = self.common_url_params() params.update(self.single_user_params() if single else self.all_users_params()) url = serialize_url(self.tracker.url + '/issues?', **params) self.fetch(url)
def bugzilla_new_ticket_url(tracker_url, project_selector, component_selector): params = {} if project_selector: params['product'] = project_selector if component_selector: params['component'] = component_selector return serialize_url(tracker_url + '/enter_bug.cgi?', **params)
def fetch_scrum(self, sprint_name, project_id=None): params = dict( ctype='csv', status_whiteboard_type='substring', status_whiteboard='s=%s' % sprint_name, bug_status=['NEW', 'ASSIGNED', 'REOPENED', 'UNCONFIRMED', 'CONFIRMED', 'WAITING', 'RESOLVED', 'VERIFIED', 'CLOSED'], ) url = h.serialize_url(self.tracker.url + '/buglist.cgi?', **params) self.fetch(url)
def trac_new_ticket_url(tracker_url, project_selector, component_selector): params = {} if project_selector: params["client_name"] = project_selector if component_selector: params["component"] = component_selector return serialize_url(tracker_url + "/newticket?", **params)
def trac_new_ticket_url(tracker_url, project_selector, component_selector): params = {} if project_selector: params['client_name'] = project_selector if component_selector: params['component'] = component_selector return serialize_url(tracker_url + '/newticket?', **params)
def fetch_all_tickets(self, resolved=False): params = self.resolved_common_url_params() \ if resolved else self.common_url_params() params.update(self.all_users_params()) url = '%s/buglist.cgi' % self.tracker.url body = h.serialize_url('', **params) rpc = RPC(url=url, method='POST', data=body) self.consume(rpc)
def fetch_bug_titles_and_depends_on(self, ticket_ids): params = dict( ctype='xml', field=['dependson', 'bug_id', 'short_desc', 'bug_severity', 'resolution'], id=[str(id) for id in ticket_ids], #bug_status=['NEW', 'ASSIGNED', 'REOPENED', 'UNCONFIRMED', 'RESOLVED', 'VERIFIED'] ) url = h.serialize_url(self.tracker.url + '/show_bug.cgi?', **params) headers = self.get_headers() self.request(url, headers, partial(self.xml_response, self.parse_response_of_bug_titles_and_depends_on))
def fetcher(self): params = self.resolved_common_url_params( ) if resolved else self.common_url_params() params.update( self.single_user_params() if single else self.all_users_params()) if resolved: params['reporter'] = params['owner'] del params['owner'] url = serialize_url(self.tracker.url + '/query?', **params) self.fetch(url)
def fetcher(self, ticket_ids, project_selector, component_selector, version): params = self.resolved_common_url_params() if resolved else self.common_url_params() if ticket_ids: params.update(id=[str(id) for id in ticket_ids]) else: if project_selector: params.update(client_name=project_selector) if component_selector: params.update(component=component_selector) url = serialize_url(self.tracker.url + '/query?', **params) self.fetch(url)
def get_status_of_dependson_and_blocked_bugs(self): bug_ids = self.dependson_and_blocked_status.keys() if bug_ids: url = h.serialize_url('%s/show_bug.cgi?' % self.tracker.url, ctype='xml', id=bug_ids, field=['bug_status', 'bug_id', 'short_desc']) headers = self.get_headers() self.request(url, headers, partial(self.xml_response, self.parse_dependson_and_blocked_bugs_xml)) else: self.success()
def fetcher(self): if resolved: # Github doesn't have open resolved self.success() return params = self.common_url_params() extra = self.single_user_params() if single else self.all_users_params() params.update(extra) url = serialize_url(self.tracker.url + 'issues?', **params) self.fetch(url)
def fetch_all_tickets(self, resolved=False): if resolved: params = self.resolved_common_url_params() else: params = self.common_url_params() params.update(self.all_users_params()) if resolved: params['reporter'] = params['owner'] del params['owner'] url = serialize_url(self.tracker.url + '/query?', **params) self.fetch(url)
def fetch_scrum(self, sprint_name, project_id=None): params = dict( ctype='csv', status_whiteboard_type='substring', status_whiteboard='s=%s' % sprint_name, bug_status=[ 'NEW', 'ASSIGNED', 'REOPENED', 'UNCONFIRMED', 'CONFIRMED', 'WAITING', 'RESOLVED', 'VERIFIED', 'CLOSED' ], ) url = h.serialize_url(self.tracker.url + '/buglist.cgi?', **params) self.fetch(url)
def fetcher(self, ticket_ids, project_selector, component_selector, version): params = dict(ctype='csv') params.update(conditions) if ticket_ids: params.update(bug_id=','.join(str(id) for id in ticket_ids)) else: if project_selector: params.update(product=project_selector) if component_selector: params.update(component=component_selector) url = h.serialize_url(self.tracker.url + '/buglist.cgi?', **params) self.fetch(url)
def fetcher(self, ticket_ids, project_selector, component_selector, version): params = self.resolved_common_url_params( ) if resolved else self.common_url_params() if ticket_ids: params.update(id=[str(id) for id in ticket_ids]) else: if project_selector: params.update(client_name=project_selector) if component_selector: params.update(component=component_selector) url = serialize_url(self.tracker.url + '/query?', **params) self.fetch(url)
def fetcher(self): if resolved: # Github doesn't have open resolved self.success() return params = self.common_url_params() extra = self.single_user_params() if single else self.all_users_params( ) params.update(extra) url = serialize_url(self.tracker.url + 'issues?', **params) self.fetch(url)
def fetcher(self, ticket_ids, project_selector, component_selector, version): params = dict( ctype='csv' ) params.update(conditions) if ticket_ids: params.update(bug_id=','.join(str(id) for id in ticket_ids)) else: if project_selector: params.update(product=project_selector) if component_selector: params.update(component=component_selector) url = h.serialize_url(self.tracker.url + '/buglist.cgi?', **params) self.fetch(url)
def get_status_of_dependson_and_blocked_bugs(self): bug_ids = self.dependson_and_blocked_status.keys() if bug_ids: url = h.serialize_url('%s/show_bug.cgi?' % self.tracker.url, ctype='xml', id=bug_ids, field=['bug_status', 'bug_id', 'short_desc']) headers = self.get_headers() self.request( url, headers, partial(self.xml_response, self.parse_dependson_and_blocked_bugs_xml)) else: self.success()
def fetch_user_tickets(self, resolved=False): url = self.api_url() + '?' if resolved: conditions_string = '%s,%s' % ( self.get_user_conditions(), self.get_resolved_conditions(), ) else: conditions_string = '%s,%s' % ( self.get_user_conditions(), self.get_unresolved_conditions(), ) full_url = serialize_url(url, conditions_string=conditions_string) rpc = self.fetch(full_url) self.consume(rpc)
def fetch_scrum(self, sprint_name, project_id=None, component_id=None): base_url = '%srepos/%s/%s/' % (self.tracker.url, project_id, component_id) milestones_url = ''.join((base_url, 'milestones')) issues_url = ''.join((base_url, 'issues?')) if self.milestones is None: self.fetch_milestones( partial(self.fetch_scrum, sprint_name, project_id, component_id), milestones_url) elif self.milestones == {}: return self.fail('No milestones') else: opened_bugs_url = serialize_url( issues_url, **dict(milestone=self.milestones.get(sprint_name), state='open')) closed_bugs_url = serialize_url( issues_url, **dict(milestone=self.milestones.get(sprint_name), state='closed')) self.fetch(opened_bugs_url) self.fetch(closed_bugs_url)
def fetcher(self, ticket_ids, project_selector, component_selector): if resolved: # bitbucked doesn't have resolved not-closed self.success() return params = self.common_url_params() if ticket_ids: # query not supported by bitbucket - we will do it manually later self.wanted_ticket_ids = ticket_ids else: # project selector is not supported in bitbucket if component_selector: params.update(component=component_selector) url = serialize_url(self.tracker.url + '/issues?', **params) self.fetch(url)
def fetch_scrum(self, sprint_name, project_id=None): if not self.unfuddle_data: self.get_data(partial(self.fetch_scrum, sprint_name, project_id=project_id)) else: projects_reversed = dict((v, k) for k, v in self.unfuddle_data["projects"].iteritems()) project_id = projects_reversed[project_id] url = self.api_url() + "?" milestone_id = self.unfuddle_data["milestones"].get((str(project_id), sprint_name)) if not milestone_id: flash("Wrong sprint name") self.fail("Wrong sprint name") else: conditions_string = "milestone-eq-%s" % milestone_id full_url = serialize_url(url, conditions_string=conditions_string) self.fetch(full_url)
def fetch_scrum(self, sprint_name, project_id=None, component_id=None): params = dict( ctype='csv', status_whiteboard_type='regexp', status_whiteboard=self.SPRINT_REGEX % sprint_name, bug_status=[ 'NEW', 'ASSIGNED', 'REOPENED', 'UNCONFIRMED', 'CONFIRMED', 'WAITING', 'RESOLVED', 'VERIFIED', 'CLOSED' ], ) url = '%s/buglist.cgi' % self.tracker.url body = h.serialize_url('', **params) rpc = RPC(url=url, method='POST', data=body) self.consume(rpc)
def get_status_of_dependson_and_blocked_bugs(self): for bug in self.bugs.itervalues(): self.dependson_and_blocked_status.update(bug.dependson) self.dependson_and_blocked_status.update(bug.blocked) bug_ids = self.dependson_and_blocked_status.keys() if bug_ids: url = serialize_url('%s/query?' % self.tracker.url, col=['id', 'status', 'summary'], id=','.join(bug_ids), format='csv') headers = self.get_headers() self.request(url, headers, partial(self.parse_response, self.parse_dependson_and_blocked_bugs_csv)) else: self.success()
def fetch_dependons_for_ticket_ids(self, ticket_ids): params = dict( ctype='xml', field=['dependson', 'bug_id', 'bug_severity', 'resolution'] ) if ticket_ids: ids = [] for id in ticket_ids: if id: ids.append(str(id)) params.update(id=ids) if not ids: return self.fail(FetchException(u'Ticket ids list is empty')) url = h.serialize_url(self.tracker.url + '/show_bug.cgi?', **params) headers = self.get_headers() self.request(url, headers, partial(self.xml_response, self.parse_response_of_dependons_for_ticket_ids))
def fetch_bug_titles_and_depends_on(self, ticket_ids): params = dict( ctype='xml', field=[ 'dependson', 'bug_id', 'short_desc', 'bug_severity', 'resolution' ], id=[str(id) for id in ticket_ids], #bug_status=['NEW', 'ASSIGNED', 'REOPENED', 'UNCONFIRMED', 'RESOLVED', 'VERIFIED'] ) url = h.serialize_url(self.tracker.url + '/show_bug.cgi?', **params) headers = self.get_headers() self.request( url, headers, partial(self.xml_response, self.parse_response_of_bug_titles_and_depends_on))
def fetcher(self, ticket_ids, project_selector, component_selector, version): if resolved: # bitbucked doesn't have resolved not-closed self.success() return params = self.common_url_params() if ticket_ids: # query not supported by bitbucket - we will do it manually later self.wanted_ticket_ids = ticket_ids else: if project_selector and component_selector: uri = self.tracker.url + "repos/%s/%s/issues?" % (project_selector, component_selector[0]) url = serialize_url(uri, **params) self.fetch(url)
def _fetch_tickets_by_ids(self, ticket_ids, callback): params = dict(max='1000', col=[ 'id', 'blockedby', 'dependencies', 'priority', 'severity', 'resolution', 'summary' ], format='csv') ids = [] if ticket_ids: for id in ticket_ids: if id: ids.append(str(id)) params['id'] = ids if not ids: return self.success() url = serialize_url(self.tracker.url + '/query?', **params) headers = self.get_headers() self.request(url, headers, partial(self.parse_response, callback))
def fetch_dependons_for_ticket_ids(self, ticket_ids): params = dict( ctype='xml', field=['dependson', 'bug_id', 'bug_severity', 'resolution']) if ticket_ids: ids = [] for id in ticket_ids: if id: ids.append(str(id)) params.update(id=ids) if not ids: return self.fail(FetchException(u'Ticket ids list is empty')) url = h.serialize_url(self.tracker.url + '/show_bug.cgi?', **params) headers = self.get_headers() self.request( url, headers, partial(self.xml_response, self.parse_response_of_dependons_for_ticket_ids))
def fetcher(self, ticket_ids, project_selector, component_selector, version): if resolved: # bitbucked doesn't have resolved not-closed self.success() return params = self.common_url_params() if ticket_ids: # query not supported by bitbucket - we will do it manually later self.wanted_ticket_ids = ticket_ids else: if project_selector and component_selector: uri = self.tracker.url + "repos/%s/%s/issues?" % ( project_selector, component_selector[0]) url = serialize_url(uri, **params) self.fetch(url)
def get_status_of_dependson_and_blocked_bugs(self): for bug in self.bugs.itervalues(): self.dependson_and_blocked_status.update(bug.dependson) self.dependson_and_blocked_status.update(bug.blocked) bug_ids = self.dependson_and_blocked_status.keys() if bug_ids: url = serialize_url('%s/query?' % self.tracker.url, col=['id', 'status', 'summary'], id=','.join(bug_ids), format='csv') headers = self.get_headers() self.request( url, headers, partial(self.parse_response, self.parse_dependson_and_blocked_bugs_csv)) else: self.success()