Skip to content
代码片段 群组 项目
未验证 提交 e9edcd01 编辑于 作者: Vijay Hawoldar's avatar Vijay Hawoldar 提交者: GitLab
浏览文件

Merge branch 'refactor_bso_duplication' into 'master'

Refactored non-billable check for Gitlab.com BSO

See merge request https://gitlab.com/gitlab-org/gitlab/-/merge_requests/179392



Merged-by: default avatarVijay Hawoldar <vhawoldar@gitlab.com>
Approved-by: default avatarVijay Hawoldar <vhawoldar@gitlab.com>
Co-authored-by: default avatarSuraj Tripathi <stripathi@gitlab.com>
No related branches found
No related tags found
无相关合并请求
...@@ -610,15 +610,8 @@ def block_seat_overages? ...@@ -610,15 +610,8 @@ def block_seat_overages?
def seats_available_for?(invites, access_level, member_role_id) def seats_available_for?(invites, access_level, member_role_id)
return true unless gitlab_subscription return true unless gitlab_subscription
nonbillable = if member_role_id return true if ::GitlabSubscriptions::MemberManagement::BlockSeatOverages.non_billable_member?(
custom_role = MemberRole.find_by_id(member_role_id) access_level, member_role_id, exclude_guests?)
custom_role && !custom_role.occupies_seat?
else
access_level == ::Gitlab::Access::MINIMAL_ACCESS ||
(access_level == ::Gitlab::Access::GUEST && exclude_guests?)
end
return true if nonbillable
billable_ids = billed_user_ids[:user_ids].map(&:to_s) billable_ids = billed_user_ids[:user_ids].map(&:to_s)
......
...@@ -19,6 +19,16 @@ def seats_available_for?(source, invites, access_level, member_role_id) ...@@ -19,6 +19,16 @@ def seats_available_for?(source, invites, access_level, member_role_id)
seats_available_for_self_managed?(parsed_invites, access_level, member_role_id) seats_available_for_self_managed?(parsed_invites, access_level, member_role_id)
end end
def non_billable_member?(access_level, member_role_id, exclude_guests)
if member_role_id
custom_role = MemberRole.find_by_id(member_role_id)
custom_role && !custom_role.occupies_seat?
else
access_level == ::Gitlab::Access::MINIMAL_ACCESS ||
(access_level == ::Gitlab::Access::GUEST && exclude_guests)
end
end
private private
def process_invites(source, list) def process_invites(source, list)
...@@ -69,7 +79,8 @@ def block_seat_overages_for_self_managed? ...@@ -69,7 +79,8 @@ def block_seat_overages_for_self_managed?
end end
def seats_available_for_self_managed?(invites, access_level, member_role_id) def seats_available_for_self_managed?(invites, access_level, member_role_id)
return true if non_billable_member?(access_level, member_role_id) exclude_guests = ::License.current.exclude_guests_from_active_count?
return true if non_billable_member?(access_level, member_role_id, exclude_guests)
billable_ids = get_billable_user_ids billable_ids = get_billable_user_ids
new_invites = invites - billable_ids new_invites = invites - billable_ids
...@@ -79,18 +90,6 @@ def seats_available_for_self_managed?(invites, access_level, member_role_id) ...@@ -79,18 +90,6 @@ def seats_available_for_self_managed?(invites, access_level, member_role_id)
::License.current.seats >= (billable_ids.count + new_invites.count) ::License.current.seats >= (billable_ids.count + new_invites.count)
end end
def non_billable_member?(access_level, member_role_id)
if member_role_id
custom_role = MemberRole.find_by_id(member_role_id)
custom_role && !custom_role.occupies_seat?
else
exclude_guests = ::License.current.exclude_guests_from_active_count?
access_level == ::Gitlab::Access::MINIMAL_ACCESS ||
(access_level == ::Gitlab::Access::GUEST && exclude_guests)
end
end
def get_billable_user_ids def get_billable_user_ids
::User.billable.select(:id).map { |user| user.id.to_s } ::User.billable.select(:id).map { |user| user.id.to_s }
end end
......
0% 加载中 .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册