fixed 取消仓库增加成员时同时加进组织操作

This commit is contained in:
xxq250 2024-01-29 16:05:22 +08:00
parent d2663eb7b7
commit 6ff89d7929
1 changed files with 126 additions and 126 deletions

View File

@ -21,67 +21,67 @@ module ProjectOperable
end end
def add_member!(user_id, role_name='Developer') def add_member!(user_id, role_name='Developer')
if self.owner.is_a?(Organization) # if self.owner.is_a?(Organization)
case role_name # case role_name
when 'Manager' # when 'Manager'
# 构建相应的团队 # # 构建相应的团队
team = self.owner.teams.admin.take # team = self.owner.teams.admin.take
if team.nil? # if team.nil?
team = Team.build(self.user_id, 'admin', '管理员', '', 'admin', false, false) # team = Team.build(self.user_id, 'admin', '管理员', '', 'admin', false, false)
gteam = $gitea_client.post_orgs_teams_by_org(self.owner.login, {body: team.to_gitea_hash.to_json}) rescue nil # gteam = $gitea_client.post_orgs_teams_by_org(self.owner.login, {body: team.to_gitea_hash.to_json}) rescue nil
team.update_attributes!({gtid: gteam["id"]}) unless gteam.nil? # team.update_attributes!({gtid: gteam["id"]}) unless gteam.nil?
end # end
#
# 设置项目在团队中的访问权限 # # 设置项目在团队中的访问权限
team_project = TeamProject.build(self.user_id, team.id, self.id) # team_project = TeamProject.build(self.user_id, team.id, self.id)
tp_result = $gitea_client.put_teams_repos_by_id_org_repo(team.gtid, self.owner.login, self.identifier) rescue nil # tp_result = $gitea_client.put_teams_repos_by_id_org_repo(team.gtid, self.owner.login, self.identifier) rescue nil
#
# 新增对应的团队成员 # # 新增对应的团队成员
team_user = TeamUser.build(self.user_id, user_id, team.id) # team_user = TeamUser.build(self.user_id, user_id, team.id)
$gitea_client.put_teams_members_by_id_username(team&.gtid, team_user.user&.login) rescue nil # 新增新的 # $gitea_client.put_teams_members_by_id_username(team&.gtid, team_user.user&.login) rescue nil # 新增新的
#
# 确保组织成员中有该用户 # # 确保组织成员中有该用户
OrganizationUser.build(self.user_id, user_id) # OrganizationUser.build(self.user_id, user_id)
when 'Developer' # when 'Developer'
# 构建相应的团队 # # 构建相应的团队
team = self.owner.teams.write.take # team = self.owner.teams.write.take
if team.nil? # if team.nil?
team = Team.build(self.user_id, 'developer', '开发者', '', 'write', false, false) # team = Team.build(self.user_id, 'developer', '开发者', '', 'write', false, false)
gteam = $gitea_client.post_orgs_teams_by_org(self.owner.login, {body: team.to_gitea_hash.to_json}) rescue nil # gteam = $gitea_client.post_orgs_teams_by_org(self.owner.login, {body: team.to_gitea_hash.to_json}) rescue nil
team.update_attributes!({gtid: gteam["id"]}) unless gteam.nil? # team.update_attributes!({gtid: gteam["id"]}) unless gteam.nil?
end # end
#
# 设置项目在团队中的访问权限 # # 设置项目在团队中的访问权限
team_project = TeamProject.build(self.user_id, team.id, self.id) # team_project = TeamProject.build(self.user_id, team.id, self.id)
tp_result = $gitea_client.put_teams_repos_by_id_org_repo(team.gtid, self.owner.login, self.identifier) rescue nil # tp_result = $gitea_client.put_teams_repos_by_id_org_repo(team.gtid, self.owner.login, self.identifier) rescue nil
#
# 新增对应的团队成员 # # 新增对应的团队成员
team_user = TeamUser.build(self.user_id, user_id, team.id) # team_user = TeamUser.build(self.user_id, user_id, team.id)
$gitea_client.put_teams_members_by_id_username(team&.gtid, team_user.user&.login) rescue nil # 新增新的 # $gitea_client.put_teams_members_by_id_username(team&.gtid, team_user.user&.login) rescue nil # 新增新的
#
# 确保组织成员中有该用户 # # 确保组织成员中有该用户
OrganizationUser.build(self.user_id, user_id) # OrganizationUser.build(self.user_id, user_id)
when 'Reporter' # when 'Reporter'
# 构建相应的团队 # # 构建相应的团队
team = self.owner.teams.read.take # team = self.owner.teams.read.take
if team.nil? # if team.nil?
team = Team.build(self.user_id, 'reporter', '报告者', '', 'read', false, false) # team = Team.build(self.user_id, 'reporter', '报告者', '', 'read', false, false)
gteam = $gitea_client.post_orgs_teams_by_org(self.owner.login, {body: team.to_gitea_hash.to_json}) rescue nil # gteam = $gitea_client.post_orgs_teams_by_org(self.owner.login, {body: team.to_gitea_hash.to_json}) rescue nil
team.update_attributes!({gtid: gteam["id"]}) unless gteam.nil? # team.update_attributes!({gtid: gteam["id"]}) unless gteam.nil?
end # end
#
# 设置项目在团队中的访问权限 # # 设置项目在团队中的访问权限
team_project = TeamProject.build(self.user_id, team.id, self.id) # team_project = TeamProject.build(self.user_id, team.id, self.id)
tp_result = $gitea_client.put_teams_repos_by_id_org_repo(team.gtid, self.owner.login, self.identifier) rescue nil # tp_result = $gitea_client.put_teams_repos_by_id_org_repo(team.gtid, self.owner.login, self.identifier) rescue nil
#
# 新增对应的团队成员 # # 新增对应的团队成员
team_user = TeamUser.build(self.user_id, user_id, team.id) # team_user = TeamUser.build(self.user_id, user_id, team.id)
$gitea_client.put_teams_members_by_id_username(team&.gtid, team_user.user&.login) rescue nil # 新增新的 # $gitea_client.put_teams_members_by_id_username(team&.gtid, team_user.user&.login) rescue nil # 新增新的
#
# 确保组织成员中有该用户 # # 确保组织成员中有该用户
OrganizationUser.build(self.user_id, user_id) # OrganizationUser.build(self.user_id, user_id)
end # end
end # end
member = members.create!(user_id: user_id, team_user_id: team_user&.id) member = members.create!(user_id: user_id, team_user_id: team_user&.id)
set_developer_role(member, role_name) set_developer_role(member, role_name)
end end
@ -116,71 +116,71 @@ module ProjectOperable
def change_member_role!(user_id, role) def change_member_role!(user_id, role)
member = self.member(user_id) member = self.member(user_id)
# 所有者为组织,并且该用户属于组织成员 # 所有者为组织,并且该用户属于组织成员
if self.owner.is_a?(Organization) && member.team_user.present? # if self.owner.is_a?(Organization) && member.team_user.present?
case role&.name # case role&.name
when 'Manager' # when 'Manager'
# 构建相应的团队 # # 构建相应的团队
team = self.owner.teams.admin.take # team = self.owner.teams.admin.take
if team.nil? # if team.nil?
team = Team.build(self.user_id, 'admin', '管理员', '', 'admin', false, false) # team = Team.build(self.user_id, 'admin', '管理员', '', 'admin', false, false)
gteam = $gitea_client.post_orgs_teams_by_org(self.owner.login, {body: team.to_gitea_hash.to_json}) rescue nil # gteam = $gitea_client.post_orgs_teams_by_org(self.owner.login, {body: team.to_gitea_hash.to_json}) rescue nil
team.update_attributes!({gtid: gteam["id"]}) unless gteam.nil? # team.update_attributes!({gtid: gteam["id"]}) unless gteam.nil?
end # end
#
# 设置项目在团队中的访问权限 # # 设置项目在团队中的访问权限
team_project = TeamProject.build(self.user_id, team.id, self.id) # team_project = TeamProject.build(self.user_id, team.id, self.id)
tp_result = $gitea_client.put_teams_repos_by_id_org_repo(team.gtid, self.owner.login, self.identifier) rescue nil # tp_result = $gitea_client.put_teams_repos_by_id_org_repo(team.gtid, self.owner.login, self.identifier) rescue nil
#
# 更改对应的团队成员 # # 更改对应的团队成员
team_user = member.team_user # team_user = member.team_user
$gitea_client.delete_teams_members_by_id_username(team_user.team.gtid, team_user.user&.login) rescue nil # 移除旧的 # $gitea_client.delete_teams_members_by_id_username(team_user.team.gtid, team_user.user&.login) rescue nil # 移除旧的
$gitea_client.put_teams_members_by_id_username(team&.gtid, team_user.user&.login) rescue nil # 新增新的 # $gitea_client.put_teams_members_by_id_username(team&.gtid, team_user.user&.login) rescue nil # 新增新的
team_user.update_attributes!({team_id: team.id}) unless team.team_users.exists?(user_id: member.user_id) # team_user.update_attributes!({team_id: team.id}) unless team.team_users.exists?(user_id: member.user_id)
#
# 确保组织成员中有该用户 # # 确保组织成员中有该用户
OrganizationUser.build(self.user_id, user_id) # OrganizationUser.build(self.user_id, user_id)
when 'Developer' # when 'Developer'
# 构建相应的团队 # # 构建相应的团队
team = self.owner.teams.write.take # team = self.owner.teams.write.take
if team.nil? # if team.nil?
team = Team.build(self.user_id, 'developer', '开发者', '', 'write', false, false) # team = Team.build(self.user_id, 'developer', '开发者', '', 'write', false, false)
gteam = $gitea_client.post_orgs_teams_by_org(self.owner.login, {body: team.to_gitea_hash.to_json}) rescue nil # gteam = $gitea_client.post_orgs_teams_by_org(self.owner.login, {body: team.to_gitea_hash.to_json}) rescue nil
team.update_attributes!({gtid: gteam["id"]}) unless gteam.nil? # team.update_attributes!({gtid: gteam["id"]}) unless gteam.nil?
end # end
# 设置项目在团队中的访问权限 # # 设置项目在团队中的访问权限
team_project = TeamProject.build(self.user_id, team.id, self.id) # team_project = TeamProject.build(self.user_id, team.id, self.id)
$gitea_client.put_teams_repos_by_id_org_repo(team.gtid, self.owner.login, self.identifier) rescue nil # $gitea_client.put_teams_repos_by_id_org_repo(team.gtid, self.owner.login, self.identifier) rescue nil
#
# 更改对应的团队成员 # # 更改对应的团队成员
team_user = member.team_user # team_user = member.team_user
$gitea_client.delete_teams_members_by_id_username(team_user.team.gtid, team_user.user&.login) rescue nil # 移除旧的 # $gitea_client.delete_teams_members_by_id_username(team_user.team.gtid, team_user.user&.login) rescue nil # 移除旧的
$gitea_client.put_teams_members_by_id_username(team&.gtid, team_user.user&.login) rescue nil # 新增新的 # $gitea_client.put_teams_members_by_id_username(team&.gtid, team_user.user&.login) rescue nil # 新增新的
team_user.update_attributes!({team_id: team.id}) unless team.team_users.exists?(user_id: member.user_id) # team_user.update_attributes!({team_id: team.id}) unless team.team_users.exists?(user_id: member.user_id)
#
OrganizationUser.build(self.user_id, user_id) # OrganizationUser.build(self.user_id, user_id)
when 'Reporter' # when 'Reporter'
# 构建相应的团队 # # 构建相应的团队
team = self.owner.teams.read.take # team = self.owner.teams.read.take
if team.nil? # if team.nil?
team = Team.build(self.user_id, 'reporter', '报告者', '', 'read', false, false) # team = Team.build(self.user_id, 'reporter', '报告者', '', 'read', false, false)
gteam = $gitea_client.post_orgs_teams_by_org(self.owner.login, {body: team.to_gitea_hash.to_json}) rescue nil # gteam = $gitea_client.post_orgs_teams_by_org(self.owner.login, {body: team.to_gitea_hash.to_json}) rescue nil
team.update_attributes!({gtid: gteam["id"]}) unless gteam.nil? # team.update_attributes!({gtid: gteam["id"]}) unless gteam.nil?
end # end
#
# 设置项目在团队中的访问权限 # # 设置项目在团队中的访问权限
team_project = TeamProject.build(self.user_id, team.id, self.id) # team_project = TeamProject.build(self.user_id, team.id, self.id)
tp_result = $gitea_client.put_teams_repos_by_id_org_repo(team.gtid, self.owner.login, self.identifier) rescue nil # tp_result = $gitea_client.put_teams_repos_by_id_org_repo(team.gtid, self.owner.login, self.identifier) rescue nil
#
# 更改对应的团队成员 # # 更改对应的团队成员
team_user = member.team_user # team_user = member.team_user
$gitea_client.delete_teams_members_by_id_username(team_user.team.gtid, team_user.user&.login) rescue nil # 移除旧的 # $gitea_client.delete_teams_members_by_id_username(team_user.team.gtid, team_user.user&.login) rescue nil # 移除旧的
$gitea_client.put_teams_members_by_id_username(team&.gtid, team_user.user&.login) rescue nil # 新增新的 # $gitea_client.put_teams_members_by_id_username(team&.gtid, team_user.user&.login) rescue nil # 新增新的
team_user.update_attributes!({team_id: team.id}) unless team.team_users.exists?(user_id: member.user_id) # team_user.update_attributes!({team_id: team.id}) unless team.team_users.exists?(user_id: member.user_id)
#
# 确保组织成员中有该用户 # # 确保组织成员中有该用户
OrganizationUser.build(self.user_id, user_id) # OrganizationUser.build(self.user_id, user_id)
end # end
end # end
member.member_roles.last.update_attributes!(role: role) member.member_roles.last.update_attributes!(role: role)
end end