From a499fc695e03d35948045a3474ca7d625bd2c081 Mon Sep 17 00:00:00 2001 From: "steven.liatti" <steven.liatti@hesge.ch> Date: Mon, 11 Nov 2019 16:42:35 +0100 Subject: [PATCH] Add new script for repository creation in dedicated group with students given --- clone_all.py => clone_all_forks.py | 0 create_repo_for_students.py | 44 ++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) rename clone_all.py => clone_all_forks.py (100%) create mode 100755 create_repo_for_students.py diff --git a/clone_all.py b/clone_all_forks.py similarity index 100% rename from clone_all.py rename to clone_all_forks.py diff --git a/create_repo_for_students.py b/create_repo_for_students.py new file mode 100755 index 0000000..7618296 --- /dev/null +++ b/create_repo_for_students.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python3 + +import sys +import json +import requests +import subprocess + +if len(sys.argv) < 6: + print('Usage: ' + sys.argv[0] + ' <token> <import_url> <group_id> <project_name> <student1,student2,...,studentN>') + exit(1) + +token = sys.argv[1] +import_url = sys.argv[2] +group_id = sys.argv[3] +project_name = sys.argv[4] + +base_url = 'https://gitedu.hesge.ch/api/v4' +headers = {'PRIVATE-TOKEN': token} + +# Get students ids from their usernames +users_names = sys.argv[5].split(',') +users_ids = [] +for username in users_names: + user_requested = requests.get(base_url + '/users', params={'username': username}, headers=headers).json() + if len(user_requested) == 0: + print('No user %s found, operation aborted' % username) + exit(1) + user_id = user_requested[0]['id'] + users_ids.append(user_id) + +# Create project from name, basis and group given +params = {'name': project_name, 'import_url': import_url, 'namespace_id': group_id, 'visibility': 'private'} +project = requests.post(base_url + '/projects', params=params, headers=headers).json() + +if 'message' in project: + print('Error in creating project: %s' % project) + exit(1) + +# Add each student as project's maintainer (level 40) +for user_id in users_ids: + params = {'user_id': user_id, 'access_level': 40} + new_user = requests.post(base_url + '/projects/' + str(project['id']) + '/members', params=params, headers=headers).json() + +# Do not forget : students have to add second remote in their local repositories for pulling last changes. -- GitLab