From 07d6805aa60ce1c493dbfbe4e819f018ed4234c3 Mon Sep 17 00:00:00 2001 From: Stas Date: Tue, 19 Jan 2016 16:51:19 +0200 Subject: [PATCH 1/3] 111864739-legal_doc_for_pt --- app/models/domain.rb | 3 +++ app/models/epp/domain.rb | 1 + lib/tasks/documents.rake | 41 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+) create mode 100644 lib/tasks/documents.rake diff --git a/app/models/domain.rb b/app/models/domain.rb index e4882473a..8f2010a5e 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -7,6 +7,8 @@ class Domain < ActiveRecord::Base attr_accessor :roles + attr_accessor :legal_document_id + # TODO: whois requests ip whitelist for full info for own domains and partial info for other domains # TODO: most inputs should be trimmed before validatation, probably some global logic? @@ -821,6 +823,7 @@ class Domain < ActiveRecord::Base log[:admin_contacts] = admin_contact_ids log[:tech_contacts] = tech_contact_ids log[:nameservers] = nameserver_ids + log[:legal_documents]= [legal_document_id] log[:registrant] = [registrant_id] log[:domain_statuses] = domain_status_ids log diff --git a/app/models/epp/domain.rb b/app/models/epp/domain.rb index 15e16163a..6cda7712f 100644 --- a/app/models/epp/domain.rb +++ b/app/models/epp/domain.rb @@ -476,6 +476,7 @@ class Epp::Domain < Domain if doc = attach_legal_document(Epp::Domain.parse_legal_document_from_frame(frame)) frame.css("legalDocument").first.content = doc.path if doc && doc.persisted? + self.legal_document_id = doc.id end at_add = attrs_from(frame.css('add'), current_user, 'add') diff --git a/lib/tasks/documents.rake b/lib/tasks/documents.rake new file mode 100644 index 000000000..51ba49108 --- /dev/null +++ b/lib/tasks/documents.rake @@ -0,0 +1,41 @@ +namespace :documents do + + + desc 'Generate all' + task all: :environment do + Rake::Task['documents:log'].invoke + end + + desc 'Generate legaldoc versions' + task log: :environment do + start = Time.zone.now.to_f + puts '-----> Adding documets id for PaperTrail log...' + count = 0 + + LegalDocument.all.each do |x| + + next if x.documentable_id.blank? + + dc = DomainVersion.where(item_id: x.documentable_id) + + dc.each do |y| + + if x.created_at < (y.created_at + (2*60)) && + x.created_at > (y.created_at - (2*60)) + + y.children[:legal_documents] = [x.id] + y.save + count =+1 + + else + + y.children[:legal_documents] = [] + y.save + + end + end + end + puts "-----> Log changed for #{count} rows in #{(Time.zone.now.to_f - start).round(2)} seconds" + end +end + From 556868da6f4c8a42f5d1cc9c589ddc0780495b99 Mon Sep 17 00:00:00 2001 From: Stas Date: Wed, 20 Jan 2016 12:24:13 +0200 Subject: [PATCH 2/3] 111864739-memory_optimization --- lib/tasks/documents.rake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/tasks/documents.rake b/lib/tasks/documents.rake index 51ba49108..d16025785 100644 --- a/lib/tasks/documents.rake +++ b/lib/tasks/documents.rake @@ -12,7 +12,7 @@ namespace :documents do puts '-----> Adding documets id for PaperTrail log...' count = 0 - LegalDocument.all.each do |x| + LegalDocument.where(documentable_type: Domain).find_each do |x| next if x.documentable_id.blank? From 2430bfebf2f5ed3471e88f0b8ed2597b603c96e6 Mon Sep 17 00:00:00 2001 From: Stas Date: Tue, 26 Jan 2016 17:17:36 +0200 Subject: [PATCH 3/3] 111864739-contact_type_added --- lib/tasks/documents.rake | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/tasks/documents.rake b/lib/tasks/documents.rake index d16025785..5ae8fb4df 100644 --- a/lib/tasks/documents.rake +++ b/lib/tasks/documents.rake @@ -1,6 +1,5 @@ namespace :documents do - desc 'Generate all' task all: :environment do Rake::Task['documents:log'].invoke @@ -12,11 +11,16 @@ namespace :documents do puts '-----> Adding documets id for PaperTrail log...' count = 0 - LegalDocument.where(documentable_type: Domain).find_each do |x| + LegalDocument.find_each do |x| next if x.documentable_id.blank? - dc = DomainVersion.where(item_id: x.documentable_id) + document_type = case x.documentable_type + when 'Domain' then DomainVersion + when 'Contact'then ContactVersion + end + + dc = document_type.where(item_id: x.documentable_id) dc.each do |y|