1
0
mirror of https://lab.enough.community/fedeproxy/server synced 2025-01-06 12:57:01 +01:00
Fedeproxy-git-ActivityPub-r.../fedeproxy/api/management/commands/fedeproxy_api.py
Loic Dachary d72172bf2f
initial
2021-01-18 14:30:13 +01:00

49 lines
1.5 KiB
Python

from fedeproxy import settings
from allauth.socialaccount.models import SocialApp
from django.contrib.sites.models import Site
from django.core.management.base import BaseCommand
from fedeproxy.common.gitlab import GitLab
class Command(BaseCommand):
help = 'Create an API user'
def add_arguments(self, parser):
parser.add_argument('--config', default=f'{settings.CONFIG_DIR}')
parser.add_argument('domain')
parser.add_argument('username')
parser.add_argument('password')
def setup_gitlab_auth(self, *args, **kwargs):
provider = 'gitlab'
name = 'GitLab'
existing = SocialApp.objects.filter(provider=provider)
if existing:
return False
gitlab = GitLab(f'https://{kwargs["domain"]}')
gitlab.login('root', kwargs['password'])
gitlab.ensure_group_exists('fedeproxy', request_access_enabled=True, visibility='public')
(client_id, client_secret) = gitlab.create_api_application(kwargs['domain'])
a = SocialApp(provider=provider, name=name, secret=client_secret,
client_id=client_id, key='')
a.save()
# Now associate this provider with all site instances.
sites = [i for i in Site.objects.all()]
a.sites.add(*sites)
return True
def handle(self, *args, **kwargs):
changed = False
changed |= self.setup_gitlab_auth(*args, **kwargs)
if changed:
self.stdout.write('Changed')
else:
self.stdout.write('Up to date')