Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDouwe Maan <douwe@gitlab.com>2015-11-17 17:49:37 +0300
committerDouwe Maan <douwe@gitlab.com>2015-11-17 17:49:37 +0300
commitecb83afabcb69d80995b56323bb89b1ee1176225 (patch)
tree362fc6cca63a3ffb121bc234cf9bf00bdec9aaef /app/models/group.rb
parente849b51cae8956c9d4eebe9c42804443a55edb83 (diff)
Refactor ability changes
Diffstat (limited to 'app/models/group.rb')
-rw-r--r--app/models/group.rb23
1 files changed, 21 insertions, 2 deletions
diff --git a/app/models/group.rb b/app/models/group.rb
index 11fde7ba6cd..2c9e75496b9 100644
--- a/app/models/group.rb
+++ b/app/models/group.rb
@@ -20,8 +20,7 @@ require 'file_size_validator'
class Group < Namespace
include Gitlab::ConfigHelper
include Referable
- include HasOwners
-
+
has_many :group_members, dependent: :destroy, as: :source, class_name: 'GroupMember'
alias_method :members, :group_members
has_many :users, through: :group_members
@@ -66,6 +65,10 @@ class Group < Namespace
end
end
+ def owners
+ @owners ||= group_members.owners.includes(:user).map(&:user)
+ end
+
def add_users(user_ids, access_level, current_user = nil)
user_ids.each do |user_id|
Member.add_user(self.group_members, user_id, access_level, current_user)
@@ -92,6 +95,22 @@ class Group < Namespace
add_user(user, Gitlab::Access::MASTER, current_user)
end
+ def add_owner(user, current_user = nil)
+ add_user(user, Gitlab::Access::OWNER, current_user)
+ end
+
+ def has_owner?(user)
+ owners.include?(user)
+ end
+
+ def has_master?(user)
+ members.masters.where(user_id: user).any?
+ end
+
+ def last_owner?(user)
+ has_owner?(user) && owners.size == 1
+ end
+
def avatar_type
unless self.avatar.image?
self.errors.add :avatar, "only images allowed"