Module: Sufia::GenericFile::Audit::ClassMethods
- Defined in:
- lib/sufia/models/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
61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/sufia/models/generic_file/audit.rb', line 61 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 return latest_audit end |
#audit!(version) ⇒ Object
57 58 59 |
# File 'lib/sufia/models/generic_file/audit.rb', line 57 def audit!(version) ::GenericFile.audit(version, true) end |
#audit_everything(force = false) ⇒ Object
91 92 93 94 95 96 97 |
# File 'lib/sufia/models/generic_file/audit.rb', line 91 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
99 100 101 |
# File 'lib/sufia/models/generic_file/audit.rb', line 99 def audit_everything! ::GenericFile.audit_everything(true) end |
#needs_audit?(version, latest_audit) ⇒ Boolean
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/sufia/models/generic_file/audit.rb', line 75 def needs_audit?(version, latest_audit) if latest_audit and latest_audit.updated_at #logger.debug "***AUDIT*** last audit = #{latest_audit.updated_at.to_date}" days_since_last_audit = (DateTime.now - latest_audit.updated_at.to_date).to_i #logger.debug "***AUDIT*** days since last audit: #{days_since_last_audit}" if days_since_last_audit < Sufia.config.max_days_between_audits #logger.debug "***AUDIT*** No audit needed for #{version.pid} #{version.versionID} (#{latest_audit.updated_at})" 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 #logger.info "***AUDIT*** Audit needed for #{version.pid} #{version.versionID}" return true end |
#run_audit(version) ⇒ Object
103 104 105 106 107 108 109 110 111 112 113 114 115 |
# File 'lib/sufia/models/generic_file/audit.rb', line 103 def run_audit(version) if version.dsChecksumValid #logger.info "***AUDIT*** Audit passed for #{version.pid} #{version.versionID}" 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) return check end |