chore(after_party): validate all existing procedure liens
This commit is contained in:
parent
7136c96a36
commit
23685ef5b9
1 changed files with 66 additions and 0 deletions
|
@ -0,0 +1,66 @@
|
|||
namespace :after_party do
|
||||
desc 'Deployment task: validate_procedure_liens'
|
||||
task validate_procedure_liens: :environment do
|
||||
puts "Running deploy task 'validate_procedure_liens'"
|
||||
|
||||
procedures = Procedure.with_discarded.with_external_urls
|
||||
progress = ProgressReport.new(procedures.count)
|
||||
|
||||
errors = []
|
||||
|
||||
each_error = -> (procedure, &block) {
|
||||
procedure.errors.each do |error|
|
||||
case error.attribute
|
||||
when :lien_notice
|
||||
block.call :lien_notice, procedure.lien_notice
|
||||
when :lien_dpo
|
||||
block.call :lien_dpo, procedure.lien_dpo
|
||||
end
|
||||
end
|
||||
}
|
||||
|
||||
procedures.find_each do |procedure|
|
||||
if !procedure.valid?
|
||||
each_error.(procedure) do |attribute, url|
|
||||
h = {}
|
||||
h[attribute] = url.strip.gsub(/[.;]$/, '').gsub(/^hhttps/, 'https').gsub(/^https\/\//, 'https://')
|
||||
procedure.assign_attributes(h)
|
||||
end
|
||||
|
||||
if !procedure.save
|
||||
each_error.(procedure) do |attribute, url|
|
||||
if !url.match?(/@/) && !url.start_with?('http')
|
||||
h = {}
|
||||
h[attribute] = "https://#{url}"
|
||||
procedure.assign_attributes(h)
|
||||
end
|
||||
end
|
||||
|
||||
if !procedure.save
|
||||
each_error.(procedure) do |attribute, url|
|
||||
h = {}
|
||||
h[attribute] = nil
|
||||
procedure.assign_attributes(h)
|
||||
errors << { attribute:, url: url.gsub('https://', '') }
|
||||
end
|
||||
procedure.save
|
||||
end
|
||||
end
|
||||
end
|
||||
progress.inc
|
||||
end
|
||||
|
||||
progress.finish
|
||||
|
||||
errors.each do |error|
|
||||
rake_puts "removed invalid #{error[:attribute]}: #{error[:url]}"
|
||||
end
|
||||
|
||||
Procedure.with_external_urls.find_each { ::ProcedureExternalURLCheckJob.perform_later(_1) }
|
||||
|
||||
# Update task as completed. If you remove the line below, the task will
|
||||
# run with every deploy (or every time you call after_party:run).
|
||||
AfterParty::TaskRecord
|
||||
.create version: AfterParty::TaskRecorder.new(__FILE__).timestamp
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue