From a0870de1bd1ccf0fbbdb01c754ac873905da04b6 Mon Sep 17 00:00:00 2001 From: Tim Schubert Date: Wed, 2 May 2018 17:43:35 +0200 Subject: [PATCH] Fixup --- abgabesystem.py | 49 +++++++++++++++++++++++++++---------------------- 1 file changed, 27 insertions(+), 22 deletions(-) diff --git a/abgabesystem.py b/abgabesystem.py index 8c8c7b9..912c582 100644 --- a/abgabesystem.py +++ b/abgabesystem.py @@ -8,6 +8,8 @@ import logging as log import csv import secrets +from time import sleep + class Deadline(yaml.YAMLObject): """A deadline""" @@ -168,31 +170,34 @@ def sync_project(gl, course, student): # gl.projects.delete(project.id) projects = course.group.projects.list(search=student.user.username) - if len(projects) > 0: - print('found') - return projects[0] + project = None + if len(projects) == 0: + base = course.group.projects.list(search=course.base)[0] + base = gl.projects.get(base.id) - base = course.group.projects.list(search=course.base)[0] - base = gl.projects.get(base.id) - - log.info('Creating project %s' % student.user.username) - fork = base.forks.create({ - 'namespace': student.user.username, - 'name': student.user.username - }) - project = gl.projects.get(fork.id) - project.path = student.user.username - project.name = student.user.username - project.visibility = 'private' - project.save() - course.group.transfer_project(to_project_id=fork.id) - student_member = project.members.get(student.user.id) - student_member.access_level = gitlab.DEVELOPER_ACCESS - student_member.save() + log.info('Creating project %s' % student.user.username) + fork = base.forks.create({ + 'namespace': student.user.username, + 'name': student.user.username + }) + project = gl.projects.get(fork.id) + project.path = student.user.username + project.name = student.user.username + project.visibility = 'private' + project.save() + course.group.transfer_project(to_project_id=fork.id) + else: + project = gl.projects.get(id=projects[0].id) + try: + student_member = project.members.get(student.user.id) + student_member.access_level = gitlab.DEVELOPER_ACCESS + student_member.save() + except gitlab.exceptions.GitlabGetError as e: + student_member = project.members.create({'user_id': student.user.id, 'access_level': + gitlab.DEVELOPER_ACCESS}) project.keys.create({'title': 'abgabesystem', 'key': open('abgabesystem.key.pub').read()}) - - return project + project.save() def deadlines(gl, conf, args):