Add reason handling to force delete bulk action

This commit is contained in:
Karl Erik Õunapuu 2020-11-03 15:46:32 +02:00
parent 2d8eb8f02c
commit 1cca76e9ba
No known key found for this signature in database
GPG key ID: C9DD647298A34764
4 changed files with 15 additions and 12 deletions

View file

@ -4,14 +4,14 @@ module Admin
class MassActionsController < BaseController class MassActionsController < BaseController
authorize_resource authorize_resource
# GET /admin/disputes # GET /admin/mass_actions
def index; end def index; end
# POST /admin/disputes # POST /admin/mass_actions
def create def create
res = MassAction.process(params[:mass_action], params[:entry_list].path) res = MassAction.process(params[:mass_action], params[:entry_list].path)
backlog = "#{params[:mass_action]} done for #{res[:ok].join(',')}.\n" \ backlog = "#{params[:mass_action]} completed for #{res[:ok]}.\n" \
"Failed: objects: #{res[:fail].join(',')}" "Failed: objects: #{res[:fail]}"
redirect_to(admin_mass_actions_path, notice: backlog) redirect_to(admin_mass_actions_path, notice: backlog)
end end

View file

@ -42,12 +42,12 @@ module Concerns::Domain::ForceDelete # rubocop:disable Metrics/ModuleLength
force_delete_start + Setting.expire_warning_period.days <= valid_to force_delete_start + Setting.expire_warning_period.days <= valid_to
end end
def schedule_force_delete(type: :fast_track, notify: false) def schedule_force_delete(type: :fast_track, reason: nil)
if discarded? if discarded?
raise StandardError, 'Force delete procedure cannot be scheduled while a domain is discarded' raise StandardError, 'Force delete procedure cannot be scheduled while a domain is discarded'
end end
type == :fast_track ? force_delete_fast_track : force_delete_soft(notify: notify) type == :fast_track ? force_delete_fast_track : force_delete_soft(reason: reason)
end end
def add_force_delete_type(force_delete_type) def add_force_delete_type(force_delete_type)
@ -65,7 +65,7 @@ module Concerns::Domain::ForceDelete # rubocop:disable Metrics/ModuleLength
save(validate: false) save(validate: false)
end end
def force_delete_soft(notify: false) def force_delete_soft(reason: nil)
preserve_current_statuses_for_force_delete preserve_current_statuses_for_force_delete
add_force_delete_statuses add_force_delete_statuses
add_force_delete_type(:soft) add_force_delete_type(:soft)
@ -73,7 +73,7 @@ module Concerns::Domain::ForceDelete # rubocop:disable Metrics/ModuleLength
stop_all_pending_actions stop_all_pending_actions
allow_deletion allow_deletion
save(validate: false) save(validate: false)
notify_parties if notify notify_parties(reason) if reason
end end
def clear_force_delete_data def clear_force_delete_data
@ -150,8 +150,11 @@ module Concerns::Domain::ForceDelete # rubocop:disable Metrics/ModuleLength
Time.zone.today + Setting.expire_warning_period.days + Setting.redemption_grace_period.days Time.zone.today + Setting.expire_warning_period.days + Setting.redemption_grace_period.days
end end
def notify_parties def notify_parties(reason)
self.template_name = registrant.org? ? 'legal_person' : 'private_person' ent = registrant.org? ? 'legal_person' : 'private_person' if reason == 'ENTITY_BURIED'
ent ||= reason.downcase
self.template_name = ent
save(validate: false) save(validate: false)
registrar.notifications.create!(text: I18n.t('force_delete_set_on_domain', registrar.notifications.create!(text: I18n.t('force_delete_set_on_domain',
domain_name: name, domain_name: name,

View file

@ -12,7 +12,7 @@ class MassAction
dn = Domain.find_by(name_puny: e['domain_name']) dn = Domain.find_by(name_puny: e['domain_name'])
log[:fail] << e['domain_name'] and next unless dn log[:fail] << e['domain_name'] and next unless dn
dn.schedule_force_delete(type: :soft, notify: true) dn.schedule_force_delete(type: :soft, reason: e['delete_reason'])
log[:ok] << dn.name log[:ok] << dn.name
end end

View file

@ -6,7 +6,7 @@
<div class="panel-heading">Bulk Domain Force Delete</div> <div class="panel-heading">Bulk Domain Force Delete</div>
<div class="panel-body"> <div class="panel-body">
<p>Triggers <b>soft</b> force delete procedure for uploaded domain list. List must be in <b>CSV</b> format. Each domain entry must be on separate line. Line must include <b>domain_name</b> (puny) followed with <b>delete_reason</b>, separated by comma.</p> <p>Triggers <b>soft</b> force delete procedure for uploaded domain list. List must be in <b>CSV</b> format. Each domain entry must be on separate line. Line must include <b>domain_name</b> (puny) followed with <b>delete_reason</b>, separated by comma.</p>
<p>Allowed delete reasons: <b>IDENT_BURIED</b> | <b>PHONE</b> | <b>EMAIL</b></p> <p>Allowed delete reasons: <b>ENTITY_BURIED</b> | <b>PHONE</b> | <b>EMAIL</b></p>
<%= form_tag admin_mass_actions_path, multipart: true do %> <%= form_tag admin_mass_actions_path, multipart: true do %>
<%= file_field_tag :entry_list, accept: 'text/csv' %> <%= file_field_tag :entry_list, accept: 'text/csv' %>
<%= hidden_field_tag :mass_action, 'force_delete' %> <%= hidden_field_tag :mass_action, 'force_delete' %>