BigW Consortium Gitlab

project_label.rb 909 Bytes
Newer Older
1
class ProjectLabel < Label
2
  MAX_NUMBER_OF_PRIORITIES = 1
3

4 5 6
  belongs_to :project

  validates :project, presence: true
7

8
  validate :permitted_numbers_of_priorities
9 10 11 12
  validate :title_must_not_exist_at_group_level

  delegate :group, to: :project, allow_nil: true

13 14
  alias_attribute :subject, :project

15 16 17 18
  def subject_foreign_key
    'project_id'
  end

19 20
  def to_reference(target_project = nil, format: :id)
    super(project, target_project, format: format)
21 22
  end

23 24 25
  private

  def title_must_not_exist_at_group_level
26
    return unless group.present? && title_changed?
27 28 29 30 31

    if group.labels.with_title(self.title).exists?
      errors.add(:title, :label_already_exists_at_group_level, group: group.name)
    end
  end
32 33

  def permitted_numbers_of_priorities
34
    if priorities && priorities.size > MAX_NUMBER_OF_PRIORITIES
35 36 37
      errors.add(:priorities, 'Number of permitted priorities exceeded')
    end
  end
38
end