diff --git a/app/controllers/admin/accounts_controller.rb b/app/controllers/admin/accounts_controller.rb index 2150ab2e6..e5e5dfb66 100644 --- a/app/controllers/admin/accounts_controller.rb +++ b/app/controllers/admin/accounts_controller.rb @@ -4,7 +4,8 @@ module Admin def index @q = Account.includes(:registrar).ransack(params[:q]) - @accounts = @q.result.page(params[:page]) + @result = @q.result + @accounts = @result.page(params[:page]) @accounts = @accounts.per(params[:results_per_page]) if paginate? render_by_format('admin/accounts/index', 'accounts') diff --git a/app/controllers/admin/auctions_controller.rb b/app/controllers/admin/auctions_controller.rb index 645b9e0ee..8f5bb458c 100644 --- a/app/controllers/admin/auctions_controller.rb +++ b/app/controllers/admin/auctions_controller.rb @@ -15,7 +15,8 @@ module Admin normalize_search_parameters do @q = @auctions.ransack(PartialSearchFormatter.format(params[:q])) - @auctions = @q.result.page(params[:page]) + @result = @q.result + @auctions = @result.page(params[:page]) end @auctions = @auctions.per(params[:results_per_page_auction]) if params[:results_per_page_auction].to_i.positive? diff --git a/app/controllers/admin/base_controller.rb b/app/controllers/admin/base_controller.rb index f30b6834f..88afec72d 100644 --- a/app/controllers/admin/base_controller.rb +++ b/app/controllers/admin/base_controller.rb @@ -26,7 +26,7 @@ module Admin respond_to do |format| format.html { render page } format.csv do - raw_csv = CsvGenerator.generate_csv(@q.result(distinct: true)) + raw_csv = CsvGenerator.generate_csv(@result) send_data raw_csv, filename: "#{filename}_#{Time.zone.now.to_formatted_s(:number)}.csv", type: "#{Mime[:csv]}; charset=utf-8" diff --git a/app/controllers/admin/blocked_domains_controller.rb b/app/controllers/admin/blocked_domains_controller.rb index c039c5de1..cecd2d95e 100644 --- a/app/controllers/admin/blocked_domains_controller.rb +++ b/app/controllers/admin/blocked_domains_controller.rb @@ -6,7 +6,8 @@ module Admin params[:q] ||= {} domains = BlockedDomain.all.order(:name) @q = domains.ransack(PartialSearchFormatter.format(params[:q])) - @domains = @q.result.page(params[:page]) + @result = @q.result + @domains = @result.page(params[:page]) @domains = @domains.per(params[:results_per_page]) if params[:results_per_page].to_i.positive? render_by_format('admin/blocked_domains/index', 'blocked_domains') diff --git a/app/controllers/admin/contact_versions_controller.rb b/app/controllers/admin/contact_versions_controller.rb index 43d43d5e8..eb53ec379 100644 --- a/app/controllers/admin/contact_versions_controller.rb +++ b/app/controllers/admin/contact_versions_controller.rb @@ -10,8 +10,8 @@ module Admin search_params = PartialSearchFormatter.format(fix_date_params) versions = Version::ContactVersion.includes(:item).order(created_at: :desc, id: :desc) @q = versions.ransack(polymorphic_association(search_params)) - - @versions = @q.result.page(params[:page]) + @result = @q.result + @versions = @result.page(params[:page]) @versions = @versions.per(params[:results_per_page]) if params[:results_per_page].to_i.positive? render_by_format('admin/contact_versions/index', 'contact_history') @@ -24,7 +24,7 @@ module Admin @versions_map = @versions.all.map(&:id) # what we do is calc amount of results until needed version - # then we cacl which page it is + # then we calc which page it is if params[:page].blank? counter = @versions_map.index(@version.id) + 1 page = counter / per_page diff --git a/app/controllers/admin/contacts_controller.rb b/app/controllers/admin/contacts_controller.rb index 73ead7b25..de5397360 100644 --- a/app/controllers/admin/contacts_controller.rb +++ b/app/controllers/admin/contacts_controller.rb @@ -19,7 +19,8 @@ module Admin normalize_search_parameters do @q = contacts.ransack(PartialSearchFormatter.format(search_params)) - @contacts = @q.result.distinct.page(params[:page]) + @result = @q.result.distinct + @contacts = @result.page(params[:page]) end @contacts = @contacts.per(params[:results_per_page]) if params[:results_per_page].to_i.positive? diff --git a/app/controllers/admin/disputes_controller.rb b/app/controllers/admin/disputes_controller.rb index cb2ac6608..b2eea2784 100644 --- a/app/controllers/admin/disputes_controller.rb +++ b/app/controllers/admin/disputes_controller.rb @@ -57,7 +57,8 @@ module Admin def sortable_dispute_query_for(disputes, query, closed: false) @q = disputes.order(:domain_name).ransack(query) - disputes = @q.result.page(closed ? params[:closed_page] : params[:page]) + @result = @q.result + disputes = @result.page(closed ? params[:closed_page] : params[:page]) return disputes.per(params[:results_per_page]) if params[:results_per_page].present? disputes diff --git a/app/controllers/admin/domain_versions_controller.rb b/app/controllers/admin/domain_versions_controller.rb index cfe00b580..eb976ecb7 100644 --- a/app/controllers/admin/domain_versions_controller.rb +++ b/app/controllers/admin/domain_versions_controller.rb @@ -47,8 +47,8 @@ module Admin versions = Version::DomainVersion.includes(:item).where(where_s).order(created_at: :desc, id: :desc) @q = versions.ransack(fix_date_params) - - @versions = @q.result.page(params[:page]) + @result = @q.result + @versions = @result.page(params[:page]) @versions = @versions.per(params[:results_per_page]) if params[:results_per_page].to_i.positive? render_by_format('admin/domain_versions/archive', 'domain_history') diff --git a/app/controllers/admin/domains_controller.rb b/app/controllers/admin/domains_controller.rb index a5b4341af..89fcd473c 100644 --- a/app/controllers/admin/domains_controller.rb +++ b/app/controllers/admin/domains_controller.rb @@ -13,7 +13,8 @@ module Admin normalize_search_parameters do @q = domains.ransack(PartialSearchFormatter.format(params[:q])) - @domains = @q.result(distinct: true).page(params[:page]) + @result = @q.result.distinct + @domains = @result.page(params[:page]) end @domains = @domains.per(params[:results_per_page]) if params[:results_per_page].to_i.positive? diff --git a/app/controllers/admin/epp_logs_controller.rb b/app/controllers/admin/epp_logs_controller.rb index 021c90379..ec23d0fc3 100644 --- a/app/controllers/admin/epp_logs_controller.rb +++ b/app/controllers/admin/epp_logs_controller.rb @@ -6,9 +6,10 @@ module Admin # rubocop:disable Metrics/MethodLength def index @q = ApiLog::EppLog.ransack(PartialSearchFormatter.format(params[:q])) + @result = @q.result @q.sorts = 'id desc' if @q.sorts.empty? - @epp_logs = @q.result + @epp_logs = @result if params[:q][:created_at_gteq].present? @epp_logs = @epp_logs.where("extract(epoch from created_at) >= extract(epoch from ?::timestamp)", Time.parse(params[:q][:created_at_gteq])) diff --git a/app/controllers/admin/invoices_controller.rb b/app/controllers/admin/invoices_controller.rb index a4ba97310..46889d3d4 100644 --- a/app/controllers/admin/invoices_controller.rb +++ b/app/controllers/admin/invoices_controller.rb @@ -39,7 +39,8 @@ module Admin @q = invoices.ransack(params[:q]) @q.sorts = 'number desc' if @q.sorts.empty? - @invoices = @q.result.page(params[:page]) + @result = @q.result + @invoices = @result.page(params[:page]) @invoices = @invoices.per(params[:results_per_page]) if paginate? render_by_format('admin/invoices/index', 'invoices') diff --git a/app/controllers/admin/repp_logs_controller.rb b/app/controllers/admin/repp_logs_controller.rb index abb8415bc..6b0c7efa4 100644 --- a/app/controllers/admin/repp_logs_controller.rb +++ b/app/controllers/admin/repp_logs_controller.rb @@ -7,8 +7,8 @@ module Admin def index @q = ApiLog::ReppLog.ransack(PartialSearchFormatter.format(params[:q])) @q.sorts = 'id desc' if @q.sorts.empty? - - @repp_logs = @q.result + @result = @q.result + @repp_logs = @result if params[:q][:created_at_gteq].present? @repp_logs = @repp_logs.where("extract(epoch from created_at) >= extract(epoch from ?::timestamp)", Time.parse(params[:q][:created_at_gteq])) diff --git a/app/controllers/admin/reserved_domains_controller.rb b/app/controllers/admin/reserved_domains_controller.rb index 20957dec4..93188ecc4 100644 --- a/app/controllers/admin/reserved_domains_controller.rb +++ b/app/controllers/admin/reserved_domains_controller.rb @@ -7,7 +7,8 @@ module Admin params[:q] ||= {} domains = ReservedDomain.all.order(:name) @q = domains.ransack(PartialSearchFormatter.format(params[:q])) - @domains = @q.result.page(params[:page]) + @result = @q.result + @domains = @result.page(params[:page]) @domains = @domains.per(params[:results_per_page]) if params[:results_per_page].to_i.positive? render_by_format('admin/reserved_domains/index', 'reserved_domains') diff --git a/app/models/domain.rb b/app/models/domain.rb index 8ca4e4963..6685d6127 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -154,30 +154,30 @@ class Domain < ApplicationRecord validates :nameservers, domain_nameserver: { min: -> { Setting.ns_min_count }, - max: -> { Setting.ns_max_count } + max: -> { Setting.ns_max_count }, } validates :dnskeys, object_count: { min: -> { Setting.dnskeys_min_count }, - max: -> { Setting.dnskeys_max_count } + max: -> { Setting.dnskeys_max_count }, } validates :admin_domain_contacts, object_count: { min: -> { Setting.admin_contacts_min_count }, - max: -> { Setting.admin_contacts_max_count } + max: -> { Setting.admin_contacts_max_count }, } validates :tech_domain_contacts, object_count: { min: -> { Setting.tech_contacts_min_count }, - max: -> { Setting.tech_contacts_max_count } + max: -> { Setting.tech_contacts_max_count }, } validates :nameservers, uniqueness_multi: { - attribute: 'hostname' + attribute: 'hostname', } validates :dnskeys, uniqueness_multi: { - attribute: 'public_key' + attribute: 'public_key', } validate :validate_nameserver_ips @@ -225,7 +225,7 @@ class Domain < ApplicationRecord end def delegated_nameservers - nameservers.select { |x| !x.hostname.end_with?(name) } + nameservers.reject { |x| x.hostname.end_with?(name) } end def extension_update_prohibited? @@ -604,17 +604,17 @@ class Domain < ApplicationRecord # check for deleted status statuses.each do |s| - unless update.include? s - case s - when DomainStatus::PENDING_DELETE - self.delete_date = nil - when DomainStatus::SERVER_MANUAL_INZONE # removal causes server hold to set - self.outzone_at = Time.zone.now if force_delete_scheduled? - when DomainStatus::EXPIRED # removal causes server hold to set - self.outzone_at = expire_time + 15.day - when DomainStatus::SERVER_HOLD # removal causes server hold to set - self.outzone_at = nil - end + next if update.include? s + + case s + when DomainStatus::PENDING_DELETE + self.delete_date = nil + when DomainStatus::SERVER_MANUAL_INZONE # removal causes server hold to set + self.outzone_at = Time.zone.now if force_delete_scheduled? + when DomainStatus::EXPIRED # removal causes server hold to set + self.outzone_at = expire_time + 15.day + when DomainStatus::SERVER_HOLD # removal causes server hold to set + self.outzone_at = nil end end end @@ -626,7 +626,7 @@ class Domain < ApplicationRecord def set_pending_update if pending_update_prohibited? logger.info "DOMAIN STATUS UPDATE ISSUE ##{id}: PENDING_UPDATE not allowed to set. [#{statuses}]" - return nil + return end statuses << DomainStatus::PENDING_UPDATE end @@ -655,7 +655,7 @@ class Domain < ApplicationRecord def set_pending_delete if pending_delete_prohibited? logger.info "DOMAIN STATUS UPDATE ISSUE ##{id}: PENDING_DELETE not allowed to set. [#{statuses}]" - return nil + return end statuses << DomainStatus::PENDING_DELETE end @@ -665,6 +665,12 @@ class Domain < ApplicationRecord self.outzone_at = Time.current end + def manage_automatic_statuses + check_nameservers + check_statuses + check_pending_delete + end + def manage_automatic_statuses unless self.class.nameserver_required? deactivate if nameservers.reject(&:marked_for_destruction?).empty? @@ -814,7 +820,7 @@ class Domain < ApplicationRecord end def self.uses_zone?(zone) - exists?(["name ILIKE ?", "%.#{zone.origin}"]) + exists?(['name ILIKE ?', "%.#{zone.origin}"]) end def self.swap_elements(array, indexes) diff --git a/app/models/version/domain_version.rb b/app/models/version/domain_version.rb index 59065a723..7330ed126 100644 --- a/app/models/version/domain_version.rb +++ b/app/models/version/domain_version.rb @@ -14,7 +14,7 @@ class Version::DomainVersion < PaperTrail::Version domain.registrant_name, domain.registrar, event, - created_at.to_formatted_s(:db) + created_at.to_formatted_s(:db), ] end diff --git a/test/fixtures/files/domains.csv b/test/fixtures/files/domains.csv index b8261ebc2..81c7d94ac 100644 --- a/test/fixtures/files/domains.csv +++ b/test/fixtures/files/domains.csv @@ -1,2 +1,2 @@ -Domain,Registrant,Valid to,Registrar,Created at,Statuses,Contacts code,Force delete date,Force delete data -metro.test,Jack,2010-07-05 00:00:00,Good Names,2010-07-05 07:30:00,[],"[""jack-001"", ""jack-001""]",, +Domain,Registrant,Valid to,Registrar,Created at,Statuses,Admin. contacts,Tech. contacts,Nameservers,Force delete date,Force delete data +metro.test,"Jack, 12345678 [US org]",2010-07-05 00:00:00,Good Names,2010-07-05 07:30:00,[],"[""Jack, jack-001, 12345678 [US org]""]","[""Jack, jack-001, 12345678 [US org]""]","[""ns1.bestnames.test""]",,