mirror of
https://github.com/codeninjasllc/discourse.git
synced 2024-11-30 19:08:10 -05:00
86 lines
2.3 KiB
Ruby
86 lines
2.3 KiB
Ruby
require_dependency "backup_restore"
|
|
|
|
class Admin::BackupsController < Admin::AdminController
|
|
|
|
skip_before_filter :check_xhr, only: [:index, :show, :logs]
|
|
|
|
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))
|
|
store_preloaded("logs", MultiJson.dump(BackupRestore.logs))
|
|
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))
|
|
store_preloaded("logs", MultiJson.dump(BackupRestore.logs))
|
|
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
|