Example #1
0
def import_from_heroku(request):
    """Imports a project from a Heroku app."""
    if request.method == 'POST':
        logger.info('Importing an app from Heroku')
        api_key = request.user.get_profile().heroku_api_key
        r = requests.get('%s/apps/%s' % (
            settings.HEROKU_API_URL, request.POST['app_name']
        ), auth=('', api_key))
        app = r.json()
        # Creates a new project based on the Heroku app
        language = Language.objects.get(
            name=app['buildpack_provided_description'])
        # TODO: generator must be detected from project data
        generator = Generator.objects.get(name='Sphinx')
        project = Project(owner=request.user, name=app['name'],
                          url=app['web_url'], git_url=app['git_url'],
                          private=True, language=language, generator=generator)
        project.save()
        logger.info('Imported %s app from Heroku.' % project.name)
        # Creates a post-receive webhook at GitHub
        create_hook_heroku(request)
        # Build docs for the first time
        update_docs(project)
        return HttpResponseRedirect(
            reverse('project_detail', args=[request.user, project]))
    else:
        raise Http404
Example #2
0
def import_from_heroku(request):
    """Imports a project from a Heroku app."""
    if request.method == 'POST':
        logger.info('Importing an app from Heroku')
        api_key = request.user.get_profile().heroku_api_key
        r = requests.get('%s/apps/%s' %
                         (settings.HEROKU_API_URL, request.POST['app_name']),
                         auth=('', api_key))
        app = r.json()
        # Creates a new project based on the Heroku app
        language = Language.objects.get(
            name=app['buildpack_provided_description'])
        # TODO: generator must be detected from project data
        generator = Generator.objects.get(name='Sphinx')
        project = Project(owner=request.user,
                          name=app['name'],
                          url=app['web_url'],
                          git_url=app['git_url'],
                          private=True,
                          language=language,
                          generator=generator)
        project.save()
        logger.info('Imported %s app from Heroku.' % project.name)
        # Creates a post-receive webhook at GitHub
        create_hook_heroku(request)
        # Build docs for the first time
        update_docs(project)
        return HttpResponseRedirect(
            reverse('project_detail', args=[request.user, project]))
    else:
        raise Http404
Example #3
0
def post_receive_heroku(request):
    """Post-receive hook to be hit by Heroku."""
    if request.method == 'POST':
        app_url = request.POST['url']
        logger.info('Heroku deploy hook triggered for %s' % app_url)
        project = get_object_or_404(Project, html_url=app_url)
        update_docs(project)
        return HttpResponse('Thanks')
    else:
        raise Http404
Example #4
0
def post_receive_github(request):
    """Post-receive hook to be hit by GitHub."""
    if request.method == 'POST':
        payload = json.loads(request.POST['payload'])
        repo_url = payload['repository']['url']
        logger.info('GitHub post-receive hook triggered for %s' % repo_url)
        project = get_object_or_404(Project, html_url=repo_url)
        update_docs(project)
        return HttpResponse('Thanks')
    else:
        raise Http404
Example #5
0
 def form_valid(self, form):
     """Creates a service hook at GitHub."""
     create_hook_github(self.request, self.object)
     self.object.active = True
     # Initiates first build
     self.build = update_docs(self.object)
     logger.info('Created hook for %s/%s' % (
         self.kwargs['username'], self.kwargs['project']))
     return super(ProjectActivate, self).form_valid(form)
Example #6
0
 def form_valid(self, form):
     """Creates a service hook at GitHub."""
     create_hook_github(self.request, self.object)
     self.object.active = True
     # Initiates first build
     self.build = update_docs(self.object)
     logger.info('Created hook for %s/%s' %
                 (self.kwargs['username'], self.kwargs['project']))
     return super(ProjectActivate, self).form_valid(form)
Example #7
0
def restart_build(request, username, project):
    """Restarts build for the given project."""
    logger.info('Restarting build for %s/%s' % (username, project))
    if request.method == 'POST':
        project = Project.objects.get(owner__login=username, name=project)
        build = update_docs(project)
        return HttpResponseRedirect(reverse('project_build_detail', args=[
            username, project, build.pk]))
    else:
        raise Http404