add ability to restore deleted sites

This commit is contained in:
Kyle Drake 2017-06-03 23:43:05 -07:00
parent c4e307fcf1
commit c9ba1cf0f4
6 changed files with 96 additions and 10 deletions

View file

@ -287,7 +287,7 @@ class Site < Sequel::Model
def get_site_from_login(username_or_email, plaintext)
site = get_with_identifier username_or_email
return nil if site.nil? || site.is_deleted || site.is_banned || !site.valid_password?(plaintext)
return nil if site.nil? || site.is_banned || !site.valid_password?(plaintext)
site
end
@ -445,19 +445,26 @@ class Site < Sequel::Model
def before_destroy
DB.transaction {
owner.end_supporter_membership! if parent?
if !Dir.exist? DELETED_SITES_ROOT
FileUtils.mkdir DELETED_SITES_ROOT
end
FileUtils.mkdir_p File.join(DELETED_SITES_ROOT, self.class.sharding_dir(username))
FileUtils.mv files_path, File.join(DELETED_SITES_ROOT, self.class.sharding_dir(username), '/')
FileUtils.mv files_path, deleted_files_path
remove_all_tags
#remove_all_events
#Event.where(actioning_site_id: id).destroy
}
end
def undelete!
return false unless Dir.exist? deleted_files_path
FileUtils.mkdir_p File.join(SITE_FILES_ROOT, self.class.sharding_dir(username))
DB.transaction {
FileUtils.mv deleted_files_path, files_path
self.is_deleted = false
save_changes
}
true
end
def is_banned?
is_banned
end
@ -1033,6 +1040,11 @@ class Site < Sequel::Model
File.join SITE_FILES_ROOT, self.class.sharding_dir(name), name
end
def base_deleted_files_path(name=username)
raise 'username missing' if name.nil? || name.empty?
File.join DELETED_SITES_ROOT, self.class.sharding_dir(name), name
end
def self.sharding_base_path(name)
File.join SITE_FILES_ROOT, sharding_dir(name)
end
@ -1065,6 +1077,10 @@ class Site < Sequel::Model
File.join base_files_path, scrubbed_path(path)
end
def deleted_files_path(path='')
File.join base_deleted_files_path, scrubbed_path(path)
end
def file_list(path='')
list = Dir.glob(File.join(files_path(path), '*')).collect do |file_path|
file = {