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
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
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
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
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)
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)
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