From 44637b08cf46ec8ecee7cef366e4c19994f807fb Mon Sep 17 00:00:00 2001 From: Alex Sherman Date: Thu, 29 Oct 2020 16:15:12 +0500 Subject: [PATCH 01/10] Fix statuses search bug --- app/controllers/registrar/domains_controller.rb | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/app/controllers/registrar/domains_controller.rb b/app/controllers/registrar/domains_controller.rb index 50ad0bd10..581b517ae 100644 --- a/app/controllers/registrar/domains_controller.rb +++ b/app/controllers/registrar/domains_controller.rb @@ -16,13 +16,14 @@ class Registrar end end - if params[:statuses_contains] - domains = current_registrar_user.registrar.domains.includes(:registrar, :registrant).where( - "statuses @> ?::varchar[]", "{#{params[:statuses_contains].join(',')}}" - ) - else - domains = current_registrar_user.registrar.domains.includes(:registrar, :registrant) - end + domains = if params[:statuses_contains] + current_registrar_user.registrar.domains + .includes(:registrar, :registrant) + .where('domains.statuses @> ?::varchar[]', + "{#{params[:statuses_contains].join(',')}}") + else + current_registrar_user.registrar.domains.includes(:registrar, :registrant) + end normalize_search_parameters do @q = domains.search(search_params) From 358a39e0fdecc410face333569c538eadbe836c2 Mon Sep 17 00:00:00 2001 From: Alex Sherman Date: Thu, 29 Oct 2020 17:08:34 +0500 Subject: [PATCH 02/10] Fix search via Ransack association --- .../registrar/domains_controller.rb | 24 +++++++++++-------- .../registrar/domains/_search_form.html.erb | 3 ++- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/app/controllers/registrar/domains_controller.rb b/app/controllers/registrar/domains_controller.rb index 581b517ae..1a46da463 100644 --- a/app/controllers/registrar/domains_controller.rb +++ b/app/controllers/registrar/domains_controller.rb @@ -11,27 +11,27 @@ class Registrar search_params[:name_matches].present? domain = Domain.find_by(name: search_params[:name_matches]) - if domain - redirect_to info_registrar_domains_url(domain_name: domain.name) and return - end + redirect_to info_registrar_domains_url(domain_name: domain.name) and return if domain end domains = if params[:statuses_contains] - current_registrar_user.registrar.domains - .includes(:registrar, :registrant) - .where('domains.statuses @> ?::varchar[]', - "{#{params[:statuses_contains].join(',')}}") + current_domain_scope.where('domains.statuses @> ?::varchar[]', + "{#{params[:statuses_contains].join(',')}}") else - current_registrar_user.registrar.domains.includes(:registrar, :registrant) + current_domain_scope end + if params[:contacts_ident_eq] + domains = domains.where(contacts: { ident: params[:contacts_ident_eq] }) + end + normalize_search_parameters do - @q = domains.search(search_params) + @q = domains.search(search_params.except(:contacts_ident_eq)) @domains = @q.result.page(params[:page]) # if we do not get any results, add wildcards to the name field and search again if @domains.count == 0 && search_params[:name_matches] !~ /^%.+%$/ - new_search_params = search_params.to_h + new_search_params = search_params.to_h.except(:contacts_ident_eq) new_search_params[:name_matches] = "%#{new_search_params[:name_matches]}%" @q = domains.search(new_search_params) @domains = @q.result.page(params[:page]) @@ -57,6 +57,10 @@ class Registrar end end + def current_domain_scope + current_registrar_user.registrar.domains.includes(:registrar, :registrant) + end + def info authorize! :info, Depp::Domain @data = @domain.info(params[:domain_name]) if params[:domain_name] diff --git a/app/views/registrar/domains/_search_form.html.erb b/app/views/registrar/domains/_search_form.html.erb index 08b370b76..e9e5b5e1a 100644 --- a/app/views/registrar/domains/_search_form.html.erb +++ b/app/views/registrar/domains/_search_form.html.erb @@ -18,7 +18,8 @@
<%= f.label :contact_ident, for: nil %> - <%= f.search_field :contacts_ident_eq, class: 'form-control', placeholder: t(:contact_ident) %> + <%= f.search_field :contacts_ident_eq, value: search_params[:contacts_ident_eq], + class: 'form-control', placeholder: t(:contact_ident) %>
From 7d6d53e4207df8e62ac390beb7a519444d578f2f Mon Sep 17 00:00:00 2001 From: Alex Sherman Date: Mon, 2 Nov 2020 15:47:00 +0500 Subject: [PATCH 03/10] Auto-select email template Chooses template based on domain registrant ident_type. Closes #442 --- .../admin/domains/force_delete_controller.rb | 8 +++++-- .../domains/_force_delete_dialog.html.erb | 6 ----- app/views/admin/domains/edit.html.erb | 2 +- .../admin_area/domains/force_delete_test.rb | 22 +++++++++++++++++++ 4 files changed, 29 insertions(+), 9 deletions(-) diff --git a/app/controllers/admin/domains/force_delete_controller.rb b/app/controllers/admin/domains/force_delete_controller.rb index c61f050d2..e64012de7 100644 --- a/app/controllers/admin/domains/force_delete_controller.rb +++ b/app/controllers/admin/domains/force_delete_controller.rb @@ -22,7 +22,7 @@ module Admin send_email domain.update(contact_notification_sent_date: Time.zone.today) else - domain.update(template_name: params[:template_name]) + domain.update(template_name: template_name) end end @@ -34,6 +34,10 @@ module Admin private + def template_name + domain.registrant.org? ? 'legal_person' : 'private_person' + end + def domain @domain ||= Domain.find(params[:domain_id]) end @@ -46,7 +50,7 @@ module Admin DomainDeleteMailer.forced(domain: domain, registrar: domain.registrar, registrant: domain.registrant, - template_name: params[:template_name]).deliver_now + template_name: template_name).deliver_now end def force_delete_type diff --git a/app/views/admin/domains/_force_delete_dialog.html.erb b/app/views/admin/domains/_force_delete_dialog.html.erb index a76c14edd..932a3f75c 100644 --- a/app/views/admin/domains/_force_delete_dialog.html.erb +++ b/app/views/admin/domains/_force_delete_dialog.html.erb @@ -33,12 +33,6 @@ - <% end %> <%= render 'form' %> -<%= render 'force_delete_dialog', domain: @domain, templates: force_delete_templates %> +<%= render 'force_delete_dialog', domain: @domain %> diff --git a/test/system/admin_area/domains/force_delete_test.rb b/test/system/admin_area/domains/force_delete_test.rb index 4ccc10923..6aa53be6c 100644 --- a/test/system/admin_area/domains/force_delete_test.rb +++ b/test/system/admin_area/domains/force_delete_test.rb @@ -42,6 +42,22 @@ class AdminAreaDomainForceDeleteTest < ApplicationSystemTestCase find(:css, '#soft_delete').set(true) click_link_or_button 'Force delete domain' end + + @domain.reload + assert_equal template_name, @domain.template_name + end + + def test_uses_legal_template_if_registrant_org + @domain.registrant.update(ident_type: 'org') + + assert_emails 0 do + visit edit_admin_domain_url(@domain) + find(:css, '#soft_delete').set(true) + click_link_or_button 'Force delete domain' + end + + @domain.reload + assert_equal template_name, @domain.template_name end def test_allows_to_skip_notifying_registrant_and_admin_contacts_by_email @@ -71,4 +87,10 @@ class AdminAreaDomainForceDeleteTest < ApplicationSystemTestCase assert_no_button 'Schedule force delete' assert_no_link 'Schedule force delete' end + + private + + def template_name + @domain.registrant.org? ? 'legal_person' : 'private_person' + end end From 269c5c284ff216d143b52c24fa56ee28d7657317 Mon Sep 17 00:00:00 2001 From: Alex Sherman Date: Mon, 2 Nov 2020 16:05:04 +0500 Subject: [PATCH 04/10] Remove ForceDelete from statuses blocking confirmation --- app/models/domain.rb | 2 +- test/models/domain/force_delete_test.rb | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/app/models/domain.rb b/app/models/domain.rb index 2b3213a36..648a7b3c5 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -384,7 +384,7 @@ class Domain < ApplicationRecord end def registrant_update_confirmable?(token) - return false if (statuses & [DomainStatus::FORCE_DELETE, DomainStatus::DELETE_CANDIDATE]).any? + return false if statuses.include? DomainStatus::DELETE_CANDIDATE return false unless pending_update? return false unless registrant_verification_asked? return false unless registrant_verification_token == token diff --git a/test/models/domain/force_delete_test.rb b/test/models/domain/force_delete_test.rb index 0969504a4..9743989ac 100644 --- a/test/models/domain/force_delete_test.rb +++ b/test/models/domain/force_delete_test.rb @@ -252,4 +252,16 @@ class NewDomainForceDeleteTest < ActiveSupport::TestCase assert @domain.force_delete_scheduled? assert @domain.pending_update? end + + def test_force_delete_does_not_affect_registrant_update_confirmable + @domain.schedule_force_delete(type: :soft) + @domain.registrant_verification_asked!('test', User.last.id) + @domain.save! + @domain.reload + + @domain.statuses << DomainStatus::PENDING_UPDATE + + assert @domain.force_delete_scheduled? + assert @domain.registrant_update_confirmable?(@domain.registrant_verification_token) + end end From b1488169492827fc0180942b3ec71e66023b8280 Mon Sep 17 00:00:00 2001 From: Alex Sherman Date: Tue, 3 Nov 2020 14:22:12 +0500 Subject: [PATCH 05/10] Fix ForceDelete possible statuses doubling --- app/models/concerns/domain/force_delete.rb | 6 +++--- test/models/domain/force_delete_test.rb | 13 +++++++++++++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/app/models/concerns/domain/force_delete.rb b/app/models/concerns/domain/force_delete.rb index 9b75d1e92..7a1ace6a7 100644 --- a/app/models/concerns/domain/force_delete.rb +++ b/app/models/concerns/domain/force_delete.rb @@ -128,9 +128,9 @@ module Concerns::Domain::ForceDelete # rubocop:disable Metrics/ModuleLength end def add_force_delete_statuses - statuses << DomainStatus::FORCE_DELETE - statuses << DomainStatus::SERVER_RENEW_PROHIBITED - statuses << DomainStatus::SERVER_TRANSFER_PROHIBITED + self.statuses |= [DomainStatus::FORCE_DELETE, + DomainStatus::SERVER_RENEW_PROHIBITED, + DomainStatus::SERVER_TRANSFER_PROHIBITED] end def remove_force_delete_statuses diff --git a/test/models/domain/force_delete_test.rb b/test/models/domain/force_delete_test.rb index 0969504a4..4678ed99a 100644 --- a/test/models/domain/force_delete_test.rb +++ b/test/models/domain/force_delete_test.rb @@ -137,6 +137,19 @@ class NewDomainForceDeleteTest < ActiveSupport::TestCase assert_not @domain.force_delete_scheduled? end + def test_force_delete_does_not_double_statuses + statuses = [ + DomainStatus::FORCE_DELETE, + DomainStatus::SERVER_RENEW_PROHIBITED, + DomainStatus::SERVER_TRANSFER_PROHIBITED, + ] + @domain.statuses = @domain.statuses + statuses + @domain.save! + @domain.reload + @domain.schedule_force_delete(type: :fast_track) + assert_equal @domain.statuses.size, statuses.size + end + def test_cancelling_force_delete_removes_statuses_that_were_set_on_force_delete statuses = [ DomainStatus::FORCE_DELETE, From 08815f58124e8439259d54b36990b4f2f9c67298 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20V=C3=B5hmar?= Date: Tue, 3 Nov 2020 18:07:20 +0200 Subject: [PATCH 06/10] Update CHANGELOG.md --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4b8504cde..3860062c8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +03.11.2020 +* Fixed registrant confirmation while forcedelete is set on a domain [#1729](https://github.com/internetee/registry/issues/1729) + 28.10.2020 * Domain renew now canceles pending delete process [#1664](https://github.com/internetee/registry/issues/1664) * Added multi-language support to whois disclaimer [#1703](https://github.com/internetee/registry/issues/1703) From b62ffc4e7ee8079c694e166da564dc2099600958 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20V=C3=B5hmar?= Date: Tue, 3 Nov 2020 18:18:47 +0200 Subject: [PATCH 07/10] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3860062c8..0d92e9339 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ 03.11.2020 * Fixed registrant confirmation while forcedelete is set on a domain [#1729](https://github.com/internetee/registry/issues/1729) +* Fixed search in registrar domain view [#262](https://github.com/internetee/registry/issues/262) 28.10.2020 * Domain renew now canceles pending delete process [#1664](https://github.com/internetee/registry/issues/1664) From 433445f1ac22101cb830d96a8528f86253df344f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20V=C3=B5hmar?= Date: Tue, 3 Nov 2020 18:36:35 +0200 Subject: [PATCH 08/10] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0d92e9339..2eafe8711 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ 03.11.2020 * Fixed registrant confirmation while forcedelete is set on a domain [#1729](https://github.com/internetee/registry/issues/1729) * Fixed search in registrar domain view [#262](https://github.com/internetee/registry/issues/262) +* Fixed double status issue on setting forceDelete [#1135](https://github.com/internetee/registry/issues/1135) 28.10.2020 * Domain renew now canceles pending delete process [#1664](https://github.com/internetee/registry/issues/1664) From a6702267e58482dc56a812e71a2b730ecdb3fb24 Mon Sep 17 00:00:00 2001 From: Alex Sherman Date: Wed, 4 Nov 2020 17:11:46 +0500 Subject: [PATCH 09/10] Move template decision method to FD concern --- app/controllers/admin/domains/force_delete_controller.rb | 8 ++------ app/models/concerns/domain/force_delete.rb | 4 ++++ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/controllers/admin/domains/force_delete_controller.rb b/app/controllers/admin/domains/force_delete_controller.rb index e64012de7..6a111926f 100644 --- a/app/controllers/admin/domains/force_delete_controller.rb +++ b/app/controllers/admin/domains/force_delete_controller.rb @@ -22,7 +22,7 @@ module Admin send_email domain.update(contact_notification_sent_date: Time.zone.today) else - domain.update(template_name: template_name) + domain.update(template_name: domain.notification_template) end end @@ -34,10 +34,6 @@ module Admin private - def template_name - domain.registrant.org? ? 'legal_person' : 'private_person' - end - def domain @domain ||= Domain.find(params[:domain_id]) end @@ -50,7 +46,7 @@ module Admin DomainDeleteMailer.forced(domain: domain, registrar: domain.registrar, registrant: domain.registrant, - template_name: template_name).deliver_now + template_name: domain.notification_template).deliver_now end def force_delete_type diff --git a/app/models/concerns/domain/force_delete.rb b/app/models/concerns/domain/force_delete.rb index 9b75d1e92..bf619c65f 100644 --- a/app/models/concerns/domain/force_delete.rb +++ b/app/models/concerns/domain/force_delete.rb @@ -19,6 +19,10 @@ module Concerns::Domain::ForceDelete # rubocop:disable Metrics/ModuleLength end end + def notification_template + registrant.org? ? 'legal_person' : 'private_person' + end + def force_delete_scheduled? statuses.include?(DomainStatus::FORCE_DELETE) end From b35eb160a6ecf32c3f4735b72f7b29eb43ed29e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20V=C3=B5hmar?= Date: Wed, 4 Nov 2020 16:28:09 +0200 Subject: [PATCH 10/10] Update CHANGELOG.md --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2eafe8711..6721791d2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +04.11.2020 +* Email notification templates for forceDelete are now automatically selected according to registrant type [#442](https://github.com/internetee/registry/issues/442) + 03.11.2020 * Fixed registrant confirmation while forcedelete is set on a domain [#1729](https://github.com/internetee/registry/issues/1729) * Fixed search in registrar domain view [#262](https://github.com/internetee/registry/issues/262)