diff options
author | Johan Sørensen <johan@johansorensen.com> | 2008-04-21 00:11:04 +0200 |
---|---|---|
committer | Johan Sørensen <johan@johansorensen.com> | 2008-04-21 00:11:04 +0200 |
commit | d46486643c475436b7938b955e7d1582ef1a90c2 (patch) | |
tree | 22035666d67bddacd486bae5bd7eb521fd1103b7 | |
parent | a6ecefdc8ea78756d1ec63f8de846b3202545df4 (diff) | |
download | gitorious-mainline-outdated-d46486643c475436b7938b955e7d1582ef1a90c2.zip gitorious-mainline-outdated-d46486643c475436b7938b955e7d1582ef1a90c2.tar.gz gitorious-mainline-outdated-d46486643c475436b7938b955e7d1582ef1a90c2.tar.bz2 |
Moved events to be primarily pivoting around the project.
-rw-r--r-- | app/controllers/comments_controller.rb | 2 | ||||
-rw-r--r-- | app/controllers/committers_controller.rb | 4 | ||||
-rw-r--r-- | app/controllers/merge_requests_controller.rb | 8 | ||||
-rw-r--r-- | app/controllers/projects_controller.rb | 6 | ||||
-rw-r--r-- | app/controllers/repositories_controller.rb | 4 | ||||
-rw-r--r-- | app/models/action.rb | 2 | ||||
-rwxr-xr-x | app/models/event.rb | 1 | ||||
-rw-r--r-- | app/models/project.rb | 6 | ||||
-rw-r--r-- | app/models/user.rb | 4 | ||||
-rw-r--r-- | app/views/events/_events.html.erb | 2 | ||||
-rwxr-xr-x | data/hooks/post-receive | 7 | ||||
-rw-r--r-- | db/migrate/024_create_events.rb | 2 | ||||
-rw-r--r-- | spec/controllers/events_controller_spec.rb | 2 | ||||
-rw-r--r-- | spec/models/event_spec.rb | 13 | ||||
-rw-r--r-- | spec/models/project_spec.rb | 29 |
15 files changed, 59 insertions, 33 deletions
diff --git a/app/controllers/comments_controller.rb b/app/controllers/comments_controller.rb index 37d293f..1a31794 100644 --- a/app/controllers/comments_controller.rb +++ b/app/controllers/comments_controller.rb @@ -29,7 +29,7 @@ class CommentsController < ApplicationController @comment.project = @project respond_to do |format| if @comment.save - current_user.create_event(Action::COMMENT, @comment) + @project.create_event(Action::COMMENT, @comment, current_user) format.html do flash[:success] = "Your comment was added" redirect_to project_repository_comments_path(@project, @repository) diff --git a/app/controllers/committers_controller.rb b/app/controllers/committers_controller.rb index fafeef5..fe2b4d0 100644 --- a/app/controllers/committers_controller.rb +++ b/app/controllers/committers_controller.rb @@ -22,7 +22,7 @@ class CommittersController < ApplicationController respond_to do |format| if @repository.add_committer(@committer) @committership = @repository.committerships.find_by_user_id(@committer.id) - current_user.create_event(Action::ADD_COMMITTER, @committership) + @project.create_event(Action::ADD_COMMITTER, @committership, current_user) format.html { redirect_to([@repository.project, @repository]) } format.xml do render :xml => @committer @@ -40,7 +40,7 @@ class CommittersController < ApplicationController respond_to do |format| if @committership.destroy - current_user.create_event(Action::REMOVE_COMMITTER, @repository, params[:id]) + @project.create_event(Action::REMOVE_COMMITTER, @repository, current_user, params[:id]) flash[:success] = "User removed from repository" format.html { redirect_to [@repository.project, @repository] } format.xml { render :nothing, :status => :ok } diff --git a/app/controllers/merge_requests_controller.rb b/app/controllers/merge_requests_controller.rb index 58edb82..2799824 100644 --- a/app/controllers/merge_requests_controller.rb +++ b/app/controllers/merge_requests_controller.rb @@ -31,7 +31,7 @@ class MergeRequestsController < ApplicationController @merge_request.user = current_user respond_to do |format| if @merge_request.save - current_user.create_event(Action::REQUEST_MERGE, @merge_request) + @project.create_event(Action::REQUEST_MERGE, @merge_request, current_user) format.html { flash[:success] = %Q{You sent a merge request to "#{@merge_request.target_repository.name}"} redirect_to project_repository_path(@project, @repository) and return @@ -51,7 +51,7 @@ class MergeRequestsController < ApplicationController # TODO: put to change status @merge_request.status = params[:merge_request][:status] if @merge_request.save - current_user.create_event(Action::RESOLVE_MERGE_REQUEST, @merge_request) + @project.create_event(Action::RESOLVE_MERGE_REQUEST, @merge_request, current_user) flash[:notice] = "The merge request was marked as #{@merge_request.status_string}" end redirect_to [@project, @repository, @merge_request] @@ -64,7 +64,7 @@ class MergeRequestsController < ApplicationController def update @merge_request.attributes = params[:merge_request] if @merge_request.save - current_user.create_event(Action::UPDATE_MERGE_REQUEST, @merge_request) + @project.create_event(Action::UPDATE_MERGE_REQUEST, @merge_request, current_user) flash[:success] = "Merge request was updated" redirect_to [@project, @repository, @merge_request] else @@ -75,7 +75,7 @@ class MergeRequestsController < ApplicationController def destroy @merge_request.destroy - current_user.create_event(Action::DELETE_MERGE_REQUEST, @repository) + @project.create_event(Action::DELETE_MERGE_REQUEST, @repository, current_user) flash[:success] = "Merge request was retracted" redirect_to project_repository_path(@project, @repository) end diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 2b12466..1bd16a9 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -46,7 +46,7 @@ class ProjectsController < ApplicationController @project = Project.new(params[:project]) @project.user = current_user if @project.save - current_user.create_event(Action::CREATE_PROJECT, @project) + @project.create_event(Action::CREATE_PROJECT, @project, current_user) redirect_to projects_path else render :action => 'new' @@ -65,7 +65,7 @@ class ProjectsController < ApplicationController end @project.attributes = params[:project] if @project.save - current_user.create_event(Action::UPDATE_PROJECT, @project) + @project.create_event(Action::UPDATE_PROJECT, @project, current_user) redirect_to project_path(@project) else render :action => 'new' @@ -81,7 +81,7 @@ class ProjectsController < ApplicationController if @project.can_be_deleted_by?(current_user) project_title = @project.title @project.destroy - current_user.create_event(Action::DELETE_PROJECT, nil, project_title) + #current_user.create_event(Action::DELETE_PROJECT, nil, project_title) else flash[:error] = "You're not the owner of this project, or the project has clones" end diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index 9a083c7..22742d7 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -61,7 +61,7 @@ class RepositoriesController < ApplicationController respond_to do |format| if @repository.save - current_user.create_event(Action::CLONE_REPOSITORY, @repository, @repository_to_clone.id) + @project.create_event(Action::CLONE_REPOSITORY, @repository, current_user, @repository_to_clone.id) location = project_repository_path(@project, @repository) format.html { redirect_to location } @@ -94,7 +94,7 @@ class RepositoriesController < ApplicationController repo_name = @repository.name flash[:notice] = "The repository was deleted" @repository.destroy - current_user.create_event(Action::DELETE_REPOSITORY, @project, repo_name) + @project.create_event(Action::DELETE_REPOSITORY, @project, current_user, repo_name) else flash[:error] = "You're not the owner of this repository" end diff --git a/app/models/action.rb b/app/models/action.rb index feb0fd0..9ec892f 100644 --- a/app/models/action.rb +++ b/app/models/action.rb @@ -30,7 +30,7 @@ class Action when DELETE_REPOSITORY "delete repository" when COMMIT - "delete commit" + "commit" when CREATE_BRANCH "create branch" when DELETE_BRANCH diff --git a/app/models/event.rb b/app/models/event.rb index 6cf798e..4b8e8f3 100755 --- a/app/models/event.rb +++ b/app/models/event.rb @@ -1,4 +1,5 @@ class Event < ActiveRecord::Base belongs_to :user + belongs_to :project belongs_to :target, :polymorphic => true end diff --git a/app/models/project.rb b/app/models/project.rb index 35e9a2f..343ba98 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -9,7 +9,7 @@ class Project < ActiveRecord::Base :class_name => "Repository" has_many :repository_clones, :conditions => ["mainline = ?", false], :class_name => "Repository" - has_many :events, :as => :target, :dependent => :destroy + has_many :events, :order => "created_at asc" is_indexed :fields => ["title", "description", "slug"], :concatenate => [ @@ -133,6 +133,10 @@ class Project < ActiveRecord::Base } super({:procs => [info]}.merge(opts)) end + + def create_event(action_id, target, user, data = nil, body = nil) + events.create(:action => action_id, :target => target, :user => user, :body => body, :data => data) + end protected def create_mainline_repository diff --git a/app/models/user.rb b/app/models/user.rb index fe453bb..8ae08b9 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -120,10 +120,6 @@ class User < ActiveRecord::Base super({:except => [:activation_code, :crypted_password, :remember_token, :remember_token_expires_at, :salt, :ssh_key_id]}.merge(opts)) end - def create_event(action_id, target, data = nil, body = nil) - events.create(:action => action_id, :target => target, :body => body, :data => data) - end - protected # before filter def encrypt_password diff --git a/app/views/events/_events.html.erb b/app/views/events/_events.html.erb index ae2b306..27a3c36 100644 --- a/app/views/events/_events.html.erb +++ b/app/views/events/_events.html.erb @@ -4,7 +4,7 @@ <li> <div style="margin: 20px; padding-bottom: 10px;" > <% unless action.empty? %> - <%= link_to event.user.login, user_path(event.user) %> <%= action %> <%= time_ago_in_words(event.date) %> + <%= link_to event.user.login, user_path(event.user) %> <%= action %> <%= time_ago_in_words(event.created_at) %> <% end %><br/> <div style="float: left; margin: 5px;"> <%= gravatar(event.user.email, :size => 32) %> diff --git a/data/hooks/post-receive b/data/hooks/post-receive index 86151a5..a7e78e8 100755 --- a/data/hooks/post-receive +++ b/data/hooks/post-receive @@ -70,6 +70,7 @@ while line = gets user = User.find_by_email(hash[:email]) if user.nil? + # TODO: no user should be ok, no need to skip $stdout.puts "** The email '#{hash[:email]}' is not registered." next end @@ -122,10 +123,10 @@ while line = gets next unless action_id - puts "#{hash[:author]}: #{Action.name(action_id)} #{ref} on #{slug} [#{hash[:date]}]" - puts " #{hash[:message]}" + # puts "#{hash[:author]}: #{Action.name(action_id)} #{ref} on #{slug} [#{hash[:date]}]" + # puts " #{hash[:message]}" - user.create_event(action_id, repository, ref, hash[:message]) + project.create_event(action_id, repository, user, ref, hash[:message]) end puts "=> Thanks! http://#{GitoriousConfig['gitorious_host']}/events" diff --git a/db/migrate/024_create_events.rb b/db/migrate/024_create_events.rb index 7f734ad..1d513de 100644 --- a/db/migrate/024_create_events.rb +++ b/db/migrate/024_create_events.rb @@ -2,6 +2,7 @@ class CreateEvents < ActiveRecord::Migration def self.up create_table :events do |t| t.integer :user_id, :null => false + t.integer :project_id, :null => false t.integer :action, :null => false t.string :data # Additional data t.text :body @@ -13,6 +14,7 @@ class CreateEvents < ActiveRecord::Migration end add_index :events, :user_id + add_index :events, :project_id end def self.down diff --git a/spec/controllers/events_controller_spec.rb b/spec/controllers/events_controller_spec.rb index 6e34bee..8ca2d3e 100644 --- a/spec/controllers/events_controller_spec.rb +++ b/spec/controllers/events_controller_spec.rb @@ -12,7 +12,7 @@ describe EventsController do end it "shows news" do - users(:johan).create_event(Action::CREATE_PROJECT, @repository, "", "") + projects(:johans).create_event(Action::CREATE_PROJECT, @repository, users(:johan), "", "") do_get response.should be_success end diff --git a/spec/models/event_spec.rb b/spec/models/event_spec.rb index 5548512..d59be01 100644 --- a/spec/models/event_spec.rb +++ b/spec/models/event_spec.rb @@ -5,6 +5,7 @@ describe Event do @event = new_event @user = users(:johan) @repository = repositories(:johans) + @project = @repository.project end def new_event(opts={}) @@ -13,21 +14,13 @@ describe Event do :body => "blabla" }.merge(opts)) c.user = opts[:user] || users(:johan) + c.project = opts[:project] || @project c end it "should have valid associations" do @event.should have_valid_associations - end - - it "should create an event from the action name" do - @user.create_event(Action::CREATE_PROJECT, @repository, "", "").should_not == nil - end - - it "should create an event even without a valid id" do - @user.create_event(52342, @repository).should_not == nil - end - + end end diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb index 1e90f6d..9f33bf3 100644 --- a/spec/models/project_spec.rb +++ b/spec/models/project_spec.rb @@ -113,5 +113,34 @@ describe Project do project.send(attr).should be_blank end end + + describe "Project events" do + before(:each) do + @project = projects(:johans) + @user = users(:johan) + @repository = @project.repositories.first + end + + it "should create an event from the action name" do + @project.create_event(Action::CREATE_PROJECT, @repository, @user, "", "").should_not == nil + end + + it "should create an event even without a valid id" do + @project.create_event(52342, @repository, @user).should_not == nil + end + + it "creates valid attributes on the event" do + e = @project.create_event(Action::COMMIT, @repository, @user, "somedata", "a body") + e.should be_valid + e.new_record?.should == false + e.reload + e.action.should == Action::COMMIT + e.target.should == @repository + e.project.should == @project + e.user.should == @user + e.data.should == "somedata" + e.body.should == "a body" + end + end end |