Skip to content
Snippets Groups Projects
Commit d961eed3 authored by Harrison's avatar Harrison
Browse files

groups

parent 78777171
No related branches found
No related tags found
No related merge requests found
#!/usr/bin/python3
import requests as r
import json as j
import sys as s
SECRET_KEY = None # Supply in arguments
BASE_URL = 'https://gitlab.cs.umd.edu/'
GROUP_ID = 4092 #FILL IN
DEFAULT_HEADERS = {
'user-agent': 'bulk-repo-create',
'Content-Type': 'application/json',
'Private-Token' : SECRET_KEY
}
def id_from_name (name):
rq = r.get (
BASE_URL + "api/v4/users/",
headers = DEFAULT_HEADERS,
params = {
'username' : name
}
)
res = j.loads(rq.text)
if type(res) == list:
if len(res) == 0:
return None
else:
return res[0]['id']
else:
raise TypeError
# Returns project id, or none if project cannot be created
def create_project (proj_name):
rq = r.post (
BASE_URL + "api/v4/projects/",
headers = DEFAULT_HEADERS,
data = j.dumps(
{
'name' : proj_name,
'visibility' : 'private'
}
)
)
res = j.loads(rq.text)
try:
return res['id']
except KeyError:
return None
# adds user with user_id to project with project_id with permission permission
# 30 for developer 40 for maintainer
# return true if successful false if not
def add_to_project(project_id, user_id, permission):
rq = r.post (
BASE_URL + "api/v4/projects/" + str(project_id) + "/members",
headers = DEFAULT_HEADERS,
data = j.dumps(
{
'id' : project_id,
'user_id' : user_id,
'access_level': permission #Developer
}
)
)
res = j.loads(rq.text)
try:
return res['id'] == user_id
except KeyError:
return False
def transfer_to_group(project_id, group_id):
rq = r.put (
BASE_URL + "api/v4/projects/" + str(project_id) + "/transfer",
headers = DEFAULT_HEADERS,
data = j.dumps(
{
'namespace' : group_id
}
)
)
res = j.loads(rq.text)
try:
return res['id'] == project_id
except KeyError:
return False
if __name__ == "__main__":
if len(s.argv) != 4:
print("Usage: <input list> <output list> <secret key>")
else:
SECRET_KEY = s.argv[3]
DEFAULT_HEADERS['Private-Token'] = SECRET_KEY
f = open(s.argv[1], 'r')
groups = f.readlines()
f.close()
f = open(s.argv[2], 'w')
group_num = 1
for group in groups:
names = group.split(",")
# create project
proj_id = create_project("cmsc417-s2020-group" + str(group_num))
# transfer project to group
transfer_to_group(proj_id, GROUP_ID)
print(names)
for name in names:
# add name to project
correct_name = name.strip()
print(correct_name)
name_id = id_from_name(correct_name)
if (name_id == None):
f.write(correct_name + "\n")
else:
if not add_to_project(proj_id, name_id, 30):
f.write(correct_name + "\n")
group_num += 1
f.close()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment