Module: Sufia::GenericFile::Audit
- Extended by:
- ActiveSupport::Concern
- Included in:
- Sufia::GenericFile
- Defined in:
- app/models/concerns/sufia/generic_file/audit.rb
Defined Under Namespace
Modules: ClassMethods
Constant Summary collapse
- NO_RUNS =
999
Instance Method Summary collapse
- #audit(force = false) ⇒ Object
- #audit! ⇒ Object
- #audit_stat(force = false) ⇒ Object
- #audit_stat! ⇒ Object
- #logs(dsid) ⇒ Object
- #per_version(&block) ⇒ Object
Instance Method Details
#audit(force = false) ⇒ Object
8 9 10 11 12 13 14 |
# File 'app/models/concerns/sufia/generic_file/audit.rb', line 8 def audit(force = false) logs = [] self.per_version do |ver| logs << ::GenericFile.audit(ver, force) end logs end |
#audit! ⇒ Object
29 30 31 |
# File 'app/models/concerns/sufia/generic_file/audit.rb', line 29 def audit! audit(true) end |
#audit_stat(force = false) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'app/models/concerns/sufia/generic_file/audit.rb', line 37 def audit_stat(force = false) logs = audit(force) audit_results = logs.collect { |result| result["pass"] } # check how many non runs we had non_runs = audit_results.reduce(0) { |sum, value| value == NO_RUNS ? sum += 1 : sum } if non_runs == 0 result = audit_results.reduce(true) { |sum, value| sum && value } return result elsif non_runs < audit_results.length result = audit_results.reduce(true) { |sum, value| value == NO_RUNS ? sum : sum && value } return 'Some audits have not been run, but the ones run were '+ ((result)? 'passing' : 'failing') + '.' else return 'Audits have not yet been run on this file.' end end |
#audit_stat! ⇒ Object
33 34 35 |
# File 'app/models/concerns/sufia/generic_file/audit.rb', line 33 def audit_stat! audit_stat(true) end |
#logs(dsid) ⇒ Object
25 26 27 |
# File 'app/models/concerns/sufia/generic_file/audit.rb', line 25 def logs(dsid) ChecksumAuditLog.where(dsid: dsid, pid: self.pid).order('created_at desc, id desc') end |
#per_version(&block) ⇒ Object
16 17 18 19 20 21 22 23 |
# File 'app/models/concerns/sufia/generic_file/audit.rb', line 16 def per_version(&block) self.datastreams.each do |dsid, ds| next if ds == full_text ds.versions.each do |ver| block.call(ver) end end end |