Files
gitlabhq/app/models/group.rb
T
Dmitriy Zaporozhets 0c5a9f20b5 Merge branch '6-1-stable' of https://dev.gitlab.org/gitlab/gitlabhq into 6-1-stable-ee
Conflicts:
	VERSION
	app/controllers/application_controller.rb
	app/controllers/omniauth_callbacks_controller.rb
	app/models/merge_request.rb
	app/models/user.rb
	app/views/groups/_projects.html.haml
	config/routes.rb
	db/schema.rb
	doc/install/installation.md
2013-09-27 15:24:54 +03:00

62 lines
1.4 KiB
Ruby

# == Schema Information
#
# Table name: namespaces
#
# id :integer not null, primary key
# name :string(255) not null
# path :string(255) not null
# owner_id :integer not null
# created_at :datetime not null
# updated_at :datetime not null
# type :string(255)
# description :string(255) default(""), not null
#
class Group < Namespace
has_many :users_groups, dependent: :destroy
has_many :users, through: :users_groups
has_many :project_group_links, dependent: :destroy
has_many :shared_projects, through: :project_group_links, source: 'project'
attr_accessible :ldap_cn, :ldap_access
validates :ldap_access,
inclusion: { in: UsersGroup.group_access_roles.values },
presence: true,
if: ->(group) { group.ldap_cn.present? }
after_create :add_owner
def human_name
name
end
def owners
@owners ||= (users_groups.owners.map(&:user) << owner).uniq
end
def add_users(user_ids, group_access)
user_ids.compact.each do |user_id|
self.users_groups.create(user_id: user_id, group_access: group_access)
end
end
def change_owner(user)
self.owner = user
membership = users_groups.where(user_id: user.id).first
if membership
membership.update_attributes(group_access: UsersGroup::OWNER)
else
add_owner
end
end
private
def add_owner
self.add_users([owner.id], UsersGroup::OWNER)
end
end