From 506ab1722da95d58b7a5326d2a8908292bd1e82f Mon Sep 17 00:00:00 2001 From: "vilet.yy" Date: Mon, 19 Apr 2021 10:54:36 +0800 Subject: [PATCH 1/7] add: team nickname --- app/controllers/organizations/teams_controller.rb | 2 +- app/models/team.rb | 1 + app/views/organizations/teams/_detail.json.jbuilder | 1 + db/migrate/20210419023310_add_nickname_to_teams.rb | 5 +++++ 4 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20210419023310_add_nickname_to_teams.rb diff --git a/app/controllers/organizations/teams_controller.rb b/app/controllers/organizations/teams_controller.rb index 5bc01fe39..04b748c8a 100644 --- a/app/controllers/organizations/teams_controller.rb +++ b/app/controllers/organizations/teams_controller.rb @@ -60,7 +60,7 @@ class Organizations::TeamsController < Organizations::BaseController private def team_params - params.permit(:name, :description, :authorize, :includes_all_project, :can_create_org_project, :unit_types => []) + params.permit(:name, :nickname, :description, :authorize, :includes_all_project, :can_create_org_project, :unit_types => []) end def load_organization diff --git a/app/models/team.rb b/app/models/team.rb index 82a3e88c1..d17827da8 100644 --- a/app/models/team.rb +++ b/app/models/team.rb @@ -14,6 +14,7 @@ # gtid :integer # created_at :datetime not null # updated_at :datetime not null +# nickname :string(255) # # Indexes # diff --git a/app/views/organizations/teams/_detail.json.jbuilder b/app/views/organizations/teams/_detail.json.jbuilder index 4f3588cb9..cb0507b5a 100644 --- a/app/views/organizations/teams/_detail.json.jbuilder +++ b/app/views/organizations/teams/_detail.json.jbuilder @@ -1,5 +1,6 @@ json.id team.id json.name team.name +json.nickname team.nickname json.description team.description json.authorize team.authorize json.includes_all_project team.includes_all_project diff --git a/db/migrate/20210419023310_add_nickname_to_teams.rb b/db/migrate/20210419023310_add_nickname_to_teams.rb new file mode 100644 index 000000000..ed80f1935 --- /dev/null +++ b/db/migrate/20210419023310_add_nickname_to_teams.rb @@ -0,0 +1,5 @@ +class AddNicknameToTeams < ActiveRecord::Migration[5.2] + def change + add_column :teams, :nickname, :string + end +end From 5a20842edb947cd1c2b8a02c0d6c3ad87628aec2 Mon Sep 17 00:00:00 2001 From: "vilet.yy" Date: Mon, 19 Apr 2021 11:26:30 +0800 Subject: [PATCH 2/7] fix: org not need create member --- app/models/project.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/project.rb b/app/models/project.rb index 9aa6283f6..ecaf588cd 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -161,7 +161,7 @@ class Project < ApplicationRecord #创建项目管理员 def check_project_members - unless members.present? && members.exists?(user_id: self.user_id) + unless members.present? && member?(user_id) member_params = { user_id: self.user_id, project_id: self.id From 1920cb5ce3135a991feaac3d34ed6398dc466ecc Mon Sep 17 00:00:00 2001 From: "vilet.yy" Date: Mon, 19 Apr 2021 11:35:12 +0800 Subject: [PATCH 3/7] fix: org not need create member --- app/models/project.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/models/project.rb b/app/models/project.rb index ecaf588cd..4b96ab2b2 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -161,7 +161,8 @@ class Project < ApplicationRecord #创建项目管理员 def check_project_members - unless members.present? && member?(user_id) + return if owner.is_a?(Organization) + unless members.present? && members.exists?(user_id: self.user_id) member_params = { user_id: self.user_id, project_id: self.id From 9300483c1a0a8bcdd8ccb850d482c95363b35f46 Mon Sep 17 00:00:00 2001 From: "vilet.yy" Date: Mon, 19 Apr 2021 11:40:38 +0800 Subject: [PATCH 4/7] fix --- app/views/organizations/teams/_detail.json.jbuilder | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/organizations/teams/_detail.json.jbuilder b/app/views/organizations/teams/_detail.json.jbuilder index cb0507b5a..68572814f 100644 --- a/app/views/organizations/teams/_detail.json.jbuilder +++ b/app/views/organizations/teams/_detail.json.jbuilder @@ -1,6 +1,6 @@ json.id team.id json.name team.name -json.nickname team.nickname +json.nickname team.nickname.blank? ? team.name : team.nickname json.description team.description json.authorize team.authorize json.includes_all_project team.includes_all_project From 1c6982d15b10d250378d3e8e688dee7616e7677a Mon Sep 17 00:00:00 2001 From: "vilet.yy" Date: Mon, 19 Apr 2021 12:07:12 +0800 Subject: [PATCH 5/7] add: org valid --- app/controllers/organizations/organizations_controller.rb | 1 + app/controllers/organizations/teams_controller.rb | 5 ++++- app/forms/organizations/create_form.rb | 8 ++++++++ app/forms/organizations/create_team_form.rb | 8 ++++++++ .../organizations/organizations/_detail.json.jbuilder | 2 +- 5 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 app/forms/organizations/create_form.rb create mode 100644 app/forms/organizations/create_team_form.rb diff --git a/app/controllers/organizations/organizations_controller.rb b/app/controllers/organizations/organizations_controller.rb index 73335cf11..09c12fd5a 100644 --- a/app/controllers/organizations/organizations_controller.rb +++ b/app/controllers/organizations/organizations_controller.rb @@ -25,6 +25,7 @@ class Organizations::OrganizationsController < Organizations::BaseController def create ActiveRecord::Base.transaction do + Organizations::CreateForm.new(organization_params).validate! @organization = Organizations::CreateService.call(current_user, organization_params) Util.write_file(@image, avatar_path(@organization)) if params[:image].present? end diff --git a/app/controllers/organizations/teams_controller.rb b/app/controllers/organizations/teams_controller.rb index 04b748c8a..a8d06ce46 100644 --- a/app/controllers/organizations/teams_controller.rb +++ b/app/controllers/organizations/teams_controller.rb @@ -33,7 +33,10 @@ class Organizations::TeamsController < Organizations::BaseController end def create - @team = Organizations::Teams::CreateService.call(current_user, @organization, team_params) + ActiveRecord::Base.transaction do + Organizations::CreateTeamForm.new(team_params).validate! + @team = Organizations::Teams::CreateService.call(current_user, @organization, team_params) + end rescue Exception => e uid_logger_error(e.message) tip_exception(e.message) diff --git a/app/forms/organizations/create_form.rb b/app/forms/organizations/create_form.rb new file mode 100644 index 000000000..00c1dd15e --- /dev/null +++ b/app/forms/organizations/create_form.rb @@ -0,0 +1,8 @@ +class Organizations::CreateForm < BaseForm + NAME_REGEX = /^(?!_)(?!.*?_$)[a-zA-Z0-9_-]+$/ #只含有数字、字母、下划线不能以下划线开头和结尾 + attr_accessor :name, :description, :website, :location, :repo_admin_change_team_access, :visibility, :max_repo_creation, :nickname + + validates :name, :nickname, :visibility, presence: true + validates :name, format: { with: NAME_REGEX, multiline: true, message: "只能含有数字、字母、下划线且不能以下划线开头和结尾" } + +end diff --git a/app/forms/organizations/create_team_form.rb b/app/forms/organizations/create_team_form.rb new file mode 100644 index 000000000..67b81c5f2 --- /dev/null +++ b/app/forms/organizations/create_team_form.rb @@ -0,0 +1,8 @@ +class Organizations::CreateTeamForm < BaseForm + NAME_REGEX = /^(?!_)(?!.*?_$)[a-zA-Z0-9_-]+$/ #只含有数字、字母、下划线不能以下划线开头和结尾 + attr_accessor :name, :nickname, :description, :authorize, :includes_all_project, :can_create_org_project, :unit_types + + validates :name, :nickname, :authorize, :includes_all_project, presence: true + validates :name, format: { with: NAME_REGEX, multiline: true, message: "只能含有数字、字母、下划线且不能以下划线开头和结尾" } + +end diff --git a/app/views/organizations/organizations/_detail.json.jbuilder b/app/views/organizations/organizations/_detail.json.jbuilder index 64feadca1..4a8b512b9 100644 --- a/app/views/organizations/organizations/_detail.json.jbuilder +++ b/app/views/organizations/organizations/_detail.json.jbuilder @@ -1,6 +1,6 @@ json.id organization.id json.name organization.login -json.nickname organization.nickname +json.nickname organization.nickname.blank? ? organization.name : organization.nickname json.description organization.description json.website organization.website json.location organization.location From 01f32ae2d7d04b99c3b30e16d72dd64d3810680a Mon Sep 17 00:00:00 2001 From: "vilet.yy" Date: Mon, 19 Apr 2021 12:09:38 +0800 Subject: [PATCH 6/7] fix --- app/forms/organizations/create_team_form.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/forms/organizations/create_team_form.rb b/app/forms/organizations/create_team_form.rb index 67b81c5f2..898d69a1d 100644 --- a/app/forms/organizations/create_team_form.rb +++ b/app/forms/organizations/create_team_form.rb @@ -2,7 +2,7 @@ class Organizations::CreateTeamForm < BaseForm NAME_REGEX = /^(?!_)(?!.*?_$)[a-zA-Z0-9_-]+$/ #只含有数字、字母、下划线不能以下划线开头和结尾 attr_accessor :name, :nickname, :description, :authorize, :includes_all_project, :can_create_org_project, :unit_types - validates :name, :nickname, :authorize, :includes_all_project, presence: true + validates :name, :nickname, :authorize, presence: true validates :name, format: { with: NAME_REGEX, multiline: true, message: "只能含有数字、字母、下划线且不能以下划线开头和结尾" } end From 8055ae2c07e9310313e5cebc9d3183c523ff78bb Mon Sep 17 00:00:00 2001 From: "vilet.yy" Date: Mon, 19 Apr 2021 12:14:11 +0800 Subject: [PATCH 7/7] fix: org team nickname change error --- app/services/organizations/teams/update_service.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/services/organizations/teams/update_service.rb b/app/services/organizations/teams/update_service.rb index 71c82c40b..b5b273d8a 100644 --- a/app/services/organizations/teams/update_service.rb +++ b/app/services/organizations/teams/update_service.rb @@ -27,7 +27,7 @@ class Organizations::Teams::UpdateService < ApplicationService if team.authorize == "owner" update_params = params.slice(:description) else - update_params = params.slice(:name, :description, :authorize, :includes_all_project, :can_create_org_project) + update_params = params.slice(:name, :nickname, :description, :authorize, :includes_all_project, :can_create_org_project) end update_params end