From c14c92ac11f1b0e188fbcd5b025d157ae1e7c4d5 Mon Sep 17 00:00:00 2001 From: "vilet.yy" Date: Thu, 29 Apr 2021 10:23:16 +0800 Subject: [PATCH] fix: pull_request permit develop create pr --- app/controllers/pull_requests_controller.rb | 4 ++-- app/models/concerns/project_operable.rb | 6 ++++++ app/models/project_unit.rb | 2 ++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/app/controllers/pull_requests_controller.rb b/app/controllers/pull_requests_controller.rb index d0221b768..3d18e5032 100644 --- a/app/controllers/pull_requests_controller.rb +++ b/app/controllers/pull_requests_controller.rb @@ -140,7 +140,7 @@ class PullRequestsController < ApplicationController end def pr_merge - return render_forbidden("你没有权限操作.") unless current_user.project_manager?(@project) + return render_forbidden("你没有权限操作.") unless @project.develper?(current_user) if params[:do].blank? normal_status(-1, "请选择合并方式") @@ -215,7 +215,7 @@ class PullRequestsController < ApplicationController def get_relatived @project_tags = @project.issue_tags&.select(:id,:name, :color).as_json @project_versions = @project.versions&.select(:id,:name, :status).as_json - @project_members = @project.all_managers + @project_members = @project.all_developers @project_priories = IssuePriority&.select(:id,:name, :position).as_json end diff --git a/app/models/concerns/project_operable.rb b/app/models/concerns/project_operable.rb index 5f8f929e7..a4646f9ee 100644 --- a/app/models/concerns/project_operable.rb +++ b/app/models/concerns/project_operable.rb @@ -99,6 +99,12 @@ module ProjectOperable return User.from("( #{ member_sql } UNION #{ team_user_sql } ) AS users").distinct end + def all_developers + member_sql = User.joins(members: :roles).where(members: {project_id: self.id}, roles: {name: %w(Manager Developer)}).to_sql + team_user_sql = User.joins(teams: :team_projects).where(teams: {authorize: %w(owner admin write)}, team_projects: {project_id: self.id}).to_sql + return User.from("( #{ member_sql } UNION #{ team_user_sql } ) AS users").distinct + end + def all_managers member_sql = User.joins(members: :roles).where(members: {project_id: self.id}, roles: {name: %w(Manager)}).to_sql team_user_sql = User.joins(teams: :team_projects).where(teams: {authorize: %w(owner admin)},team_projects: {project_id: self.id}).to_sql diff --git a/app/models/project_unit.rb b/app/models/project_unit.rb index 0f4275345..1cb74fc4a 100644 --- a/app/models/project_unit.rb +++ b/app/models/project_unit.rb @@ -27,6 +27,8 @@ class ProjectUnit < ApplicationRecord end def self.update_by_unit_types!(project, types) + # 默认code类型自动创建 + types << "code" project.project_units.where.not(unit_type: types).each(&:destroy!) types.each do |type| project.project_units.find_or_create_by!(unit_type: type)