Rewrite plagiates and deadlines functions to use fork relationship instead of groups.
This should be more reliable if another group structure is desired later. (e.g. student projects in the user namespace of the each student)
This commit is contained in:
parent
48b4e00286
commit
d7a8440e11
1 changed files with 34 additions and 37 deletions
|
@ -194,48 +194,42 @@ def deadline(gl, args):
|
||||||
"""Checks deadlines for course and triggers deadline if it is reached"""
|
"""Checks deadlines for course and triggers deadline if it is reached"""
|
||||||
|
|
||||||
deadline_name = args.tag_name
|
deadline_name = args.tag_name
|
||||||
course = args.course
|
try:
|
||||||
group = None
|
reference = gl.projects.get(args.reference, lazy=True)
|
||||||
for g in gl.groups.list(search=course.name):
|
|
||||||
if g.name == args.course:
|
for fork in reference.forks.list():
|
||||||
group = g
|
project = gl.projects.get(fork.id, lazy=True)
|
||||||
group = gl.groups.get(group.id)
|
try:
|
||||||
for project in course.group.projects.list(all=True):
|
create_tag(project, deadline_name, 'master')
|
||||||
project = gl.projects.get(project.id)
|
except gitlab.exceptions.GitlabCreateError as e:
|
||||||
print(project.name)
|
print(e.error_message)
|
||||||
try:
|
|
||||||
create_tag(project, deadline_name, 'master')
|
except gitlab.exceptions.GitlabGetError as e:
|
||||||
except gitlab.exceptions.GitlabCreateError as e:
|
print(e.error_message)
|
||||||
print(e)
|
|
||||||
|
|
||||||
|
|
||||||
def plagiates(gl, args):
|
def plagiates(gl, args):
|
||||||
"""Runs the plagiarism checker (JPlag) for the solutions and a given tag
|
"""Runs the plagiarism checker (JPlag) for the solutions with a certain tag
|
||||||
name
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
groups = gl.groups.list(search=args.course)
|
|
||||||
tag = args.tag_name
|
tag = args.tag_name
|
||||||
print(groups)
|
try:
|
||||||
if len(groups) == 0:
|
reference = gl.projects.get(args.reference, lazy=True)
|
||||||
pass
|
try:
|
||||||
for g in groups:
|
os.mkdir('solutions')
|
||||||
if g.name == args.course:
|
except os.FileExistsError as e:
|
||||||
try:
|
print(e)
|
||||||
os.mkdir('repos')
|
os.chdir('solutions')
|
||||||
except os.FileExistsError as e:
|
|
||||||
print(e)
|
|
||||||
os.chdir('repos')
|
|
||||||
for project in g.projects.list(all=True):
|
|
||||||
project = gl.projects.get(project.id, lazy=True)
|
|
||||||
try:
|
|
||||||
subprocess.run(
|
|
||||||
['git', 'clone', '--branch', tag, project.ssh_url_to_repo])
|
|
||||||
print(e)
|
|
||||||
|
|
||||||
os.chdir('..')
|
for fork in reference.forks.list():
|
||||||
subprocess.run(
|
project = gl.projects.get(fork.id, lazy=True)
|
||||||
['java', '-jar', '/app/jplag.jar', '-s', 'repos', '-p', 'java', '-r', 'results', '-bc', args.reference, '-l', 'java17'])
|
try:
|
||||||
|
subprocess.run(
|
||||||
|
['git', 'clone', '--branch', tag, project.ssh_url_to_repo, project.path_with_namespace])
|
||||||
|
os.chdir('..')
|
||||||
|
|
||||||
|
subprocess.run(
|
||||||
|
['java', '-jar', args.jplag_jar, '-s', 'solutions', '-p', 'java', '-r', 'results', '-bc', args.reference, '-l', 'java17'])
|
||||||
|
|
||||||
|
|
||||||
def course(gl, args):
|
def course(gl, args):
|
||||||
|
@ -284,13 +278,16 @@ if __name__ == '__main__':
|
||||||
'deadline',
|
'deadline',
|
||||||
description='set tags at deadline')
|
description='set tags at deadline')
|
||||||
deadline_parser.set_defaults(func=deadline)
|
deadline_parser.set_defaults(func=deadline)
|
||||||
deadline_parser.add_argument('tag_name')
|
deadline_parser.add_argument('-t', '--tag-name', dest='tag_name')
|
||||||
|
deadline_parser.add_argument('-r', '--reference', dest='reference')
|
||||||
|
|
||||||
plagiates_parser = subparsers.add_parser(
|
plagiates_parser = subparsers.add_parser(
|
||||||
'plagiates',
|
'plagiates',
|
||||||
description='set tags at plagiates')
|
description='set tags at plagiates')
|
||||||
plagiates_parser.set_defaults(func=plagiates)
|
plagiates_parser.set_defaults(func=plagiates)
|
||||||
plagiates_parser.add_argument('tag_name')
|
plagiates_parser.add_argument('-t', '--tag-name', dest='tag_name')
|
||||||
|
plagiates_parser.add_argument('-r', '--reference', dest='reference')
|
||||||
|
plagiates_parser.add_argument('-j', '--jplag-jar', dest='jplag_jar')
|
||||||
|
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue