Sha256: 356716a6c273736cac1db0b7c84b1b94370777263f7febed866ecaf67b92c637

Contents?: true

Size: 1.62 KB

Versions: 26

Compression:

Stored size: 1.62 KB

Contents

module ForemanOpenscap
  class ScapContent < ApplicationRecord
    audited :except => [:scap_file]
    include Authorizable
    include Taxonomix
    include DataStreamContent
    include ScapFileContent

    has_many :scap_content_profiles, :dependent => :destroy
    has_many :policies

    validates :title, :presence => true, :length => { :maximum => 255 }, uniqueness: true
    validates :original_filename, :length => { :maximum => 255 }

    scoped_search :on => :title,             :complete_value => true
    scoped_search :on => :original_filename, :complete_value => true, :rename => :filename
    scoped_search :on => :created_at

    default_scope do
      with_taxonomy_scope do
        order("foreman_openscap_scap_contents.title")
      end
    end

    def used_location_ids
      Location.joins(:taxable_taxonomies).where(
        'taxable_taxonomies.taxable_type' => 'ForemanOpenscap::ScapContent',
        'taxable_taxonomies.taxable_id' => id
      ).pluck("#{Location.arel_table.name}.id")
    end

    def used_organization_ids
      Organization.joins(:taxable_taxonomies).where(
        'taxable_taxonomies.taxable_type' => 'ForemanOpenscap::ScapContent',
        'taxable_taxonomies.taxable_id' => id
      ).pluck("#{Location.arel_table.name}.id")
    end

    def to_label
      title
    end

    def as_json(*args)
      hash = super
      hash["scap_file"] = scap_file.to_s.encode('utf-8', :invalid => :replace, :undef => :replace, :replace => '_')
    end

    def fetch_profiles
      api = ProxyAPI::Openscap.new(:url => proxy_url)
      profiles = api.fetch_policies_for_scap_content(scap_file)
      profiles
    end
  end
end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
foreman_openscap-10.1.0 app/models/foreman_openscap/scap_content.rb
foreman_openscap-10.0.3 app/models/foreman_openscap/scap_content.rb
foreman_openscap-10.0.2 app/models/foreman_openscap/scap_content.rb
foreman_openscap-10.0.1 app/models/foreman_openscap/scap_content.rb
foreman_openscap-10.0.0 app/models/foreman_openscap/scap_content.rb
foreman_openscap-9.0.4 app/models/foreman_openscap/scap_content.rb
foreman_openscap-9.0.3 app/models/foreman_openscap/scap_content.rb
foreman_openscap-9.0.2 app/models/foreman_openscap/scap_content.rb
foreman_openscap-9.0.1 app/models/foreman_openscap/scap_content.rb
foreman_openscap-9.0.0 app/models/foreman_openscap/scap_content.rb
foreman_openscap-8.0.0 app/models/foreman_openscap/scap_content.rb
foreman_openscap-7.1.1 app/models/foreman_openscap/scap_content.rb
foreman_openscap-7.1.0 app/models/foreman_openscap/scap_content.rb
foreman_openscap-7.0.0 app/models/foreman_openscap/scap_content.rb
foreman_openscap-6.0.0 app/models/foreman_openscap/scap_content.rb
foreman_openscap-5.2.3 app/models/foreman_openscap/scap_content.rb
foreman_openscap-5.2.2 app/models/foreman_openscap/scap_content.rb
foreman_openscap-5.1.1 app/models/foreman_openscap/scap_content.rb
foreman_openscap-5.2.1 app/models/foreman_openscap/scap_content.rb
foreman_openscap-5.2.0 app/models/foreman_openscap/scap_content.rb