Add actions to set force delete #2624

This commit is contained in:
Martin Lensment 2015-06-10 19:15:40 +03:00
parent 9bd832278c
commit ba5be7b4f4
9 changed files with 101 additions and 24 deletions

View file

@ -28,6 +28,24 @@ class Admin::DomainsController < AdminController
end
end
def set_force_delete
if @domain.set_force_delete
flash[:notice] = I18n.t('domain_updated')
else
flash.now[:alert] = I18n.t('failed_to_update_domain')
end
redirect_to [:admin, @domain]
end
def unset_force_delete
if @domain.unset_force_delete
flash[:notice] = I18n.t('domain_updated')
else
flash.now[:alert] = I18n.t('failed_to_update_domain')
end
redirect_to [:admin, @domain]
end
private
def set_domain

View file

@ -198,6 +198,11 @@ class Domain < ActiveRecord::Base
c += 1
end
Domain.where('force_delete_at <= ?', Time.zone.now).each do |x|
x.destroy
c += 1
end
STDOUT << "#{Time.zone.now.utc} - Successfully destroyed #{c} domains\n" unless Rails.env.test?
end
end
@ -306,6 +311,10 @@ class Domain < ActiveRecord::Base
true
end
def force_deletable?
domain_statuses.where(value: DomainStatus::FORCE_DELETE).empty?
end
def registrant_verification_asked?
registrant_verification_asked_at.present? && registrant_verification_token.present?
end
@ -407,17 +416,34 @@ class Domain < ActiveRecord::Base
self.delete_at = outzone_at + Setting.redemption_grace_period.days
end
def set_force_delete
domain_statuses.where(value: DomainStatus::FORCE_DELETE).first_or_create
domain_statuses.where(value: DomainStatus::SERVER_RENEW_PROHIBITED).first_or_create
domain_statuses.where(value: DomainStatus::SERVER_TRANSFER_PROHIBITED).first_or_create
domain_statuses.where(value: DomainStatus::SERVER_UPDATE_PROHIBITED).first_or_create
domain_statuses.where(value: DomainStatus::SERVER_MANUAL_INZONE).first_or_create
domain_statuses.where(value: DomainStatus::PENDING_DELETE).first_or_create
domain_statuses.where(value: DomainStatus::CLIENT_DELETE_PROHIBITED).destroy_all
domain_statuses.where(value: DomainStatus::SERVER_DELETE_PROHIBITED).destroy_all
domain_statuses.reload
self.force_delete_at = Time.zone.now + Setting.redemption_grace_period unless self.force_delete_at
save(validate: false)
end
def unset_force_delete
domain_statuses.where(value: DomainStatus::FORCE_DELETE).destroy_all
domain_statuses.where(value: DomainStatus::SERVER_RENEW_PROHIBITED).destroy_all
domain_statuses.where(value: DomainStatus::SERVER_TRANSFER_PROHIBITED).destroy_all
domain_statuses.where(value: DomainStatus::SERVER_UPDATE_PROHIBITED).destroy_all
domain_statuses.where(value: DomainStatus::SERVER_MANUAL_INZONE).destroy_all
domain_statuses.where(value: DomainStatus::PENDING_DELETE).destroy_all
domain_statuses.reload
self.force_delete_at = nil
save(validate: false)
end
def manage_automatic_statuses
# domain_statuses.create(value: DomainStatus::DELETE_CANDIDATE) if delete_candidateable?
# if domain_statuses.exists?(value: DomainStatus::FORCE_DELETE)
# domain_statuses.where(value: DomainStatus::SERVER_RENEW_PROHIBITED).first_or_create
# domain_statuses.where(value: DomainStatus::SERVER_TRANSFER_PROHIBITED).first_or_create
# domain_statuses.where(value: DomainStatus::SERVER_UPDATE_PROHIBITED).first_or_create
# domain_statuses.where(value: DomainStatus::SERVER_MANUAL_INZONE).first_or_create
# domain_statuses.where(value: DomainStatus::PENDING_DELETE).first_or_create
# end
if domain_statuses.empty? && valid?
domain_statuses.create(value: DomainStatus::OK)
elsif domain_statuses.length > 1 || !valid?

View file

@ -73,23 +73,23 @@ class DomainStatus < ActiveRecord::Base
EXPIRED = 'expired'
STATUSES = [
CLIENT_DELETE_PROHIBITED, SERVER_DELETE_PROHIBITED, CLIENT_HOLD, SERVER_HOLD,
CLIENT_RENEW_PROHIBITED, SERVER_RENEW_PROHIBITED, CLIENT_TRANSFER_PROHIBITED,
SERVER_TRANSFER_PROHIBITED, CLIENT_UPDATE_PROHIBITED, SERVER_UPDATE_PROHIBITED,
INACTIVE, OK, PENDING_CREATE, PENDING_DELETE, PENDING_RENEW, PENDING_TRANSFER,
PENDING_UPDATE, SERVER_MANUAL_INZONE, SERVER_REGISTRANT_CHANGE_PROHIBITED,
SERVER_ADMIN_CHANGE_PROHIBITED, SERVER_TECH_CHANGE_PROHIBITED, FORCE_DELETE,
CLIENT_DELETE_PROHIBITED, SERVER_DELETE_PROHIBITED, CLIENT_HOLD, SERVER_HOLD,
CLIENT_RENEW_PROHIBITED, SERVER_RENEW_PROHIBITED, CLIENT_TRANSFER_PROHIBITED,
SERVER_TRANSFER_PROHIBITED, CLIENT_UPDATE_PROHIBITED, SERVER_UPDATE_PROHIBITED,
INACTIVE, OK, PENDING_CREATE, PENDING_DELETE, PENDING_RENEW, PENDING_TRANSFER,
PENDING_UPDATE, SERVER_MANUAL_INZONE, SERVER_REGISTRANT_CHANGE_PROHIBITED,
SERVER_ADMIN_CHANGE_PROHIBITED, SERVER_TECH_CHANGE_PROHIBITED, FORCE_DELETE,
DELETE_CANDIDATE, EXPIRED
]
CLIENT_STATUSES = [
CLIENT_DELETE_PROHIBITED, CLIENT_HOLD, CLIENT_RENEW_PROHIBITED, CLIENT_TRANSFER_PROHIBITED,
CLIENT_DELETE_PROHIBITED, CLIENT_HOLD, CLIENT_RENEW_PROHIBITED, CLIENT_TRANSFER_PROHIBITED,
CLIENT_UPDATE_PROHIBITED
]
SERVER_STATUSES = [
SERVER_DELETE_PROHIBITED, SERVER_HOLD, SERVER_RENEW_PROHIBITED, SERVER_TRANSFER_PROHIBITED,
SERVER_UPDATE_PROHIBITED, SERVER_MANUAL_INZONE, SERVER_REGISTRANT_CHANGE_PROHIBITED,
SERVER_UPDATE_PROHIBITED, SERVER_MANUAL_INZONE, SERVER_REGISTRANT_CHANGE_PROHIBITED,
SERVER_ADMIN_CHANGE_PROHIBITED, SERVER_TECH_CHANGE_PROHIBITED
]
@ -113,7 +113,7 @@ class DomainStatus < ActiveRecord::Base
case value
when 'ok'
'ok (paid and in zone)'
else
else
value
end
end

View file

@ -1,6 +1,11 @@
- content_for :actions do
= link_to(t(:edit_statuses), edit_admin_domain_path(@domain), class: 'btn btn-primary')
= link_to(t(:history), admin_domain_domain_versions_path(@domain.id), method: :get, class: 'btn btn-primary')
- if @domain.force_deletable?
= link_to(t(:set_force_delete), set_force_delete_admin_domain_path(@domain), method: :post, data: { confirm: t(:are_you_sure) }, class: 'btn btn-warning')
- else
= link_to(t(:unset_force_delete), unset_force_delete_admin_domain_path(@domain), method: :post, data: { confirm: t(:are_you_sure) }, class: 'btn btn-warning')
= render 'shared/title', name: @domain.name
.row