diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-01-28 13:33:23 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-01-28 13:33:23 +0000 |
commit | b9bf11ef5f63203c6974c4432553270f7b3d29a1 (patch) | |
tree | ddf69920d5929b68cb7097c3c586a2fdf483cd60 /app/models/generic_commit_status.rb | |
parent | 1e8ef329735f06d3b3cfe1966b79fe55eff21f30 (diff) | |
download | gitlab-ce-b9bf11ef5f63203c6974c4432553270f7b3d29a1.tar.gz |
Add latest changes from gitlab-org/security/gitlab@12-7-stable-ee
Diffstat (limited to 'app/models/generic_commit_status.rb')
-rw-r--r-- | app/models/generic_commit_status.rb | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/app/models/generic_commit_status.rb b/app/models/generic_commit_status.rb index 8a768b3a2c0..6c8bfc35334 100644 --- a/app/models/generic_commit_status.rb +++ b/app/models/generic_commit_status.rb @@ -1,11 +1,14 @@ # frozen_string_literal: true class GenericCommitStatus < CommitStatus + EXTERNAL_STAGE_IDX = 1_000_000 + before_validation :set_default_values validates :target_url, addressable_url: true, length: { maximum: 255 }, allow_nil: true + validate :name_uniqueness_across_types, unless: :importing? # GitHub compatible API alias_attribute :context, :name @@ -13,7 +16,7 @@ class GenericCommitStatus < CommitStatus def set_default_values self.context ||= 'default' self.stage ||= 'external' - self.stage_idx ||= 1000000 + self.stage_idx ||= EXTERNAL_STAGE_IDX end def tags @@ -25,4 +28,14 @@ class GenericCommitStatus < CommitStatus .new(self, current_user) .fabricate! end + + private + + def name_uniqueness_across_types + return if !pipeline || name.blank? + + if pipeline.statuses.by_name(name).where.not(type: type).exists? + errors.add(:name, :taken) + end + end end |