Module: Sufia::GenericFile::Audit::ClassMethods
- Defined in:
- app/models/concerns/sufia/generic_file/audit.rb
Instance Method Summary collapse
- #audit(version, force = false) ⇒ Object
- #audit!(version) ⇒ Object
- #audit_everything(force = false) ⇒ Object
- #audit_everything! ⇒ Object
- #needs_audit?(version, latest_audit) ⇒ Boolean
- #run_audit(version) ⇒ Object
Instance Method Details
#audit(version, force = false) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'app/models/concerns/sufia/generic_file/audit.rb', line 59 def audit(version, force = false) latest_audit = self.find(version.pid).logs(version.dsid).first unless force return latest_audit unless ::GenericFile.needs_audit?(version, latest_audit) end # Resque.enqueue(AuditJob, version.pid, version.dsid, version.versionID) Sufia.queue.push(AuditJob.new(version.pid, version.dsid, version.versionID)) # run the find just incase the job has finished already latest_audit = self.find(version.pid).logs(version.dsid).first latest_audit = ChecksumAuditLog.new(pass: NO_RUNS, pid: version.pid, dsid: version.dsid, version: version.versionID) unless latest_audit latest_audit end |
#audit!(version) ⇒ Object
55 56 57 |
# File 'app/models/concerns/sufia/generic_file/audit.rb', line 55 def audit!(version) ::GenericFile.audit(version, true) end |
#audit_everything(force = false) ⇒ Object
85 86 87 88 89 90 91 |
# File 'app/models/concerns/sufia/generic_file/audit.rb', line 85 def audit_everything(force = false) ::GenericFile.find_each do |gf| gf.per_version do |ver| ::GenericFile.audit(ver, force) end end end |
#audit_everything! ⇒ Object
93 94 95 |
# File 'app/models/concerns/sufia/generic_file/audit.rb', line 93 def audit_everything! ::GenericFile.audit_everything(true) end |
#needs_audit?(version, latest_audit) ⇒ Boolean
73 74 75 76 77 78 79 80 81 82 83 |
# File 'app/models/concerns/sufia/generic_file/audit.rb', line 73 def needs_audit?(version, latest_audit) if latest_audit and latest_audit.updated_at days_since_last_audit = (DateTime.now - latest_audit.updated_at.to_date).to_i if days_since_last_audit < Sufia.config.max_days_between_audits return false end else logger.warn "***AUDIT*** problem with audit log! Latest Audit is not nil, but updated_at is not set #{latest_audit}" unless latest_audit.nil? end true end |
#run_audit(version) ⇒ Object
97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'app/models/concerns/sufia/generic_file/audit.rb', line 97 def run_audit(version) if version.dsChecksumValid passing = 1 ChecksumAuditLog.prune_history(version) else logger.warn "***AUDIT*** Audit failed for #{version.pid} #{version.versionID}" passing = 0 end check = ChecksumAuditLog.create!(pass: passing, pid: version.pid, dsid: version.dsid, version: version.versionID) check end |