mirror of
https://github.com/internetee/registry.git
synced 2025-08-01 23:42:04 +02:00
Merge branch 'master' into refactor-devise-integration
This commit is contained in:
commit
1f78856ea9
13 changed files with 235 additions and 169 deletions
|
@ -1,30 +1,50 @@
|
|||
module Concerns::Domain::ForceDelete
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
included do
|
||||
alias_attribute :force_delete_time, :force_delete_at
|
||||
end
|
||||
|
||||
def force_delete_scheduled?
|
||||
statuses.include?(DomainStatus::FORCE_DELETE)
|
||||
end
|
||||
|
||||
def schedule_force_delete
|
||||
self.statuses_backup = statuses
|
||||
statuses.delete(DomainStatus::CLIENT_DELETE_PROHIBITED)
|
||||
statuses.delete(DomainStatus::SERVER_DELETE_PROHIBITED)
|
||||
if discarded?
|
||||
raise StandardError, 'Force delete procedure cannot be scheduled while a domain is discarded'
|
||||
end
|
||||
|
||||
preserve_current_statuses_for_force_delete
|
||||
add_force_delete_statuses
|
||||
self.force_delete_at = (Time.zone.now + (Setting.redemption_grace_period.days + 1.day)).utc
|
||||
.beginning_of_day
|
||||
stop_all_pending_actions
|
||||
allow_deletion
|
||||
save(validate: false)
|
||||
end
|
||||
|
||||
def cancel_force_delete
|
||||
restore_statuses_before_force_delete
|
||||
remove_force_delete_statuses
|
||||
self.force_delete_at = nil
|
||||
save(validate: false)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def stop_all_pending_actions
|
||||
statuses.delete(DomainStatus::PENDING_UPDATE)
|
||||
statuses.delete(DomainStatus::PENDING_TRANSFER)
|
||||
statuses.delete(DomainStatus::PENDING_RENEW)
|
||||
statuses.delete(DomainStatus::PENDING_CREATE)
|
||||
end
|
||||
|
||||
statuses.delete(DomainStatus::FORCE_DELETE)
|
||||
statuses.delete(DomainStatus::SERVER_RENEW_PROHIBITED)
|
||||
statuses.delete(DomainStatus::SERVER_TRANSFER_PROHIBITED)
|
||||
statuses.delete(DomainStatus::SERVER_UPDATE_PROHIBITED)
|
||||
statuses.delete(DomainStatus::SERVER_MANUAL_INZONE)
|
||||
statuses.delete(DomainStatus::PENDING_DELETE)
|
||||
def preserve_current_statuses_for_force_delete
|
||||
self.statuses_before_force_delete = statuses
|
||||
end
|
||||
|
||||
def restore_statuses_before_force_delete
|
||||
self.statuses = statuses_before_force_delete
|
||||
self.statuses_before_force_delete = nil
|
||||
end
|
||||
|
||||
def add_force_delete_statuses
|
||||
statuses << DomainStatus::FORCE_DELETE
|
||||
statuses << DomainStatus::SERVER_RENEW_PROHIBITED
|
||||
statuses << DomainStatus::SERVER_TRANSFER_PROHIBITED
|
||||
|
@ -34,21 +54,19 @@ module Concerns::Domain::ForceDelete
|
|||
if (statuses & [DomainStatus::SERVER_HOLD, DomainStatus::CLIENT_HOLD]).empty?
|
||||
statuses << DomainStatus::SERVER_MANUAL_INZONE
|
||||
end
|
||||
|
||||
self.force_delete_at = (Time.zone.now + (Setting.redemption_grace_period.days + 1.day)).utc.beginning_of_day unless force_delete_at
|
||||
save!(validate: false)
|
||||
end
|
||||
|
||||
def cancel_force_delete
|
||||
s = []
|
||||
s << DomainStatus::EXPIRED if statuses.include?(DomainStatus::EXPIRED)
|
||||
s << DomainStatus::SERVER_HOLD if statuses.include?(DomainStatus::SERVER_HOLD)
|
||||
s << DomainStatus::DELETE_CANDIDATE if statuses.include?(DomainStatus::DELETE_CANDIDATE)
|
||||
def remove_force_delete_statuses
|
||||
statuses.delete(DomainStatus::FORCE_DELETE)
|
||||
statuses.delete(DomainStatus::SERVER_RENEW_PROHIBITED)
|
||||
statuses.delete(DomainStatus::SERVER_TRANSFER_PROHIBITED)
|
||||
statuses.delete(DomainStatus::SERVER_UPDATE_PROHIBITED)
|
||||
statuses.delete(DomainStatus::PENDING_DELETE)
|
||||
statuses.delete(DomainStatus::SERVER_MANUAL_INZONE)
|
||||
end
|
||||
|
||||
self.statuses = (statuses_backup + s).uniq
|
||||
|
||||
self.force_delete_at = nil
|
||||
self.statuses_backup = []
|
||||
save(validate: false)
|
||||
def allow_deletion
|
||||
statuses.delete(DomainStatus::CLIENT_DELETE_PROHIBITED)
|
||||
statuses.delete(DomainStatus::SERVER_DELETE_PROHIBITED)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -583,6 +583,7 @@ class Domain < ActiveRecord::Base
|
|||
hash = super
|
||||
hash['auth_info'] = hash.delete('transfer_code') # API v1 requirement
|
||||
hash['valid_from'] = hash['registered_at'] # API v1 requirement
|
||||
hash.delete('statuses_before_force_delete')
|
||||
hash
|
||||
end
|
||||
|
||||
|
|
|
@ -34,7 +34,7 @@ class DomainPresenter
|
|||
end
|
||||
|
||||
def force_delete_date
|
||||
view.l(domain.force_delete_time, format: :date) if domain.force_delete_time
|
||||
view.l(domain.force_delete_at, format: :date) if domain.force_delete_at
|
||||
end
|
||||
|
||||
def admin_contact_names
|
||||
|
@ -50,25 +50,43 @@ class DomainPresenter
|
|||
end
|
||||
|
||||
def force_delete_toggle_btn
|
||||
if !domain.force_delete_scheduled?
|
||||
view.content_tag(:a, view.t('admin.domains.force_delete_toggle_btn.schedule'),
|
||||
class: 'btn btn-default',
|
||||
data: {
|
||||
toggle: 'modal',
|
||||
target: '.domain-edit-force-delete-dialog',
|
||||
}
|
||||
)
|
||||
return inactive_schedule_force_delete_btn if domain.discarded?
|
||||
|
||||
if domain.force_delete_scheduled?
|
||||
cancel_force_delete_btn
|
||||
else
|
||||
view.link_to(view.t('admin.domains.force_delete_toggle_btn.cancel'),
|
||||
view.admin_domain_force_delete_path(domain),
|
||||
method: :delete,
|
||||
data: { confirm: view.t('admin.domains.force_delete_toggle_btn.cancel_confirm') },
|
||||
class: 'btn btn-primary')
|
||||
schedule_force_delete_btn
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def schedule_force_delete_btn
|
||||
view.content_tag(:a, view.t('admin.domains.force_delete_toggle_btn.schedule'),
|
||||
class: 'btn btn-default',
|
||||
data: {
|
||||
toggle: 'modal',
|
||||
target: '.domain-edit-force-delete-dialog',
|
||||
})
|
||||
end
|
||||
|
||||
def cancel_force_delete_btn
|
||||
view.link_to view.t('admin.domains.force_delete_toggle_btn.cancel'),
|
||||
view.admin_domain_force_delete_path(domain),
|
||||
method: :delete,
|
||||
data: {
|
||||
confirm: view.t('admin.domains.force_delete_toggle_btn.cancel_confirm'),
|
||||
},
|
||||
class: 'btn btn-primary'
|
||||
end
|
||||
|
||||
def inactive_schedule_force_delete_btn
|
||||
view.content_tag :button, view.t('admin.domains.force_delete_toggle_btn.schedule'),
|
||||
title: view.t('admin.domains.force_delete_toggle_btn.unable_to_schedule'),
|
||||
disabled: true,
|
||||
class: 'btn btn-default'
|
||||
end
|
||||
|
||||
attr_reader :domain
|
||||
attr_reader :view
|
||||
end
|
||||
|
|
|
@ -1,20 +1,22 @@
|
|||
<% domain = DomainPresenter.new(domain: @domain, view: self) %>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-5">
|
||||
<h1 class="text-center-xs">
|
||||
Edit: <%= domain.name %>
|
||||
</h1>
|
||||
</div>
|
||||
<div class="col-sm-7">
|
||||
<h1 class="text-right text-center-xs">
|
||||
<ol class="breadcrumb">
|
||||
<li><%= link_to t('admin.domains.index.header'), admin_domains_path %></li>
|
||||
<li><%= link_to @domain, admin_domain_path(@domain) %></li>
|
||||
</ol>
|
||||
|
||||
<div class="page-header">
|
||||
<div class="row">
|
||||
<div class="col-sm-4">
|
||||
<h1><%= t '.header', domain: domain.name %></h1>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-8 text-right">
|
||||
<%= link_to t('.add_new_status_btn'), '#', class: 'btn btn-primary js-add-status' %>
|
||||
<%= domain.force_delete_toggle_btn %>
|
||||
<%= link_to t('.back_btn'), [:admin, @domain], class: 'btn btn-default' %>
|
||||
</h1>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
|
||||
<%= render 'form' %>
|
||||
<%= render 'force_delete_dialog', domain: @domain, templates: force_delete_templates %>
|
||||
<%= render 'force_delete_dialog', domain: @domain, templates: force_delete_templates %>
|
|
@ -31,8 +31,8 @@
|
|||
<dt><%= t('.delete_time') %></dt>
|
||||
<dd><%= l(@domain.delete_at) %></dd>
|
||||
|
||||
<dt><%= t('.force_delete_time') %></dt>
|
||||
<dd><%= l(@domain.force_delete_at) %></dd>
|
||||
<dt><%= Domain.human_attribute_name :force_delete_at %></dt>
|
||||
<dd><%= l @domain.force_delete_at %></dd>
|
||||
</dl>
|
||||
</div>
|
||||
</div>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue