mirror of
https://github.com/internetee/registry.git
synced 2025-07-23 19:20:37 +02:00
implement mechanism of save statuses for force delete and lock
This commit is contained in:
parent
ec90722bf0
commit
96bc237484
9 changed files with 142 additions and 23 deletions
|
@ -2,10 +2,12 @@ module Domains
|
|||
module CancelForceDelete
|
||||
class RemoveForceDeleteStatuses < Base
|
||||
def execute
|
||||
domain.statuses.delete(DomainStatus::FORCE_DELETE)
|
||||
domain.statuses.delete(DomainStatus::SERVER_RENEW_PROHIBITED)
|
||||
domain.statuses.delete(DomainStatus::SERVER_TRANSFER_PROHIBITED)
|
||||
domain.statuses.delete(DomainStatus::CLIENT_HOLD)
|
||||
domain_statuses = [DomainStatus::FORCE_DELETE,
|
||||
DomainStatus::SERVER_RENEW_PROHIBITED,
|
||||
DomainStatus::SERVER_TRANSFER_PROHIBITED,
|
||||
DomainStatus::CLIENT_HOLD]
|
||||
rejected_statuses = domain.statuses.reject { |a| domain_statuses.include? a }
|
||||
domain.statuses = rejected_statuses
|
||||
domain.save(validate: false)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -2,8 +2,9 @@ module Domains
|
|||
module CancelForceDelete
|
||||
class RestoreStatusesBeforeForceDelete < Base
|
||||
def execute
|
||||
domain.statuses = domain.statuses_before_force_delete
|
||||
domain.statuses = domain.force_delete_domain_statuses_history || []
|
||||
domain.statuses_before_force_delete = nil
|
||||
domain.force_delete_domain_statuses_history = nil
|
||||
domain.save(validate: false)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -6,6 +6,7 @@ module Domains
|
|||
DomainStatus::SERVER_TRANSFER_PROHIBITED].freeze
|
||||
|
||||
def execute
|
||||
domain.force_delete_domain_statuses_history = domain.statuses
|
||||
domain.statuses_before_force_delete = domain.statuses
|
||||
domain.statuses |= STATUSES_TO_SET
|
||||
domain.save(validate: false)
|
||||
|
|
|
@ -1,6 +1,10 @@
|
|||
module Domain::ForceDelete # rubocop:disable Metrics/ModuleLength
|
||||
module Domain::ForceDelete
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
FORCE_DELETE_STATUSES = [DomainStatus::FORCE_DELETE,
|
||||
DomainStatus::SERVER_RENEW_PROHIBITED,
|
||||
DomainStatus::SERVER_TRANSFER_PROHIBITED].freeze
|
||||
|
||||
included do
|
||||
store_accessor :force_delete_data,
|
||||
:force_delete_type,
|
||||
|
|
|
@ -36,9 +36,10 @@ module Domain::RegistryLockable
|
|||
|
||||
transaction do
|
||||
LOCK_STATUSES.each do |domain_status|
|
||||
statuses.delete(domain_status)
|
||||
statuses.delete([domain_status])
|
||||
end
|
||||
self.locked_by_registrant_at = nil
|
||||
self.statuses = admin_store_statuses_history || []
|
||||
alert_registrar_lock_changes!(lock: false)
|
||||
|
||||
save!
|
||||
|
|
|
@ -553,8 +553,22 @@ class Domain < ApplicationRecord
|
|||
statuses.include?(DomainStatus::FORCE_DELETE)
|
||||
end
|
||||
|
||||
def update_unless_locked_by_registrant(update)
|
||||
update(admin_store_statuses_history: update) unless locked_by_registrant?
|
||||
end
|
||||
|
||||
def update_not_by_locked_statuses(update)
|
||||
return unless locked_by_registrant?
|
||||
|
||||
result = update.reject { |status| RegistryLockable::LOCK_STATUSES.include? status }
|
||||
update(admin_store_statuses_history: result)
|
||||
end
|
||||
|
||||
# special handling for admin changing status
|
||||
def admin_status_update(update)
|
||||
update_unless_locked_by_registrant(update)
|
||||
|
||||
update_not_by_locked_statuses(update)
|
||||
# check for deleted status
|
||||
statuses.each do |s|
|
||||
unless update.include? s
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue