summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/controllers/events_controller.rb20
-rw-r--r--app/controllers/projects_controller.rb4
-rw-r--r--app/models/event.rb7
-rw-r--r--app/models/project.rb1
-rw-r--r--app/views/events/index.html.haml19
-rw-r--r--app/views/layouts/_nav_project.html.haml4
-rw-r--r--config/routes.rb4
-rw-r--r--db/migrate/20150320001810_create_event_table.rb11
-rw-r--r--db/schema.rb10
9 files changed, 78 insertions, 2 deletions
diff --git a/app/controllers/events_controller.rb b/app/controllers/events_controller.rb
new file mode 100644
index 0000000..6bfe280
--- /dev/null
+++ b/app/controllers/events_controller.rb
@@ -0,0 +1,20 @@
+class EventsController < ApplicationController
+ EVENTS_PER_PAGE = 50
+
+ before_filter :authenticate_user!
+ before_filter :project
+ before_filter :authorize_manage_project!
+
+ layout 'project'
+
+ def index
+ page = (params[:page] || 1).to_i
+ @events = project.events.order("created_at DESC").page(page).per(EVENTS_PER_PAGE)
+ end
+
+ private
+
+ def project
+ @project ||= Project.find(params[:project_id])
+ end
+end
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index 9e7e44c..84481b7 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -63,6 +63,10 @@ class ProjectsController < ApplicationController
def update
if project.update_attributes(params[:project])
+ project.events.create(
+ user_id: current_user.id,
+ description: "User #{current_user.username} updated projects settings"
+ )
redirect_to project, notice: 'Project was successfully updated.'
else
render action: "edit"
diff --git a/app/models/event.rb b/app/models/event.rb
new file mode 100644
index 0000000..27413d1
--- /dev/null
+++ b/app/models/event.rb
@@ -0,0 +1,7 @@
+class Event < ActiveRecord::Base
+ belongs_to :project
+
+ validates :description,
+ presence: true,
+ length: { in: 5..200 }
+end
diff --git a/app/models/project.rb b/app/models/project.rb
index cb1258e..0d4d2a0 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -39,6 +39,7 @@ class Project < ActiveRecord::Base
has_many :runners, through: :runner_projects
has_many :web_hooks, dependent: :destroy
has_many :jobs, dependent: :destroy
+ has_many :events, dependent: :destroy
# Project services
has_many :services, dependent: :destroy
diff --git a/app/views/events/index.html.haml b/app/views/events/index.html.haml
new file mode 100644
index 0000000..779f49b
--- /dev/null
+++ b/app/views/events/index.html.haml
@@ -0,0 +1,19 @@
+%h3.page-title Events
+
+%table.table
+ %thead
+ %tr
+ %th User ID
+ %th Description
+ %th When
+ - @events.each do |event|
+ %tr
+ %td
+ = event.user_id
+ %td
+ = event.description
+ %td.light
+ = time_ago_in_words event.updated_at
+ ago
+
+= paginate @events \ No newline at end of file
diff --git a/app/views/layouts/_nav_project.html.haml b/app/views/layouts/_nav_project.html.haml
index a1e221d..063f54e 100644
--- a/app/views/layouts/_nav_project.html.haml
+++ b/app/views/layouts/_nav_project.html.haml
@@ -28,3 +28,7 @@
= link_to edit_project_path(@project) do
%i.icon-cogs
Settings
+ = nav_link path: 'events#index' do
+ = link_to project_events_path(@project) do
+ %i.icon-book
+ Events
diff --git a/config/routes.rb b/config/routes.rb
index 1ee64ba..9ff6c5d 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -28,7 +28,7 @@ Rails.application.routes.draw do
end
resource :charts, only: [:show]
-
+
resources :refs, constraints: { ref_id: /.*/ }, only: [] do
resources :commits, only: [:show] do
member do
@@ -63,6 +63,8 @@ Rails.application.routes.draw do
get :deploy_jobs
end
end
+
+ resources :events, only: [:index]
end
resource :user_sessions do
diff --git a/db/migrate/20150320001810_create_event_table.rb b/db/migrate/20150320001810_create_event_table.rb
new file mode 100644
index 0000000..ea4f93c
--- /dev/null
+++ b/db/migrate/20150320001810_create_event_table.rb
@@ -0,0 +1,11 @@
+class CreateEventTable < ActiveRecord::Migration
+ def change
+ create_table :events do |t|
+ t.integer :project_id
+ t.integer :user_id
+ t.text :description
+
+ t.timestamps
+ end
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index a0b007c..d488ce1 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -11,7 +11,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema.define(version: 20150324001227) do
+ActiveRecord::Schema.define(version: 20150320001810) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@@ -57,6 +57,14 @@ ActiveRecord::Schema.define(version: 20150324001227) do
add_index "commits", ["project_id"], name: "index_commits_on_project_id", using: :btree
add_index "commits", ["sha"], name: "index_commits_on_sha", using: :btree
+ create_table "events", force: true do |t|
+ t.integer "project_id"
+ t.integer "user_id"
+ t.text "description"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
create_table "jobs", force: true do |t|
t.integer "project_id", null: false
t.text "commands"