From 2dae0e18e09132c0db32c8646d8d11b30cfcb83f Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Wed, 4 Jan 2012 00:42:14 +0200 Subject: [PATCH] web hooks scaffold started --- app/controllers/hooks_controller.rb | 43 ++++++++++++++++++++++ app/controllers/projects_controller.rb | 2 +- app/controllers/repositories_controller.rb | 2 +- app/models/user.rb | 1 + app/models/web_hook.rb | 11 ++++++ app/views/hooks/index.html.haml | 10 +++++ app/workers/post_receive.rb | 2 + config/routes.rb | 6 ++- spec/models/user_spec.rb | 1 + spec/models/web_hook_spec.rb | 11 ++++++ 10 files changed, 85 insertions(+), 4 deletions(-) create mode 100644 app/controllers/hooks_controller.rb create mode 100644 app/views/hooks/index.html.haml diff --git a/app/controllers/hooks_controller.rb b/app/controllers/hooks_controller.rb new file mode 100644 index 00000000..70516dac --- /dev/null +++ b/app/controllers/hooks_controller.rb @@ -0,0 +1,43 @@ +class HooksController < ApplicationController + before_filter :authenticate_user! + before_filter :project + layout "project" + + # Authorize + before_filter :add_project_abilities + before_filter :authorize_read_project! + before_filter :authorize_admin_project!, :only => [:new, :create, :destroy] + + respond_to :html + + def index + @hooks = @project.web_hooks + end + + def new + @hook = @project.web_hooks.new + end + + def create + @hook = @project.web_hooks.new(params[:hook]) + @hook.author = current_user + @hook.save + + if @hook.valid? + redirect_to [@project, @hook] + else + respond_with(@hook) + end + end + + def show + @hook = @project.web_hooks.find(params[:id]) + end + + def destroy + @hook = @project.web_hooks.find(params[:id]) + @hook.destroy + + redirect_to project_hooks_path(@project) + end +end diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 1e859cea..29fcb52e 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -68,7 +68,7 @@ class ProjectsController < ApplicationController def show return render "projects/empty" unless @project.repo_exists? && @project.has_commits? - limit = (params[:limit] || 20).to_i + limit = (params[:limit] || 10).to_i @activities = @project.cached_updates(limit) end diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index 9a112f46..c0652cbe 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -9,7 +9,7 @@ class RepositoriesController < ApplicationController layout "project" def show - @activities = @project.fresh_commits(20) + @activities = @project.fresh_commits(10) end def branches diff --git a/app/models/user.rb b/app/models/user.rb index 8b136de9..ee9f0de1 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -82,5 +82,6 @@ end # linkedin :string(255) default(""), not null # twitter :string(255) default(""), not null # authentication_token :string(255) +# dark_scheme :boolean default(FALSE), not null # diff --git a/app/models/web_hook.rb b/app/models/web_hook.rb index 0058bd57..40b930c3 100644 --- a/app/models/web_hook.rb +++ b/app/models/web_hook.rb @@ -18,3 +18,14 @@ class WebHook < ActiveRecord::Base # There was a problem calling this web hook, let's forget about it. end end +# == Schema Information +# +# Table name: web_hooks +# +# id :integer not null, primary key +# url :string(255) +# project_id :integer +# created_at :datetime +# updated_at :datetime +# + diff --git a/app/views/hooks/index.html.haml b/app/views/hooks/index.html.haml new file mode 100644 index 00000000..95636739 --- /dev/null +++ b/app/views/hooks/index.html.haml @@ -0,0 +1,10 @@ += render "repositories/head" +- unless @hooks.empty? + %div.update-data.ui-box.ui-box-small + .data + - @hooks.each do |hook| + %a.update-item{:href => project_hooks_path(@project, hook)} + %span.update-title{:style => "margin-bottom:0px;"} + = hook.url +- else + %h3 No hooks diff --git a/app/workers/post_receive.rb b/app/workers/post_receive.rb index d79f4599..922a66eb 100644 --- a/app/workers/post_receive.rb +++ b/app/workers/post_receive.rb @@ -1,4 +1,6 @@ class PostReceive + @queue = :post_receive + def self.perform(reponame, oldrev, newrev, ref) project = Project.find_by_path(reponame) return false if project.nil? diff --git a/config/routes.rb b/config/routes.rb index 90b391cd..416ea6a9 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,8 +1,8 @@ Gitlab::Application.routes.draw do # Optionally, enable Resque here - # require 'resque/server' - # mount Resque::Server.new, at: '/info/resque' + require 'resque/server' + mount Resque::Server.new, at: '/info/resque' get 'tags'=> 'tags#index' get 'tags/:tag' => 'projects#index' @@ -83,6 +83,8 @@ Gitlab::Application.routes.draw do get :commits end end + + resources :hooks, :only => [:index, :new, :create, :destroy, :show] resources :snippets resources :commits resources :team_members diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 3a3ac7c9..a62e56cd 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -65,5 +65,6 @@ end # linkedin :string(255) default(""), not null # twitter :string(255) default(""), not null # authentication_token :string(255) +# dark_scheme :boolean default(FALSE), not null # diff --git a/spec/models/web_hook_spec.rb b/spec/models/web_hook_spec.rb index e73e554a..309bfc0f 100644 --- a/spec/models/web_hook_spec.rb +++ b/spec/models/web_hook_spec.rb @@ -52,3 +52,14 @@ describe WebHook do end end end +# == Schema Information +# +# Table name: web_hooks +# +# id :integer not null, primary key +# url :string(255) +# project_id :integer +# created_at :datetime +# updated_at :datetime +# +