Class: Scaptimony::ArfReport

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/scaptimony/arf_report.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.search_by_comply_with(_key, _operator, policy_name) ⇒ Object



44
45
46
# File 'app/models/scaptimony/arf_report.rb', line 44

def self.search_by_comply_with(_key, _operator, policy_name)
  search_by_policy_results policy_name, &:comply
end

.search_by_inconclusive_with(_key, _operator, policy_name) ⇒ Object



52
53
54
# File 'app/models/scaptimony/arf_report.rb', line 52

def self.search_by_inconclusive_with(_key, _operator, policy_name)
  search_by_policy_results policy_name, &:inconclusive
end

.search_by_last_for(key, operator, by) ⇒ Object



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'app/models/scaptimony/arf_report.rb', line 65

def self.search_by_last_for(key, operator, by)
  by.gsub!(/[^[:alnum:]]/, '')
  case by.downcase
  when 'host'
    { :conditions => 'scaptimony_arf_reports.id IN (
          SELECT MAX(id) FROM scaptimony_arf_reports sub
          WHERE sub.asset_id = scaptimony_arf_reports.asset_id)' }
  when 'policy'
    { :conditions => 'scaptimony_arf_reports.id IN (
          SELECT MAX(id) FROM scaptimony_arf_reports sub
          WHERE sub.policy_id = scaptimony_arf_reports.policy_id)' }
  else
    fail "Cannot search last by #{by}"
  end
end

.search_by_not_comply_with(_key, _operator, policy_name) ⇒ Object



48
49
50
# File 'app/models/scaptimony/arf_report.rb', line 48

def self.search_by_not_comply_with(_key, _operator, policy_name)
  search_by_policy_results policy_name, &:incomply
end

.search_by_policy_results(policy_name, &selection) ⇒ Object



56
57
58
59
60
61
62
63
# File 'app/models/scaptimony/arf_report.rb', line 56

def self.search_by_policy_results(policy_name, &selection)
  cond = sanitize_sql_for_conditions('scaptimony_policies.name' => policy_name)
  { :conditions => Scaptimony::ArfReport.arel_table[:id].in(
    Scaptimony::ArfReport.select(Scaptimony::ArfReport.arel_table[:id])
        .latest.instance_eval(&selection).joins(:policy).where(cond).ast
    ).to_sql
  }
end

Instance Method Details

#failedObject



34
# File 'app/models/scaptimony/arf_report.rb', line 34

def failed; arf_report_breakdown ? arf_report_breakdown.failed : 0; end

#otheredObject



35
# File 'app/models/scaptimony/arf_report.rb', line 35

def othered; arf_report_breakdown ? arf_report_breakdown.othered : 0; end

#passedObject



33
# File 'app/models/scaptimony/arf_report.rb', line 33

def passed; arf_report_breakdown ? arf_report_breakdown.passed : 0; end

#to_htmlObject



37
38
39
40
41
42
# File 'app/models/scaptimony/arf_report.rb', line 37

def to_html
  if arf_report_raw.nil?
    fail Error, "Cannot generate HTML report, ArfReport #{id} is missing XML details"
  end
  arf_report_raw.to_html
end