From d2846293d067cdf38d2816768e059d901a960a22 Mon Sep 17 00:00:00 2001 From: Tomasz Maczukin Date: Tue, 3 Nov 2015 16:37:39 +0100 Subject: Move visibility_level check for forked projects to Project model --- app/models/project.rb | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'app/models/project.rb') diff --git a/app/models/project.rb b/app/models/project.rb index 74b89aad499..a4c634bdb5c 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -783,4 +783,9 @@ class Project < ActiveRecord::Base service.active = true service.save end + + def visibility_level_allowed?(level) + return true unless forked? + Gitlab::VisibilityLevel.allowed_fork_levels(forked_from_project.visibility_level).include?(level) + end end -- cgit v1.2.1 From 7cb442eed4f488e378b3f20008ebe6ed3b53d31d Mon Sep 17 00:00:00 2001 From: Tomasz Maczukin Date: Tue, 3 Nov 2015 18:23:48 +0100 Subject: Fix Project update service When project is updated and it is a fork, then visibility_level should not be less restrictive than in its parent project. --- app/models/project.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app/models/project.rb') diff --git a/app/models/project.rb b/app/models/project.rb index a4c634bdb5c..7f2dd37a3cc 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -786,6 +786,6 @@ class Project < ActiveRecord::Base def visibility_level_allowed?(level) return true unless forked? - Gitlab::VisibilityLevel.allowed_fork_levels(forked_from_project.visibility_level).include?(level) + Gitlab::VisibilityLevel.allowed_fork_levels(forked_from_project.visibility_level).include?(level.to_i) end end -- cgit v1.2.1 From 89ecba5e6cec6632c2f8e3baef6604b1b8ea0d45 Mon Sep 17 00:00:00 2001 From: Tomasz Maczukin Date: Wed, 4 Nov 2015 23:40:43 +0100 Subject: Update forks visibility_level after parent project visibility_level change --- app/models/project.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'app/models/project.rb') diff --git a/app/models/project.rb b/app/models/project.rb index 7f2dd37a3cc..f287e59b6df 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -731,7 +731,11 @@ class Project < ActiveRecord::Base end def forks_count - ForkedProjectLink.where(forked_from_project_id: self.id).count + forks.count + end + + def forks + ForkedProjectLink.where(forked_from_project_id: self.id) end def find_label(name) -- cgit v1.2.1 From 6f41e3d9caa28b2a654fb775202be632673f2299 Mon Sep 17 00:00:00 2001 From: Tomasz Maczukin Date: Wed, 18 Nov 2015 22:11:15 +0100 Subject: Change forks method to has_many relation --- app/models/project.rb | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'app/models/project.rb') diff --git a/app/models/project.rb b/app/models/project.rb index f287e59b6df..2562c441abe 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -97,9 +97,12 @@ class Project < ActiveRecord::Base has_one :gitlab_issue_tracker_service, dependent: :destroy has_one :external_wiki_service, dependent: :destroy - has_one :forked_project_link, dependent: :destroy, foreign_key: "forked_to_project_id" + has_one :forked_project_link, dependent: :destroy, foreign_key: "forked_to_project_id" + has_one :forked_from_project, through: :forked_project_link + + has_many :forked_project_links, foreign_key: "forked_from_project_id" + has_many :forks, through: :forked_project_links, source: :forked_to_project - has_one :forked_from_project, through: :forked_project_link # Merge Requests for target project should be removed with it has_many :merge_requests, dependent: :destroy, foreign_key: 'target_project_id' # Merge requests from source project should be kept when source project was removed @@ -734,10 +737,6 @@ class Project < ActiveRecord::Base forks.count end - def forks - ForkedProjectLink.where(forked_from_project_id: self.id) - end - def find_label(name) labels.find_by(name: name) end -- cgit v1.2.1 From 1144b70ab624ee1c1e7f2de0c92de021a7b5ea8e Mon Sep 17 00:00:00 2001 From: Tomasz Maczukin Date: Fri, 20 Nov 2015 00:13:56 +0100 Subject: Change update_forks_visibility_level into after_update hook in Project model --- app/models/project.rb | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'app/models/project.rb') diff --git a/app/models/project.rb b/app/models/project.rb index 2562c441abe..b8495c6cd4f 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -61,6 +61,19 @@ class Project < ActiveRecord::Base update_column(:last_activity_at, self.created_at) end + # update visibility_levet of forks + after_update :update_forks_visibility_level + def update_forks_visibility_level + return unless visibility_level < visibility_level_was + + forks.each do |forked_project| + if forked_project.visibility_level > visibility_level + forked_project.visibility_level = visibility_level + forked_project.save! + end + end + end + ActsAsTaggableOn.strict_case_match = true acts_as_taggable_on :tags -- cgit v1.2.1 From f177aaa5fa789654dc440d6ec4ae3546544c1401 Mon Sep 17 00:00:00 2001 From: Drew Blessing Date: Thu, 17 Dec 2015 16:08:14 -0600 Subject: Backport JIRA service --- app/models/project.rb | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'app/models/project.rb') diff --git a/app/models/project.rb b/app/models/project.rb index 13fd383237c..b28a7ca429c 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -499,6 +499,10 @@ class Project < ActiveRecord::Base @ci_service ||= ci_services.find(&:activated?) end + def jira_tracker? + issues_tracker.to_param == 'jira' + end + def avatar_type unless self.avatar.image? self.errors.add :avatar, 'only images allowed' @@ -799,6 +803,10 @@ class Project < ActiveRecord::Base false end + def jira_tracker_active? + jira_tracker? && jira_service.active + end + def ci_commit(sha) ci_commits.find_by(sha: sha) end -- cgit v1.2.1