OSDN Git Service

DeployKey moved to Key model
authormiks <miks@cubesystems.lv>
Sat, 31 Dec 2011 14:24:10 +0000 (16:24 +0200)
committermiks <miks@cubesystems.lv>
Sat, 31 Dec 2011 14:24:10 +0000 (16:24 +0200)
app/controllers/deploy_keys_controller.rb
app/models/deploy_key.rb [deleted file]
app/models/key.rb
app/models/project.rb
app/views/deploy_keys/_form.html.haml
db/migrate/20111225202855_create_deploy_keys.rb [deleted file]
db/migrate/20111231111825_add_project_id_to_key.rb [new file with mode: 0644]
db/schema.rb

index 6e04bb4..ca22e02 100644 (file)
@@ -12,28 +12,28 @@ class DeployKeysController < ApplicationController
   end
 
   def index
-    @keys = @project.deploy_keys.all
+    @keys = @project.keys.all
   end
 
   def show
-    @key = @project.deploy_keys.find(params[:id])
+    @key = @project.keys.find(params[:id])
   end
 
   def new
-    @key = @project.deploy_keys.new
+    @key = @project.keys.new
 
     respond_with(@key)
   end
 
   def create
-    @key = @project.deploy_keys.new(params[:deploy_key])
+    @key = @project.keys.new(params[:key])
     @key.save
 
     respond_with(@key)
   end
 
   def destroy
-    @key = @project.deploy_keys.find(params[:id])
+    @key = @project.keys.find(params[:id])
     @key.destroy
 
     respond_to do |format|
diff --git a/app/models/deploy_key.rb b/app/models/deploy_key.rb
deleted file mode 100644 (file)
index c720f09..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-require 'unique_public_key_validator'
-
-class DeployKey < ActiveRecord::Base
-  belongs_to :project
-
-  validates :title,
-            :presence => true,
-            :length   => { :within => 0..255 }
-
-  validates :key,
-            :presence => true,
-            :uniqueness => true,
-            :length   => { :within => 0..5000 }
-
-  validates_with UniquePublicKeyValidator
-
-  before_save :set_identifier
-  after_save :update_repository
-  after_destroy :repository_delete_key
-
-  def set_identifier
-    self.identifier = "deploy_#{project.code}_#{Time.now.to_i}"
-  end
-
-  def update_repository
-    Gitlabhq::GitHost.system.new.configure do |c|
-      c.update_keys(identifier, key)
-      c.update_project(project.path, project)
-    end
-  end
-
-  def repository_delete_key
-    Gitlabhq::GitHost.system.new.configure do |c|
-      c.delete_key(identifier)
-      c.update_project(project.path, project)
-    end
-  end
-
-end
-# == Schema Information
-#
-# Table name: keys
-#
-#  id         :integer         not null, primary key
-#  project_id    :integer         not null
-#  created_at :datetime
-#  updated_at :datetime
-#  key        :text
-#  title      :string(255)
-#  identifier :string(255)
-#
-
-
index 0e4088e..e597536 100644 (file)
@@ -1,7 +1,6 @@
-require 'unique_public_key_validator'
-
 class Key < ActiveRecord::Base
   belongs_to :user
+  belongs_to :project
 
   validates :title,
             :presence => true,
@@ -12,14 +11,16 @@ class Key < ActiveRecord::Base
             :uniqueness => true,
             :length   => { :within => 0..5000 }
 
-  validates_with UniquePublicKeyValidator
-
   before_save :set_identifier
   after_save :update_repository
   after_destroy :repository_delete_key
 
   def set_identifier
-    self.identifier = "#{user.identifier}_#{Time.now.to_i}"
+    if is_deploy_key
+      self.identifier = "deploy_#{project.code}_#{Time.now.to_i}"
+    else
+      self.identifier = "#{user.identifier}_#{Time.now.to_i}"
+    end
   end
 
   def update_repository
@@ -35,10 +36,18 @@ class Key < ActiveRecord::Base
       c.update_projects(projects)
     end
   end
+  
+  def is_deploy_key
+    true if project_id
+  end
 
    #projects that has this key
   def projects
-    user.projects
+    if is_deploy_key
+      [project]
+    else
+      user.projects
+    end
   end
 end
 # == Schema Information
index 05b2dd8..102efc4 100644 (file)
@@ -14,7 +14,7 @@ class Project < ActiveRecord::Base
   has_many :users, :through => :users_projects
   has_many :notes, :dependent => :destroy
   has_many :snippets, :dependent => :destroy
-  has_many :deploy_keys, :dependent => :destroy
+  has_many :keys, :dependent => :destroy
   has_many :web_hooks, :dependent => :destroy
 
   acts_as_taggable
@@ -189,15 +189,15 @@ class Project < ActiveRecord::Base
   end
 
   def repository_readers
-    keys = Key.joins({:user => :users_projects}).
+    read_keys = Key.joins({:user => :users_projects}).
       where("users_projects.project_id = ? AND users_projects.repo_access = ?", id, Repository::REPO_R)
-    keys.map(&:identifier) + deploy_keys.map(&:identifier)
+    read_keys.map(&:identifier) + keys.map(&:identifier)
   end
 
   def repository_writers
-    keys = Key.joins({:user => :users_projects}).
+    write_keys = Key.joins({:user => :users_projects}).
       where("users_projects.project_id = ? AND users_projects.repo_access = ?", id, Repository::REPO_RW)
-    keys.map(&:identifier)
+    write_keys.map(&:identifier)
   end
 
   def readers
index 8d38535..d3a2682 100644 (file)
@@ -1,5 +1,5 @@
 %div
-  = form_for [@project, @key], :remote => true do |f|
+  = form_for [@project, @key], :url => project_deploy_keys_path, :remote => true do |f|
     -if @key.errors.any?
       %ul
         - @key.errors.full_messages.each do |msg|
diff --git a/db/migrate/20111225202855_create_deploy_keys.rb b/db/migrate/20111225202855_create_deploy_keys.rb
deleted file mode 100644 (file)
index 60e7337..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-class CreateDeployKeys < ActiveRecord::Migration
-  def change
-    create_table :deploy_keys do |t|
-      t.integer  "project_id",    :null => false
-      t.datetime "created_at"
-      t.datetime "updated_at"
-      t.text     "key"
-      t.string   "title"
-      t.string   "identifier"
-    end
-  end
-end
diff --git a/db/migrate/20111231111825_add_project_id_to_key.rb b/db/migrate/20111231111825_add_project_id_to_key.rb
new file mode 100644 (file)
index 0000000..dc80cbd
--- /dev/null
@@ -0,0 +1,6 @@
+class AddProjectIdToKey < ActiveRecord::Migration
+  def change
+    add_column :keys, :project_id, :integer, :null => true
+    change_column :keys, :user_id, :integer, :null => true
+  end
+end
index f6ac7d8..aab847e 100644 (file)
 #
 # It's strongly recommended to check this file into your version control system.
 
-ActiveRecord::Schema.define(:version => 20111225202855) do
-
-  create_table "deploy_keys", :force => true do |t|
-    t.integer  "project_id", :null => false
-    t.datetime "created_at"
-    t.datetime "updated_at"
-    t.text     "key"
-    t.string   "title"
-    t.string   "identifier"
-  end
+ActiveRecord::Schema.define(:version => 20111231111825) do
 
   create_table "issues", :force => true do |t|
     t.string   "title"
@@ -36,12 +27,13 @@ ActiveRecord::Schema.define(:version => 20111225202855) do
   end
 
   create_table "keys", :force => true do |t|
-    t.integer  "user_id",    :null => false
+    t.integer  "user_id"
     t.datetime "created_at"
     t.datetime "updated_at"
     t.text     "key"
     t.string   "title"
     t.string   "identifier"
+    t.integer  "project_id"
   end
 
   create_table "merge_requests", :force => true do |t|