mirror of
https://github.com/discourse/discourse.git
synced 2025-05-21 18:12:32 +08:00
backups controller & specs
This commit is contained in:
84
app/controllers/admin/backups_controller.rb
Normal file
84
app/controllers/admin/backups_controller.rb
Normal file
@ -0,0 +1,84 @@
|
||||
require_dependency "backup_restore"
|
||||
|
||||
class Admin::BackupsController < Admin::AdminController
|
||||
|
||||
skip_before_filter :check_xhr, only: [:index, :show]
|
||||
|
||||
def index
|
||||
respond_to do |format|
|
||||
format.html do
|
||||
store_preloaded("backups", MultiJson.dump(serialize_data(Backup.all, BackupSerializer)))
|
||||
store_preloaded("operations_status", MultiJson.dump(BackupRestore.operations_status))
|
||||
render "default/empty"
|
||||
end
|
||||
format.json do
|
||||
render_serialized(Backup.all, BackupSerializer)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def status
|
||||
render_json_dump(BackupRestore.operations_status)
|
||||
end
|
||||
|
||||
def create
|
||||
BackupRestore.backup!(current_user.id, true)
|
||||
rescue BackupRestore::OperationRunningError
|
||||
render json: failed_json.merge(message: I18n.t("backup.operation_already_running"))
|
||||
else
|
||||
render json: success_json
|
||||
end
|
||||
|
||||
def cancel
|
||||
BackupRestore.cancel!
|
||||
rescue BackupRestore::OperationRunningError
|
||||
render json: failed_json.merge(message: I18n.t("backup.operation_already_running"))
|
||||
else
|
||||
render json: success_json
|
||||
end
|
||||
|
||||
# download
|
||||
def show
|
||||
filename = params.fetch(:id)
|
||||
if backup = Backup[filename]
|
||||
send_file backup.path
|
||||
else
|
||||
render nothing: true, status: 404
|
||||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
filename = params.fetch(:id)
|
||||
Backup.remove(filename)
|
||||
render nothing: true
|
||||
end
|
||||
|
||||
def logs
|
||||
store_preloaded("operations_status", MultiJson.dump(BackupRestore.operations_status))
|
||||
render "default/empty"
|
||||
end
|
||||
|
||||
def restore
|
||||
filename = params.fetch(:id)
|
||||
BackupRestore.restore!(current_user.id, filename, true)
|
||||
rescue BackupRestore::OperationRunningError
|
||||
render json: failed_json.merge(message: I18n.t("backup.operation_already_running"))
|
||||
else
|
||||
render json: success_json
|
||||
end
|
||||
|
||||
def rollback
|
||||
BackupRestore.rollback!
|
||||
rescue BackupRestore::OperationRunningError
|
||||
render json: failed_json.merge(message: I18n.t("backup.operation_already_running"))
|
||||
else
|
||||
render json: success_json
|
||||
end
|
||||
|
||||
def readonly
|
||||
enable = params.fetch(:enable).to_s == "true"
|
||||
enable ? Discourse.enable_readonly_mode : Discourse.disable_readonly_mode
|
||||
render nothing: true
|
||||
end
|
||||
|
||||
end
|
Reference in New Issue
Block a user