Skip to content
Snippets Groups Projects
Commit 9c2db6a0 authored by Christopher Bohn's avatar Christopher Bohn :thinking:
Browse files

Added code to validate repos for code review & response assignments

parent 38df6b06
No related branches found
No related tags found
No related merge requests found
......@@ -53,6 +53,13 @@ class GitlabUser:
def get_site(self) -> str:
return self.git_user.web_url
def get_projects(self) -> List["GitlabProject"]:
gitlab_projects = self.git_user.projects.list(all=True)
projects: List[GitlabProject] = []
for project in gitlab_projects:
projects.append(GitlabProject(project))
return projects
def __repr__(self) -> str:
username = self.get_username()
return f'@{username}'
......
......@@ -58,7 +58,45 @@ def create_clone_script():
def validate_forks():
print('Examining the forks (... not yet)')
old_groupset: str = input('Please provide the name of the student groupset for the previous assignment: ')
new_groupset: str = input('Please provide the name of the student groupset for the next assignment: ')
students: Set[CompositeUser] = get_students()
print('Validating the forks.')
print('This script will report anything unexpected;')
print('use judgement when grading fork requirement.')
print()
# noinspection PyPep8Naming
TAs: List[str] = (input('Enter the TAs\' gitlab usernames as a space-delimited sequence: ')).split()
course = CanvasCourse(Course.canvas_course_id)
old_groups: List[CanvasUserGroup] = list(filter(lambda g: g.get_name() == old_groupset,
course.get_user_groupsets()))[0].get_groups()
new_groups: List[CanvasUserGroup] = list(filter(lambda g: g.get_name() == new_groupset,
course.get_user_groupsets()))[0].get_groups()
for student in students:
print(f'Validating {student.get_canvas_user().get_name()}')
old_group_name: str = list(filter(lambda g: student.get_canvas_user() in g.get_students(),
old_groups))[0].get_name().strip().replace(" ", "")
new_group = list(filter(lambda g: student.get_canvas_user() in g.get_students(), new_groups))[0]
projects: List[GitlabProject] = student.get_gitlab_user().get_projects()
project_names: List[str] = list(map(lambda p: p.get_name(), projects))
if old_group_name in project_names:
project: GitlabProject = list(filter(lambda p: p.get_name() == old_group_name, projects))[0]
users: List[GitlabUser] = project.get_all_users()
usernames: List[str] = list(map(lambda u: u.get_username(), users))
for TA in TAs:
if TA not in usernames:
print(f'\t{student.get_canvas_user().get_name()} did not add @{TA} to repo.')
for partner in new_group.get_students():
composite_student: CompositeUser = list(filter(lambda s: s.get_canvas_user() == partner, students))[0]
if composite_student.get_gitlab_user().get_username() not in usernames:
print(f'\t{student.get_canvas_user().get_name()} did not add {partner.get_name()} to repo.')
else:
print(f'\t{student.get_canvas_user().get_name()}: Could not locate {old_group_name}.git')
print('\t\tThis may be because the student hasn\'t forked their repository, or')
print('\t\tbecause they haven\'t given you access, or because they renamed it.')
print(f'\t\t\t{student.get_canvas_user().get_name()}\'s repositories:')
for project in project_names:
print(f'\t\t\t{project}')
if __name__ == '__main__':
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment