diff --git a/app/models/domain.rb b/app/models/domain.rb index c6a0e7d1f..64c3b0b46 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -538,12 +538,7 @@ class Domain < ActiveRecord::Base end def set_force_delete - statuses << DomainStatus::FORCE_DELETE - statuses << DomainStatus::SERVER_RENEW_PROHIBITED - statuses << DomainStatus::SERVER_TRANSFER_PROHIBITED - statuses << DomainStatus::SERVER_UPDATE_PROHIBITED - statuses << DomainStatus::SERVER_MANUAL_INZONE - statuses << DomainStatus::PENDING_DELETE + self.statuses_backup = statuses statuses.delete(DomainStatus::CLIENT_DELETE_PROHIBITED) statuses.delete(DomainStatus::SERVER_DELETE_PROHIBITED) statuses.delete(DomainStatus::PENDING_UPDATE) @@ -551,11 +546,6 @@ class Domain < ActiveRecord::Base statuses.delete(DomainStatus::PENDING_RENEW) statuses.delete(DomainStatus::PENDING_CREATE) - self.force_delete_at = Time.zone.now + Setting.redemption_grace_period.days unless force_delete_at - save(validate: false) - end - - def unset_force_delete statuses.delete(DomainStatus::FORCE_DELETE) statuses.delete(DomainStatus::SERVER_RENEW_PROHIBITED) statuses.delete(DomainStatus::SERVER_TRANSFER_PROHIBITED) @@ -563,7 +553,27 @@ class Domain < ActiveRecord::Base statuses.delete(DomainStatus::SERVER_MANUAL_INZONE) statuses.delete(DomainStatus::PENDING_DELETE) + statuses << DomainStatus::FORCE_DELETE + statuses << DomainStatus::SERVER_RENEW_PROHIBITED + statuses << DomainStatus::SERVER_TRANSFER_PROHIBITED + statuses << DomainStatus::SERVER_UPDATE_PROHIBITED + statuses << DomainStatus::SERVER_MANUAL_INZONE + statuses << DomainStatus::PENDING_DELETE + + self.force_delete_at = Time.zone.now + Setting.redemption_grace_period.days unless force_delete_at + save(validate: false) + end + + def unset_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) + + self.statuses = (statuses_backup + s).uniq + self.force_delete_at = nil + self.statuses_backup = [] save(validate: false) end diff --git a/db/migrate/20150810114746_add_statuses_backup_for_domains.rb b/db/migrate/20150810114746_add_statuses_backup_for_domains.rb new file mode 100644 index 000000000..85ae9aab7 --- /dev/null +++ b/db/migrate/20150810114746_add_statuses_backup_for_domains.rb @@ -0,0 +1,5 @@ +class AddStatusesBackupForDomains < ActiveRecord::Migration + def change + add_column :domains, :statuses_backup, :string, array: true, default: [] + end +end diff --git a/db/schema-read-only.rb b/db/schema-read-only.rb index 46df6aac0..5eee65c59 100644 --- a/db/schema-read-only.rb +++ b/db/schema-read-only.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20150803080914) do +ActiveRecord::Schema.define(version: 20150810114746) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -329,6 +329,7 @@ ActiveRecord::Schema.define(version: 20150803080914) do t.string "statuses", array: true t.boolean "reserved", default: false t.hstore "status_notes" + t.string "statuses_backup", default: [], array: true end add_index "domains", ["delete_at"], name: "index_domains_on_delete_at", using: :btree diff --git a/db/structure.sql b/db/structure.sql index dab6220b8..f4627c3d2 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -910,7 +910,8 @@ CREATE TABLE domains ( force_delete_at timestamp without time zone, statuses character varying[], reserved boolean DEFAULT false, - status_notes hstore + status_notes hstore, + statuses_backup character varying[] DEFAULT '{}'::character varying[] ); @@ -4871,3 +4872,5 @@ INSERT INTO schema_migrations (version) VALUES ('20150722071128'); INSERT INTO schema_migrations (version) VALUES ('20150803080914'); +INSERT INTO schema_migrations (version) VALUES ('20150810114746'); +