Commit e29ccece authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Namespace model added. Migration to convert exit project/groups

parent ced242a2
No related merge requests found
...@@ -10,26 +10,7 @@ ...@@ -10,26 +10,7 @@
# updated_at :datetime not null # updated_at :datetime not null
# #
class Group < ActiveRecord::Base class Group < Namespace
attr_accessible :code, :name, :owner_id
has_many :projects
belongs_to :owner, class_name: "User"
validates :name, presence: true, uniqueness: true
validates :code, presence: true, uniqueness: true
validates :owner, presence: true
delegate :name, to: :owner, allow_nil: true, prefix: true
def self.search query
where("name LIKE :query OR code LIKE :query", query: "%#{query}%")
end
def to_param
code
end
def users def users
User.joins(:users_projects).where(users_projects: {project_id: project_ids}).uniq User.joins(:users_projects).where(users_projects: {project_id: project_ids}).uniq
end end
......
class Namespace < ActiveRecord::Base
attr_accessible :code, :name, :owner_id
has_many :projects
belongs_to :owner, class_name: "User"
validates :name, presence: true, uniqueness: true
validates :code, presence: true, uniqueness: true
validates :owner, presence: true
delegate :name, to: :owner, allow_nil: true, prefix: true
def self.search query
where("name LIKE :query OR code LIKE :query", query: "%#{query}%")
end
def to_param
code
end
end
...@@ -32,7 +32,8 @@ class Project < ActiveRecord::Base ...@@ -32,7 +32,8 @@ class Project < ActiveRecord::Base
attr_accessor :error_code attr_accessor :error_code
# Relations # Relations
belongs_to :group belongs_to :group, foreign_key: "namespace_id", conditions: 'type = Group'
belongs_to :namespace
belongs_to :owner, class_name: "User" belongs_to :owner, class_name: "User"
has_many :users, through: :users_projects has_many :users, through: :users_projects
has_many :events, dependent: :destroy has_many :events, dependent: :destroy
...@@ -192,4 +193,12 @@ class Project < ActiveRecord::Base ...@@ -192,4 +193,12 @@ class Project < ActiveRecord::Base
def gitlab_ci? def gitlab_ci?
gitlab_ci_service && gitlab_ci_service.active gitlab_ci_service && gitlab_ci_service.active
end end
def path_with_namespace
if namespace
namespace.code + '/' + path
else
path
end
end
end end
class ConvertGroupToNamespace < ActiveRecord::Migration
def up
rename_table 'groups', 'namespaces'
add_column :namespaces, :type, :string, null: true
# Migrate old groups
Namespace.update_all(type: 'Group')
end
def down
raise 'Rollback is not allowed'
end
end
class AddNamespaceIdToProject < ActiveRecord::Migration
def change
rename_column :projects, :group_id, :namespace_id
end
end
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
# #
# It's strongly recommended to check this file into your version control system. # It's strongly recommended to check this file into your version control system.
ActiveRecord::Schema.define(:version => 20121120113838) do ActiveRecord::Schema.define(:version => 20121122150932) do
create_table "events", :force => true do |t| create_table "events", :force => true do |t|
t.string "target_type" t.string "target_type"
...@@ -25,14 +25,6 @@ ActiveRecord::Schema.define(:version => 20121120113838) do ...@@ -25,14 +25,6 @@ ActiveRecord::Schema.define(:version => 20121120113838) do
t.integer "author_id" t.integer "author_id"
end end
create_table "groups", :force => true do |t|
t.string "name", :null => false
t.string "code", :null => false
t.integer "owner_id", :null => false
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "issues", :force => true do |t| create_table "issues", :force => true do |t|
t.string "title" t.string "title"
t.integer "assignee_id" t.integer "assignee_id"
...@@ -88,6 +80,15 @@ ActiveRecord::Schema.define(:version => 20121120113838) do ...@@ -88,6 +80,15 @@ ActiveRecord::Schema.define(:version => 20121120113838) do
t.datetime "updated_at", :null => false t.datetime "updated_at", :null => false
end end
create_table "namespaces", :force => true do |t|
t.string "name", :null => false
t.string "code", :null => false
t.integer "owner_id", :null => false
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "type"
end
create_table "notes", :force => true do |t| create_table "notes", :force => true do |t|
t.text "note" t.text "note"
t.string "noteable_id" t.string "noteable_id"
...@@ -117,7 +118,7 @@ ActiveRecord::Schema.define(:version => 20121120113838) do ...@@ -117,7 +118,7 @@ ActiveRecord::Schema.define(:version => 20121120113838) do
t.boolean "wall_enabled", :default => true, :null => false t.boolean "wall_enabled", :default => true, :null => false
t.boolean "merge_requests_enabled", :default => true, :null => false t.boolean "merge_requests_enabled", :default => true, :null => false
t.boolean "wiki_enabled", :default => true, :null => false t.boolean "wiki_enabled", :default => true, :null => false
t.integer "group_id" t.integer "namespace_id"
end end
create_table "protected_branches", :force => true do |t| create_table "protected_branches", :force => true do |t|
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment