From 003cff7c5af7818d7879c3731693664644cbaa2f Mon Sep 17 00:00:00 2001 From: Alex Totrin Date: Sun, 26 Feb 2023 22:34:02 +0300 Subject: [PATCH] added fields to create external users with some permissions --- example.csv | 6 +++--- src/gitlab_users/gitlab_users.py | 12 +++++++++--- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/example.csv b/example.csv index 28d662a..f06f395 100644 --- a/example.csv +++ b/example.csv @@ -1,3 +1,3 @@ -# username, name, email, [organization], [location], [group], [access_level] -wayne,Bruce Wayne,bruce.wayne@wayne-entreprises.com,Wayne Entreprises,Gotham City,board,owner -kent,Clark Kent,clark.kent@krypton.univ,,Smallville +# username, name, email, [organization], [location], [group], [access_level], [can_create_group], [external], [skip_confirmation], [projects_limit] +wayne,Bruce Wayne,bruce.wayne@wayne-entreprises.com,Wayne Entreprises,Gotham City,group,developer,False,True,True,0 +kent,Clark Kent,clark.kent@krypton.univ,test,Smallville,group,reporter,False,True,True,0 diff --git a/src/gitlab_users/gitlab_users.py b/src/gitlab_users/gitlab_users.py index deacf0e..ba9d31b 100755 --- a/src/gitlab_users/gitlab_users.py +++ b/src/gitlab_users/gitlab_users.py @@ -19,6 +19,7 @@ import gitlab import os import sys +import json ACCESS_LEVEL = {'guest': gitlab.GUEST_ACCESS, @@ -404,11 +405,16 @@ def _check(self): def _create(self): print("Creating...") + print(self.userdict) self.gluser = self.gl.users.create(self.userdict) # 'organization' and 'location' field are not created by current # version of python-gitlab (0.20) so add them using .save() method self.gluser.organization = self.userdict['organization'] self.gluser.location = self.userdict['location'] + self.gluser.external = json.loads(self.userdict['external'].lower()) + self.gluser.can_create_group = json.loads(self.userdict['can_create_group'].lower()) + self.gluser.skip_confirmation = json.loads(self.userdict['skip_confirmation'].lower()) + self.gluser.projects_limit = int(self.userdict['projects_limit']) self.gluser.save() print(" User {} created".format(self.userdict['username'])) @@ -493,7 +499,7 @@ def delete(self): def get_usernames_from_csv(filename): """Return a list of usernames""" - with open(filename, 'r') as csvfile: + with open(filename, 'r', encoding='utf-8-sig') as csvfile: csvreader = csv.reader(row for row in csvfile if not row.startswith('#')) return [row[0] for row in csvreader] @@ -501,9 +507,9 @@ def get_usernames_from_csv(filename): def get_users_from_csv(filename): """Return a dict containing users information""" - with open(filename, 'r') as csvfile: + with open(filename, 'r', encoding='utf-8-sig') as csvfile: fieldnames = 'username', 'name', 'email', 'organization', 'location', \ - 'group', 'access_level' + 'group', 'access_level', 'can_create_group', 'external', 'skip_confirmation', 'projects_limit' # Filter csv file header csvreader = csv.reader(row for row in csvfile if not row.startswith('#'))