Merge branch 'feature/groups' of dev.gitlabhq.com:gitlabhq

This commit is contained in:
Valery Sizov 2012-10-03 12:17:48 +00:00
commit 9e80d2d4f7
39 changed files with 747 additions and 37 deletions

36
app/models/group.rb Normal file
View file

@ -0,0 +1,36 @@
# == Schema Information
#
# Table name: groups
#
# id :integer not null, primary key
# name :string(255) not null
# code :string(255) not null
# owner_id :integer not null
# created_at :datetime not null
# updated_at :datetime not null
#
class Group < 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_id, 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
User.joins(:users_projects).where('users_projects.project_id' => project_ids).uniq
end
end

View file

@ -11,6 +11,7 @@ class Project < ActiveRecord::Base
attr_accessor :error_code
# Relations
belongs_to :group
belongs_to :owner, class_name: "User"
has_many :users, through: :users_projects
has_many :events, dependent: :destroy
@ -25,16 +26,19 @@ class Project < ActiveRecord::Base
has_many :wikis, dependent: :destroy
has_many :protected_branches, dependent: :destroy
delegate :name, to: :owner, allow_nil: true, prefix: true
# Scopes
scope :public_only, where(private_flag: false)
scope :without_user, lambda { |user| where("id not in (:ids)", ids: user.projects.map(&:id) ) }
scope :without_user, ->(user) { where("id NOT IN (:ids)", ids: user.projects.map(&:id) ) }
scope :not_in_group, ->(group) { where("id NOT IN (:ids)", ids: group.project_ids ) }
def self.active
joins(:issues, :notes, :merge_requests).order("issues.created_at, notes.created_at, merge_requests.created_at DESC")
end
def self.search query
where("name like :query or code like :query or path like :query", query: "%#{query}%")
where("name like :query OR code like :query OR path like :query", query: "%#{query}%")
end
def self.create_by_user(params, user)
@ -173,4 +177,6 @@ end
# wall_enabled :boolean default(TRUE), not null
# merge_requests_enabled :boolean default(TRUE), not null
# wiki_enabled :boolean default(TRUE), not null
# group_id :integer
#