From d15c753bc4d25d07c1a932d81afe9176233ad552 Mon Sep 17 00:00:00 2001 From: Adrien Lescourt <adrien@lescourt.net> Date: Thu, 10 Apr 2025 10:16:57 +0200 Subject: [PATCH] Fix repos creation --- pwm/pwm.py | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/pwm/pwm.py b/pwm/pwm.py index 248efca..0e36065 100755 --- a/pwm/pwm.py +++ b/pwm/pwm.py @@ -101,6 +101,17 @@ class Gitlab: else: print("Group " + group_id + " successfully deleted") + def get_user_id(self, user: User) -> str | None: + headers = {"PRIVATE-TOKEN": self.token} + res = requests.get( + BASE_API_URL + "/users", params={"search": user.id}, headers=headers + ) + if res.status_code != 200: + print(f"Error searching user {user.id}") + print(res.text) + else: + return res.json()[0]["id"] + def create_repository( self, group_id: str, @@ -119,6 +130,7 @@ class Gitlab: params = {"name": name, "namespace_id": group_id, "visibility": "private"} if import_url: params["import_url"] = import_url + project = requests.post( BASE_API_URL + "/projects", params=params, headers=headers ).json() @@ -144,18 +156,21 @@ class Gitlab: # Add each student as maintainer (level 40) for user in users: - print(user) - params = {"user_id": user.id, "access_level": access_level} + user_id = self.get_user_id(user) + if user_id is None: + print(f"ERROR: User {user.id} will not be added to project: {name}") + params = {"user_id": user_id, "access_level": access_level} if expires_at: params["expires_at"] = expires_at - new_user = requests.post( + res = requests.post( BASE_API_URL + "/projects/" + str(project["id"]) + "/members", params=params, headers=headers, - ).json() - if "message" in new_user: - print("Error in adding user: %s" % new_user) + ) + if res.status_code != 201: + print(res.text) else: + new_user = res.json() out = ( "Adding '" + new_user["name"] -- GitLab