def create_orgs(user): """Creates new organization users based on data from GitHub.""" logger.info('Creating new organization users based on data from GitHub') payload = {'access_token': user.github_access_token} orgs = github_api_get('/user/orgs', params=payload) for org in orgs: data = github_api_get('/orgs/%s' % org['login'], params=payload) organization = Organization.from_kwargs(**data) organization.members.add(user) sync_org_account_github(organization, payload) logger.info('Organization %s has been created' % organization)
def sync_account_github(request): """Syncs a user or an organization account with GitHub""" if request.method == 'GET': raise Http404 payload = {'access_token': request.user.github_access_token} if request.POST.get('organization'): logger.info('Syncing organization account %s with GitHub' % request.POST['organization']) org = Organization.objects.get(login=request.POST['organization']) try: sync_org_account_github(org, payload) logger.info('Organization %s has been synced' % org) except IOError as e: messages.error(request, 'GitHub: %s' % e.strerror) return HttpResponseRedirect(org.get_absolute_url()) else: logger.info('Syncing user account %s with GitHub' % request.user) try: sync_user_account_github(request.user, payload) logger.info('User account %s has been synced' % request.user) except IOError as e: messages.error(request, 'GitHub: %s' % e.strerror) return HttpResponseRedirect(request.user.get_absolute_url())