Beispiel #1
0
def show_merge_requests(group):
    course_gitlab = cgl.CourseGitlab(config)
    for project in course_gitlab.group.projects.list(
            search=group, with_merge_requests_enabled=True):
        project_obj = course_gitlab.get_or_create_project(project.name)
        for merge_request in project_obj.mergerequests.list(state='all',
                                                            per_page=10000):
            if merge_request.state == "closed":
                continue
            task_deadline = None
            for regexp, deadline in config.deadlines:
                if re.match(regexp, merge_request.source_branch):
                    task_deadline = deadline
                    break
            if task_deadline is None:
                print("wrong merge request name '{}'".format(
                    merge_request.source_branch))
                continue
            date_obj = datetime.datetime.strptime(merge_request.created_at, "%Y-%m-%dT%H:%M:%S.%fZ") \
                + datetime.timedelta(hours=3)
            date = date_obj.strftime("%Y-%m-%d %H:%M:%S")
            print(
                "task: '{}', created_at: '{}', state: '{}', before_deadline: '{}'"
                .format(merge_request.source_branch, date, merge_request.state,
                        date <= task_deadline))
Beispiel #2
0
def update_mr(sheet, task):
    course_gitlab = cgl.CourseGitlab(config)
    for row in sheet.get_rows():
        logger.info("Processing table row {}".format(row.row_index))
        if not validate_team(row.team) or not validate_name(row.name):
            continue
        project_name = row.team + '-' + row.name
        if row.status != "OK":
            sheet.set_repo_status(row.row_index, "PROCESSING")
            try:
                course_gitlab.update_mr(project_name, task)
                sheet.set_repo_status(row.row_index, "OK")
            except cgl.UserException as exception:
                logger.exception(str(exception))
Beispiel #3
0
def create_repos(sheet):
    course_gitlab = cgl.CourseGitlab(config)
    for row in sheet.get_rows():
        logger.info("Processing table row {}".format(row.row_index))
        if not validate_team(row.team) or not validate_name(row.name):
            continue
        project_name = row.team + '-' + row.name
        if row.status == "PROCESSING":
            course_gitlab.delete_project(project_name)
        if row.status != "OK":
            sheet.set_repo_status(row.row_index, "PROCESSING")
            master_login = config.teachers[row.team]
            try:
                course_gitlab.create_project_full(project_name, row.login,
                                                  master_login)
                sheet.set_repo_status(row.row_index, "OK")
            except cgl.UserException as exception:
                logger.exception(str(exception))
Beispiel #4
0
def verify_users(sheet):
    course_gitlab = cgl.CourseGitlab(config)
    for row in sheet.get_rows():
        course_gitlab.get_user(row.login)
        sheet.set_repo_status(row.row_index, "OK")