Sha256: ea95e8d7bdbfbf6e126124c93e4c0477e7ee8d52fe7197a21b509631285551ec

Contents?: true

Size: 1.62 KB

Versions: 7

Compression:

Stored size: 1.62 KB

Contents

module Katello
  class ContentViewRepository < Katello::Model
    ALLOWED_REPOSITORY_TYPES = [Repository::YUM_TYPE,
                                Repository::DOCKER_TYPE,
                                Repository::OSTREE_TYPE,
                                Repository::FILE_TYPE
                               ].freeze

    belongs_to :content_view, :inverse_of => :content_view_repositories,
                              :class_name => "Katello::ContentView"
    belongs_to :repository, :inverse_of => :content_view_repositories,
                            :class_name => "Katello::Repository"

    validates_lengths_from_database
    validates :repository_id, :uniqueness => {:scope => :content_view_id}
    validate :content_view_composite
    validate :ensure_repository_type
    validate :check_repo_membership

    private

    def content_view_composite
      if content_view.composite?
        errors.add(:base, _("Cannot add repositories to a composite content view"))
      end
    end

    def ensure_repository_type
      unless ALLOWED_REPOSITORY_TYPES.include?(repository.content_type)
        errors.add(:base, _("Cannot add %s repositories to a content view.") % repository.content_type)
      end
    end

    def check_repo_membership
      unless self.content_view.organization == self.repository.product.organization
        errors.add(:base, _("Cannot add a repository from an Organization other than %s.") % self.content_view.organization.name)
      end

      unless self.repository.content_view.default?
        errors.add(:base, _("Repositories from published Content Views are not allowed."))
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
katello-3.5.2 app/models/katello/content_view_repository.rb
katello-3.5.1.1 app/models/katello/content_view_repository.rb
katello-3.5.1 app/models/katello/content_view_repository.rb
katello-3.5.0.1 app/models/katello/content_view_repository.rb
katello-3.5.0 app/models/katello/content_view_repository.rb
katello-3.5.0.rc2 app/models/katello/content_view_repository.rb
katello-3.5.0.rc1 app/models/katello/content_view_repository.rb