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