mirror of
https://github.com/discourse/discourse.git
synced 2024-11-26 07:23:40 +08:00
DEV: Add destroy theme service
This commit is contained in:
parent
ae3a1bf2c7
commit
2e75913b2b
|
@ -191,32 +191,7 @@ class Admin::ThemesController < Admin::AdminController
|
||||||
on_failed_policy(:ban_in_allowlist_mode) { raise Discourse::InvalidAccess }
|
on_failed_policy(:ban_in_allowlist_mode) { raise Discourse::InvalidAccess }
|
||||||
on_failed_policy(:ban_for_remote_theme) { raise Discourse::InvalidAccess }
|
on_failed_policy(:ban_for_remote_theme) { raise Discourse::InvalidAccess }
|
||||||
on_success { |theme:| render json: serialize_data(theme, ThemeSerializer), status: :created }
|
on_success { |theme:| render json: serialize_data(theme, ThemeSerializer), status: :created }
|
||||||
on_failure { |theme:| render json: @theme.errors, status: :unprocessable_entity }
|
on_failure { |theme:| render json: theme.errors, status: :unprocessable_entity }
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
# def create
|
|
||||||
def create_old
|
|
||||||
ban_in_allowlist_mode!
|
|
||||||
|
|
||||||
@theme =
|
|
||||||
Theme.new(
|
|
||||||
name: theme_params[:name],
|
|
||||||
user_id: theme_user.id,
|
|
||||||
user_selectable: theme_params[:user_selectable] || false,
|
|
||||||
color_scheme_id: theme_params[:color_scheme_id],
|
|
||||||
component: [true, "true"].include?(theme_params[:component]),
|
|
||||||
)
|
|
||||||
set_fields
|
|
||||||
|
|
||||||
respond_to do |format|
|
|
||||||
if @theme.save
|
|
||||||
update_default_theme
|
|
||||||
log_theme_change(nil, @theme)
|
|
||||||
format.json { render json: serialize_data(@theme, ThemeSerializer), status: :created }
|
|
||||||
else
|
|
||||||
format.json { render json: @theme.errors, status: :unprocessable_entity }
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -281,13 +256,10 @@ class Admin::ThemesController < Admin::AdminController
|
||||||
end
|
end
|
||||||
|
|
||||||
def destroy
|
def destroy
|
||||||
@theme = Theme.find_by(id: params[:id])
|
Themes::Destroy.call(service_params) do
|
||||||
raise Discourse::InvalidParameters.new(:id) unless @theme
|
on_model_not_found(:theme) { raise Discourse::NotFound }
|
||||||
|
on_success { render json: {}, status: :no_content }
|
||||||
StaffActionLogger.new(current_user).log_theme_destroy(@theme)
|
end
|
||||||
@theme.destroy
|
|
||||||
|
|
||||||
respond_to { |format| format.json { head :no_content } }
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def bulk_destroy
|
def bulk_destroy
|
||||||
|
|
|
@ -20,9 +20,12 @@ class Themes::Create
|
||||||
policy :ban_for_remote_theme
|
policy :ban_for_remote_theme
|
||||||
|
|
||||||
step :set_theme_fields
|
step :set_theme_fields
|
||||||
|
|
||||||
|
transaction do
|
||||||
step :save_theme
|
step :save_theme
|
||||||
step :update_default_theme
|
step :update_default_theme
|
||||||
step :log_theme_change
|
step :log_theme_change
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
|
28
app/services/themes/destroy.rb
Normal file
28
app/services/themes/destroy.rb
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class Themes::Destroy
|
||||||
|
include Service::Base
|
||||||
|
|
||||||
|
params { attribute :id, :integer }
|
||||||
|
|
||||||
|
model :theme
|
||||||
|
|
||||||
|
transaction do
|
||||||
|
step :destroy_theme
|
||||||
|
step :log_theme_destroy
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def fetch_theme(params:)
|
||||||
|
Theme.find_by(id: params.id)
|
||||||
|
end
|
||||||
|
|
||||||
|
def destroy_theme(theme:)
|
||||||
|
theme.destroy
|
||||||
|
end
|
||||||
|
|
||||||
|
def log_theme_destroy(theme:, guardian:)
|
||||||
|
StaffActionLogger.new(guardian.user).log_theme_destroy(theme)
|
||||||
|
end
|
||||||
|
end
|
|
@ -990,7 +990,7 @@ RSpec.describe Admin::ThemesController do
|
||||||
it "returns the right response when an invalid id is given" do
|
it "returns the right response when an invalid id is given" do
|
||||||
delete "/admin/themes/9999.json"
|
delete "/admin/themes/9999.json"
|
||||||
|
|
||||||
expect(response.status).to eq(400)
|
expect(response.status).to eq(404)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "deletes the field's javascript cache" do
|
it "deletes the field's javascript cache" do
|
||||||
|
|
Loading…
Reference in New Issue
Block a user