mirror of
https://github.com/internetee/registry.git
synced 2025-07-24 19:48:28 +02:00
Add poll message on start of grace period for soft delete
Add removing forceDelete on registrant change. Restore email template choosing on safe force delete via admin dashboard. See https://github.com/internetee/registry/issues/1428#issuecomment-573766153
This commit is contained in:
parent
222ac639ac
commit
9916ca52cb
8 changed files with 84 additions and 52 deletions
|
@ -11,6 +11,11 @@ module Concerns::Domain::ForceDelete
|
||||||
statuses.include?(DomainStatus::FORCE_DELETE)
|
statuses.include?(DomainStatus::FORCE_DELETE)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def should_notify_on_soft_force_delete?
|
||||||
|
force_delete_scheduled? && !statuses.include?(DomainStatus::CLIENT_HOLD) &&
|
||||||
|
force_delete_start.present? && force_delete_start.to_date == Time.zone.now.to_date
|
||||||
|
end
|
||||||
|
|
||||||
def client_holdable?
|
def client_holdable?
|
||||||
force_delete_scheduled? && !statuses.include?(DomainStatus::CLIENT_HOLD) &&
|
force_delete_scheduled? && !statuses.include?(DomainStatus::CLIENT_HOLD) &&
|
||||||
force_delete_start.present? && force_delete_lte_today && force_delete_lte_valid_date
|
force_delete_start.present? && force_delete_lte_today && force_delete_lte_valid_date
|
||||||
|
|
31
app/models/concerns/job/force_delete.rb
Normal file
31
app/models/concerns/job/force_delete.rb
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
module Concerns
|
||||||
|
module Job
|
||||||
|
module ForceDelete
|
||||||
|
extend ActiveSupport::Concern
|
||||||
|
|
||||||
|
class_methods do
|
||||||
|
def start_client_hold
|
||||||
|
log_prepare_client_hold
|
||||||
|
|
||||||
|
::PaperTrail.whodunnit = "cron - #{__method__}"
|
||||||
|
|
||||||
|
::Domain.force_delete_scheduled.each do |domain|
|
||||||
|
proceed_client_hold(domain: domain)
|
||||||
|
log_end_end_client_hold(domain)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def proceed_client_hold(domain:)
|
||||||
|
notify_on_grace_period(domain) if domain.should_notify_on_soft_force_delete?
|
||||||
|
return unless domain.client_holdable?
|
||||||
|
|
||||||
|
domain.statuses << DomainStatus::CLIENT_HOLD
|
||||||
|
log_start_client_hold(domain)
|
||||||
|
|
||||||
|
domain.save(validate: false)
|
||||||
|
notify_client_hold(domain)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
40
app/models/concerns/job/force_delete_messages.rb
Normal file
40
app/models/concerns/job/force_delete_messages.rb
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
module Concerns
|
||||||
|
module Job
|
||||||
|
module ForceDeleteMessages
|
||||||
|
extend ActiveSupport::Concern
|
||||||
|
|
||||||
|
class_methods do
|
||||||
|
def log_prepare_client_hold
|
||||||
|
return if Rails.env.test?
|
||||||
|
|
||||||
|
STDOUT << "#{Time.zone.now.utc} - Setting client_hold to domains\n"
|
||||||
|
end
|
||||||
|
|
||||||
|
def log_start_client_hold(domain)
|
||||||
|
return if Rails.env.test?
|
||||||
|
|
||||||
|
STDOUT << "#{Time.zone.now.utc} DomainCron.start_client_hold: ##{domain.id} "\
|
||||||
|
"(#{domain.name}) #{domain.changes}\n"
|
||||||
|
end
|
||||||
|
|
||||||
|
def log_end_end_client_hold(domain)
|
||||||
|
return if Rails.env.test?
|
||||||
|
|
||||||
|
STDOUT << "#{Time.zone.now.utc} - Successfully set client_hold on (#{domain.name})"
|
||||||
|
end
|
||||||
|
|
||||||
|
def notify_client_hold(domain)
|
||||||
|
domain.registrar.notifications.create!(text: I18n.t('client_hold_set_on_domain',
|
||||||
|
domain_name: domain.name,
|
||||||
|
date: domain.force_delete_start))
|
||||||
|
end
|
||||||
|
|
||||||
|
def notify_on_grace_period(domain)
|
||||||
|
domain.registrar.notifications.create!(text: I18n.t('grace_period_started_domain',
|
||||||
|
domain_name: domain.name,
|
||||||
|
date: domain.force_delete_start))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -547,6 +547,8 @@ class Domain < ApplicationRecord
|
||||||
activate if nameservers.reject(&:marked_for_destruction?).size >= Setting.ns_min_count
|
activate if nameservers.reject(&:marked_for_destruction?).size >= Setting.ns_min_count
|
||||||
end
|
end
|
||||||
|
|
||||||
|
cancel_force_delete if force_delete_scheduled? && pending_json['new_registrant_id']
|
||||||
|
|
||||||
if statuses.empty? && valid?
|
if statuses.empty? && valid?
|
||||||
statuses << DomainStatus::OK
|
statuses << DomainStatus::OK
|
||||||
elsif (statuses.length > 1 && active?) || !valid?
|
elsif (statuses.length > 1 && active?) || !valid?
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
class DomainCron
|
class DomainCron
|
||||||
|
include Concerns::Job::ForceDelete
|
||||||
|
include Concerns::Job::ForceDeleteMessages
|
||||||
|
|
||||||
def self.clean_expired_pendings
|
def self.clean_expired_pendings
|
||||||
STDOUT << "#{Time.zone.now.utc} - Clean expired domain pendings\n" unless Rails.env.test?
|
STDOUT << "#{Time.zone.now.utc} - Clean expired domain pendings\n" unless Rails.env.test?
|
||||||
|
@ -78,52 +80,4 @@ class DomainCron
|
||||||
STDOUT << "#{Time.zone.now.utc} - Successfully set server_hold to #{marked} of #{real} domains\n" unless Rails.env.test?
|
STDOUT << "#{Time.zone.now.utc} - Successfully set server_hold to #{marked} of #{real} domains\n" unless Rails.env.test?
|
||||||
marked
|
marked
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.start_client_hold
|
|
||||||
log_prepare_client_hold
|
|
||||||
|
|
||||||
::PaperTrail.whodunnit = "cron - #{__method__}"
|
|
||||||
|
|
||||||
marked = 0
|
|
||||||
real = 0
|
|
||||||
|
|
||||||
Domain.force_delete_scheduled.each do |domain|
|
|
||||||
next unless domain.client_holdable?
|
|
||||||
|
|
||||||
real += 1
|
|
||||||
domain.statuses << DomainStatus::CLIENT_HOLD
|
|
||||||
log_start_client_hold(domain)
|
|
||||||
|
|
||||||
domain.save(validate: false) and marked += 1 and notify_client_hold(domain)
|
|
||||||
end
|
|
||||||
|
|
||||||
log_end_end_client_hold(marked: marked, real: real)
|
|
||||||
marked
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.log_prepare_client_hold
|
|
||||||
return if Rails.env.test?
|
|
||||||
|
|
||||||
STDOUT << "#{Time.zone.now.utc} - Setting client_hold to domains\n"
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.log_start_client_hold(domain)
|
|
||||||
return if Rails.env.test?
|
|
||||||
|
|
||||||
STDOUT << "#{Time.zone.now.utc} DomainCron.start_client_hold: ##{domain.id} (#{domain.name})"\
|
|
||||||
"#{domain.changes}\n"
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.log_end_end_client_hold(marked:, real:)
|
|
||||||
return if Rails.env.test?
|
|
||||||
|
|
||||||
STDOUT << "#{Time.zone.now.utc} - Successfully set client_hold to #{marked} of #{real} "\
|
|
||||||
"domains\n"
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.notify_client_hold(domain)
|
|
||||||
domain.registrar.notifications.create!(text: I18n.t('soft_force_delete_set_on_domain',
|
|
||||||
domain_name: domain.name,
|
|
||||||
start_date: domain.force_delete_start))
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -14,8 +14,7 @@
|
||||||
<div class="col-md-9">
|
<div class="col-md-9">
|
||||||
<div class="checkbox">
|
<div class="checkbox">
|
||||||
<label>
|
<label>
|
||||||
<%= check_box_tag 'soft_delete', 1, true,
|
<%= check_box_tag 'soft_delete', 1, true %>
|
||||||
data: { dependent_content_toggle: true } %>
|
|
||||||
<%= t '.use_soft_delete' %>
|
<%= t '.use_soft_delete' %>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -619,7 +619,8 @@ en:
|
||||||
created_at_until: 'Created at until'
|
created_at_until: 'Created at until'
|
||||||
is_registrant: 'Is registrant'
|
is_registrant: 'Is registrant'
|
||||||
force_delete_set_on_domain: 'Force delete set on domain %{domain_name}'
|
force_delete_set_on_domain: 'Force delete set on domain %{domain_name}'
|
||||||
soft_force_delete_set_on_domain: 'clientHold status is set for domain %{domain_name}, ForceDelete is in effect from %{start_date}'
|
client_hold_set_on_domain: 'clientHold status is set for domain %{domain_name}, ForceDelete is in effect from %{date}'
|
||||||
|
grace_period_started_domain: 'For domain %{domain_name} started 45-days redemption grace period, ForceDelete will be in effect from %{date}'
|
||||||
force_delete_cancelled: 'Force delete is cancelled on domain %{domain_name}'
|
force_delete_cancelled: 'Force delete is cancelled on domain %{domain_name}'
|
||||||
contact_is_not_valid: 'Contact %{value} is not valid, please fix the invalid contact'
|
contact_is_not_valid: 'Contact %{value} is not valid, please fix the invalid contact'
|
||||||
next: 'Next'
|
next: 'Next'
|
||||||
|
|
|
@ -46,7 +46,7 @@ if @cron_group == 'registry'
|
||||||
runner 'DomainCron.start_redemption_grace_period'
|
runner 'DomainCron.start_redemption_grace_period'
|
||||||
end
|
end
|
||||||
|
|
||||||
every 1.hour do
|
every 1.day do
|
||||||
runner 'DomainCron.start_client_hold'
|
runner 'DomainCron.start_client_hold'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue