37 lines
1.3 KiB
Python
37 lines
1.3 KiB
Python
import giteapy
|
|
import gitlab
|
|
from config import GITEA_HOST, GITEA_API_KEY, GITLAB_HOST, GITLAB_API_KEY
|
|
|
|
configuration = giteapy.Configuration()
|
|
configuration.api_key['access_token'] = GITEA_API_KEY
|
|
configuration.host = GITEA_HOST
|
|
|
|
print("Récupération des comptes...")
|
|
|
|
# Récupération des comptes Gitea
|
|
gt = giteapy.AdminApi(giteapy.ApiClient(configuration))
|
|
gt_users = gt.admin_get_all_users()
|
|
print(f"\t- {len(gt_users)} comptes Gitea")
|
|
|
|
# Récupération des comptes GitLab
|
|
gl = gitlab.Gitlab(url=GITLAB_HOST, private_token=GITLAB_API_KEY)
|
|
gl_users = gl.users.list(all=True)
|
|
print(f"\t- {len(gl_users)} comptes GitLab")
|
|
|
|
# Ignore les comptes existants sur GitLab
|
|
gl_usernames = {user.username for user in gl_users}
|
|
unique_gt_users = [user for user in gt_users if user.login not in gl_usernames]
|
|
|
|
print(f"{"Aucun compte" if len(unique_gt_users)==0 else f"{len(unique_gt_users)} comptes"} Gitea à transfer")
|
|
# Création des comptes manquants sur GitLab
|
|
for gt_user in unique_gt_users:
|
|
print(f"\t- Création de l'utilisateur {gt_user.login}")
|
|
gl.users.create({
|
|
'email': gt_user.email,
|
|
'username': gt_user.login,
|
|
'name': gt_user.full_name if len(gt_user.full_name) > 0 else gt_user.login,
|
|
'admin': gt_user.is_admin,
|
|
'force_random_password': True,
|
|
'skip_confirmation': True
|
|
})
|