diff --git a/app/models/domain_cron.rb b/app/models/domain_cron.rb index 549e3b1da..db3a8bf9b 100644 --- a/app/models/domain_cron.rb +++ b/app/models/domain_cron.rb @@ -132,4 +132,9 @@ class DomainCron ) end + def self.delete_legal_doc_duplicates + Rake::Task['legal_doc:remove_duplicates'].reenable + Rake::Task['legal_doc:remove_duplicates'].invoke + end + end diff --git a/app/models/legal_document.rb b/app/models/legal_document.rb index 49cd124b5..afb9e7dcc 100644 --- a/app/models/legal_document.rb +++ b/app/models/legal_document.rb @@ -32,27 +32,20 @@ class LegalDocument < ActiveRecord::Base def save_to_filesystem - digest = Digest::SHA1.new binary = Base64.decode64(body) - ld = LegalDocument.find_by(checksum: digest.update(binary)) - if ld.nil? - loop do + loop do rand = SecureRandom.random_number.to_s.last(4) next if rand.to_i == 0 || rand.length < 4 - dir = "#{ENV['legal_documents_dir']}/#{Time.zone.now.strftime('%Y/%m/%d')}" FileUtils.mkdir_p(dir, mode: 0775) self.path = "#{dir}/#{Time.zone.now.to_formatted_s(:number)}_#{rand}.#{document_type}" break unless File.file?(path) - end - - File.open(path, 'wb') { |f| f.write(binary) } unless Rails.env.test? - self.path = path - - else - self.path = ld.path end + + File.open(path, 'wb') { |f| f.write(binary) } unless Rails.env.test? + self.path = path + end def calc_checksum diff --git a/lib/tasks/legal_doc.rake b/lib/tasks/legal_doc.rake index 4597b1186..82eba07d1 100644 --- a/lib/tasks/legal_doc.rake +++ b/lib/tasks/legal_doc.rake @@ -3,7 +3,7 @@ namespace :legal_doc do desc 'Legal documents duplicates fix' task all: :environment do Rake::Task['legal_doc:generate_hash'].invoke - Rake::Task['legal_doc:remove_dublicates'].invoke + Rake::Task['legal_doc:remove_duplicates'].invoke end desc 'Generate hash' @@ -24,7 +24,7 @@ namespace :legal_doc do end desc 'Remove duplicates' - task remove_dublicates: :environment do + task remove_duplicates: :environment do start = Time.zone.now.to_f puts '-----> Removing legal documents duplicates'