def _delete_all_issues(self): """Delete all issues in a Gitlab project""" data = self._get("/issues") if not data: log.info("No issues found!") return for item in data: resp = self._delete(self._base + "/issues/{}".format(item['iid'])) if resp.status_code == 204: log.resp("204: Deleted issue " + item['title']) else: log.resp("{}: {}".format(resp.status_code, resp.text))
def _delete_all_labels(self): """Delete all labels""" data = self._get("/labels") if not data: log.info("No labels found!") return for item in data: resp = self._delete(self._base + "/labels/{}".format(item['name'])) if resp.status_code == 204: log.resp("204: Deleted label " + item['name']) else: log.resp("{}: {}".format(resp.status_code, resp.text))
def _delete_all_labels(self): """Delete all labels in a Github project""" data = self._get("/labels") if not data: log.info("No labels found!") return for item in data: info = {"name": item['name']} resp = self._delete(self._base + "/labels", data=self._format_data(info)) if resp.status_code == 204: log.resp("204: Deleted label " + item['name']) else: log.resp("{}: {}".format(resp.status_code, resp.text))
def __init__(self, user, proj): """Initialize a Gitlab session""" auth_hdr = {"Private-Token": input("Enter PA token: ")} self._session = requests.Session() self._session.headers.update(auth_hdr) # Get project ID projects = self._get("/users/{}/projects".format(user), base=self.API_ROOT) for item in projects: if item['name'] == proj: proj_id = item['id'] log.info("Found project {}, id is {}".format(proj, proj_id)) break else: log.error("Couldn't find project: " + proj) self._base = self.API_ROOT + "/projects/{}".format(proj_id)
def _delete_all_issues(self): """Delete all issues (including comments)""" log.info( "Github API does not currently support deleting issues. Sorry!") return data = self._get("/issues") if not data: log.info("No issues found!") return for item in data: resp = self._delete(self._base + "/issues/{}".format(item['number'])) if resp.status_code == 204: log.resp("204: Deleted issue " + item['title']) else: log.resp("{}: {}".format(resp.status_code, resp.text))
def apply_json(self, filename, only=None): """Apply json data to web repo""" with open(filename, "r") as fin: data = json.load(fin) if only is None or only == "labels": # Apply labels labels = Label.json_to_labels(data["labels"]) for i, label in enumerate(labels): log.info('Posting label ({}/{}) "{}"...'.format( i + 1, len(labels), label.title), end='') self._apply_label(label) print("done!") if only is None or only == "issues": # Apply issues issues = Issue.json_to_issues(data["issues"]) for i, issue in enumerate(issues): log.info('Posting issue ({}/{}) "{}"...'.format( i + 1, len(issues), issue._title), end='') iid = self._apply_issue(issue) print("done!") # Apply comments for j, comment in enumerate(issue._comments): log.info( ' Posting comment ({}/{}) to issue #{}...'.format( j + 1, len(issue._comments), iid), end='') self._apply_comment(iid, comment) print("done!")
def get_rate_limit(self): """Get the rate limit""" resp = self._session.get(self.API_ROOT + "/rate_limit") log.info(resp.text)