fix: forked projects private set
This commit is contained in:
parent
0e7f3a8905
commit
8331d849d5
|
@ -116,10 +116,11 @@ class ProjectsController < ApplicationController
|
||||||
|
|
||||||
Projects::UpdateForm.new(validate_params).validate!
|
Projects::UpdateForm.new(validate_params).validate!
|
||||||
|
|
||||||
private = params[:private] || false
|
private = @project.forked_from_project.present? ? !@project.forked_from_project.is_public : params[:private] || false
|
||||||
|
|
||||||
new_project_params = project_params.except(:private).merge(is_public: !private)
|
new_project_params = project_params.except(:private).merge(is_public: !private)
|
||||||
@project.update_attributes!(new_project_params)
|
@project.update_attributes!(new_project_params)
|
||||||
|
@project.forked_projects&.update(is_public: @project.is_public)
|
||||||
gitea_params = {
|
gitea_params = {
|
||||||
private: private,
|
private: private,
|
||||||
default_branch: @project.default_branch,
|
default_branch: @project.default_branch,
|
||||||
|
@ -144,6 +145,7 @@ class ProjectsController < ApplicationController
|
||||||
ActiveRecord::Base.transaction do
|
ActiveRecord::Base.transaction do
|
||||||
Gitea::Repository::DeleteService.new(@project.owner, @project.identifier).call
|
Gitea::Repository::DeleteService.new(@project.owner, @project.identifier).call
|
||||||
@project.destroy!
|
@project.destroy!
|
||||||
|
@project.forked_projects&.update(forked_from_project_id: nil)
|
||||||
render_ok
|
render_ok
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
|
|
|
@ -101,10 +101,12 @@ class Project < ApplicationRecord
|
||||||
belongs_to :organization_extension, foreign_key: :user_id, primary_key: :organization_id, optional: true, counter_cache: :num_projects
|
belongs_to :organization_extension, foreign_key: :user_id, primary_key: :organization_id, optional: true, counter_cache: :num_projects
|
||||||
belongs_to :project_category, optional: true , :counter_cache => true
|
belongs_to :project_category, optional: true , :counter_cache => true
|
||||||
belongs_to :project_language, optional: true , :counter_cache => true
|
belongs_to :project_language, optional: true , :counter_cache => true
|
||||||
|
belongs_to :forked_from_project, class_name: 'Project', optional: true, foreign_key: :forked_from_project_id
|
||||||
has_many :project_trends, dependent: :destroy
|
has_many :project_trends, dependent: :destroy
|
||||||
has_many :watchers, as: :watchable, dependent: :destroy
|
has_many :watchers, as: :watchable, dependent: :destroy
|
||||||
has_many :fork_users, dependent: :destroy
|
has_many :fork_users, dependent: :destroy
|
||||||
has_many :forked_users, class_name: 'ForkUser', foreign_key: :fork_project_id, dependent: :destroy
|
has_many :forked_users, class_name: 'ForkUser', foreign_key: :fork_project_id, dependent: :destroy
|
||||||
|
has_many :forked_projects, class_name: 'Project', foreign_key: :forked_from_project_id
|
||||||
has_one :project_educoder, dependent: :destroy
|
has_one :project_educoder, dependent: :destroy
|
||||||
|
|
||||||
has_one :project_score, dependent: :destroy
|
has_one :project_score, dependent: :destroy
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
namespace :sync_projects_by_forked_project do
|
||||||
|
desc "sync projects is_public by forked project"
|
||||||
|
task is_public: :environment do
|
||||||
|
count = 0
|
||||||
|
Project.where.not(forked_from_project_id: nil).find_each do |project|
|
||||||
|
project.update(is_public: project&.forked_from_project&.is_public)
|
||||||
|
count +=1
|
||||||
|
end
|
||||||
|
puts "共同步了#{count}个项目"
|
||||||
|
end
|
||||||
|
|
||||||
|
task destroy: :environment do
|
||||||
|
count = 0
|
||||||
|
Project.where.not(forked_from_project_id: nil).find_each do |project|
|
||||||
|
if project.forked_from_project.nil?
|
||||||
|
project.update(forked_from_project_id: nil)
|
||||||
|
count +=1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
puts "共同步了#{count}个项目"
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue