From a0d2bc356ecbf3e34376087676d41c714c9e3fbe Mon Sep 17 00:00:00 2001 From: Tue Herlau <tuhe@dtu.dk> Date: Mon, 14 Aug 2023 11:42:43 +0200 Subject: [PATCH] Started work on git auto admin stuff --- src/coursebox.egg-info/PKG-INFO | 2 +- src/coursebox/__init__.py | 2 ++ src/coursebox/admin/gitlab.py | 56 +++++++++++++++++++++++++++++++++ 3 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 src/coursebox/admin/gitlab.py diff --git a/src/coursebox.egg-info/PKG-INFO b/src/coursebox.egg-info/PKG-INFO index 601c926..2e4a9bb 100644 --- a/src/coursebox.egg-info/PKG-INFO +++ b/src/coursebox.egg-info/PKG-INFO @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: coursebox -Version: 0.1.18.9 +Version: 0.1.18.10 Summary: A course management system currently used at DTU Home-page: https://lab.compute.dtu.dk/tuhe/coursebox Author: Tue Herlau diff --git a/src/coursebox/__init__.py b/src/coursebox/__init__.py index 7648fd4..790ab99 100644 --- a/src/coursebox/__init__.py +++ b/src/coursebox/__init__.py @@ -5,4 +5,6 @@ from coursebox.setup_coursebox import setup_coursebox from coursebox.core.info_paths import get_paths from coursebox.core.info import class_information +from coursebox.admin.gitlab import sync_tas_with_git + # from coursebox.core import info_paths diff --git a/src/coursebox/admin/gitlab.py b/src/coursebox/admin/gitlab.py new file mode 100644 index 0000000..159d589 --- /dev/null +++ b/src/coursebox/admin/gitlab.py @@ -0,0 +1,56 @@ +import gitlab +import gitlab.const +from urllib.parse import urlparse + +domain = urlparse('http://www.example.test/foo/bar').netloc +print(domain) # --> www.example.test + +def sync_tas_with_git(): + from coursebox import class_information # Put this here so information is synced. + info = class_information() + url = info['project_correction_url'] + domain = urlparse(url).netloc + + # curl --header "PRIVATE-TOKEN: glpat--NYfBQfTS9JW2G7uPmM2" "https://gitlab.example.com/api/v4/projects/cp%2F02002instructors/members/all" + gl = gitlab.Gitlab(url="https://"+domain, private_token=info['instructor_gitlab_token'].strip()) + a = 234 + prs = [] + name = url.split(domain)[-1][1:] + p = gl.projects.get(name) + + users = p.users.list() + + all_tas = [u.name for u in users] + for i in info['instructors']: + if i['name'] not in all_tas: + print(i) + for i in p.invitations.list(): + print("Invited", i.invite_email.split("@")) + + if False: + inv = p.invitations.create({ + "email": "fmry@dtu.dk", + "access_level": gitlab.const.AccessLevel.MAINTAINER, + }) + inv.save() + + # + # + # + # + # for p in gl.projects.list(iterator=True): + # prs.append(p) + # for p in prs: + # # print(p.name) + # if "02002" in p.name: + # print(p.name, p.id) + # + # p = gl.projects.get(1644) + # users = p.users.list(get_all=True) + # for u in users: + # print(u) + + + # p.invitations.get("tuh@dtu.dk") + + # gl.users.list()[1].username -- GitLab