summaryrefslogtreecommitdiff
path: root/app/models
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2014-04-02 21:51:53 +0300
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2014-04-02 21:51:53 +0300
commit9ee697dd6847de0bd1a38714df7d8bb509534d20 (patch)
treedaa0a7fd126368f7d1c94f1500ec13a649c19612 /app/models
parent3c867dfa8efec28155158e3b2b7dbb21ba3ce0a1 (diff)
downloadgitlab-ce-9ee697dd6847de0bd1a38714df7d8bb509534d20.tar.gz
Use MergeRequest services in API and controllers
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Diffstat (limited to 'app/models')
-rw-r--r--app/models/merge_request.rb15
-rw-r--r--app/models/project.rb4
2 files changed, 19 insertions, 0 deletions
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index 5c2b0656d40..ffed03307ec 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -97,6 +97,7 @@ class MergeRequest < ActiveRecord::Base
validates :target_project, presence: true
validates :target_branch, presence: true
validate :validate_branches
+ validate :validate_fork
scope :of_group, ->(group) { where("source_project_id in (:group_project_ids) OR target_project_id in (:group_project_ids)", group_project_ids: group.project_ids) }
scope :of_user_team, ->(team) { where("(source_project_id in (:team_project_ids) OR target_project_id in (:team_project_ids) AND assignee_id in (:team_member_ids))", team_project_ids: team.project_ids, team_member_ids: team.member_ids) }
@@ -125,6 +126,20 @@ class MergeRequest < ActiveRecord::Base
end
end
+ def validate_fork
+ if target_projet == source_project
+ true
+ else
+ # If source and target projects are different
+ # we should check if source project is actually a fork of target project
+ if source_project.forked_from?(target_project)
+ true
+ else
+ errors.add :base, "Source project is not a fork of target project"
+ end
+ end
+ end
+
def update_merge_request_diff
if source_branch_changed? || target_branch_changed?
reload_code
diff --git a/app/models/project.rb b/app/models/project.rb
index 769ab217625..79066e1c54a 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -552,4 +552,8 @@ class Project < ActiveRecord::Base
gitlab_shell.update_repository_head(self.path_with_namespace, branch)
reload_default_branch
end
+
+ def forked_from?(project)
+ forked? && project == forked_from_project
+ end
end