parent
ae7a4402e6
commit
55807f2fdd
3 changed files with 52 additions and 2 deletions
39
commands.py
39
commands.py
|
@ -7,7 +7,7 @@ import re
|
|||
from constants import HOMEWORK, SUFFIX
|
||||
|
||||
from git import add_files, commit, push
|
||||
from gitlab import post_mr, get_mrs_for_branch, set_assignees, merge_mr
|
||||
from gitlab import post_mr, get_mrs_for_branch, set_assignees, merge_mr, get_comments
|
||||
from utils import run_cmd, get_branch
|
||||
|
||||
|
||||
|
@ -75,3 +75,40 @@ class Merge:
|
|||
class Test:
|
||||
def __call__(self, login: str, submission: str):
|
||||
print(f"{login} - {submission}")
|
||||
|
||||
|
||||
class Comments:
|
||||
@staticmethod
|
||||
def sort_comments(comments):
|
||||
result = {}
|
||||
|
||||
for comment in comments:
|
||||
print(comment)
|
||||
author = comment["author"]["username"], comment["author"]["name"]
|
||||
if author not in result:
|
||||
result[author] = list()
|
||||
|
||||
result[author].append(comment)
|
||||
|
||||
return result
|
||||
|
||||
@staticmethod
|
||||
def print_comments(comments):
|
||||
comments = Comments.sort_comments(comments)
|
||||
|
||||
for author in comments:
|
||||
login, name = author
|
||||
print(f"***** {name} ({login}) *****")
|
||||
|
||||
for comment in comments[author]:
|
||||
if comment["type"] == "DiffNote":
|
||||
print(f"""L{comment["position"]["new_line"]}: {comment["body"]}""")
|
||||
else:
|
||||
print(comment["body"])
|
||||
|
||||
def __call__(self, login: str, submission: str):
|
||||
branch = get_branch(login)
|
||||
iid = get_mrs_for_branch(branch)[0]["iid"]
|
||||
comments = get_comments(iid)
|
||||
|
||||
self.print_comments(comments)
|
||||
|
|
12
gitlab.py
12
gitlab.py
|
@ -67,3 +67,15 @@ def set_assignees(iid, assignee_ids):
|
|||
headers=headers,
|
||||
) as req:
|
||||
print(req.status_code)
|
||||
|
||||
|
||||
def get_comments(iid):
|
||||
params = {"sort": "asc"}
|
||||
headers = {"Private-Token": TOKEN}
|
||||
|
||||
with requests.get(
|
||||
f"https://gitlab.fi.muni.cz/api/v4/projects/{PROJECT}/merge_requests/{iid}/notes",
|
||||
params=params,
|
||||
headers=headers,
|
||||
) as req:
|
||||
return req.json()
|
||||
|
|
|
@ -7,7 +7,7 @@ from subprocess import run
|
|||
import sys
|
||||
|
||||
|
||||
from commands import MergeRequests, UpdateAssignees, Merge, Test
|
||||
from commands import MergeRequests, UpdateAssignees, Comments, Merge, Test
|
||||
from constants import SUBMISSIONS, HOMEWORK
|
||||
from git import checkout_branch
|
||||
from utils import get_branch, mkcd, make_pair
|
||||
|
@ -29,6 +29,7 @@ def iterate_logins(func):
|
|||
COMMANDS = {
|
||||
"mrs": MergeRequests(),
|
||||
"update-assignees": UpdateAssignees(),
|
||||
"comments": Comments(),
|
||||
"merge": Merge(),
|
||||
"test": Test(),
|
||||
}
|
||||
|
|
Reference in a new issue