refactor create and update to get rid of respond_override

This commit is contained in:
Gaetan Riou
2020-07-10 15:38:56 +10:00
parent 6e5c168d3b
commit 1a186affcf

View File

@@ -10,36 +10,11 @@ module Spree
include OrderCyclesHelper
include EnterprisesHelper
create.before :create_before
update.before :update_before
before_action :load_data
before_action :load_form_data, only: [:index, :new, :create, :edit, :update]
before_action :load_spree_api_key, only: [:index, :variant_overrides]
before_action :strip_new_properties, only: [:create, :update]
respond_override create: { html: {
success: lambda {
if params[:button] == "add_another"
redirect_to new_admin_product_path
else
redirect_to admin_products_path
end
},
failure: lambda {
render :new
}
} }
respond_override update: { html: {
success: lambda {
redirect_to edit_admin_product_url(@product, @url_filter)
},
failure: lambda {
redirect_to edit_admin_product_url(@product, @url_filter)
}
} }
PRODUCT_FILTER = [
'query', 'producerFilter', 'categoryFilter', 'sorting', 'importDateFilter'
].freeze
@@ -51,7 +26,20 @@ module Spree
def create
delete_stock_params_and_set_after do
super
@prototype = Spree::Prototype.find(params[:product][:prototype_id]) if \
params[:product][:prototype_id].present?
@object.attributes = permitted_resource_params
if @object.save
flash[:success] = flash_message_for(@object, :successfully_created)
if params[:button] == "add_another"
redirect_to new_admin_product_path
else
redirect_to admin_products_path
end
else
render :new
end
end
rescue Paperclip::Errors::NotIdentifiedByImageMagickError
invoke_callbacks(:create, :fails)
@@ -81,10 +69,15 @@ module Spree
original_supplier_id = @product.supplier_id
delete_stock_params_and_set_after do
super
if original_supplier_id != @product.supplier_id
ExchangeVariantDeleter.new.delete(@product)
params[:product] ||= {} if params[:clear_product_properties]
if @object.update(permitted_resource_params)
if original_supplier_id != @product.supplier_id
ExchangeVariantDeleter.new.delete(@product)
end
flash[:success] = flash_message_for(@object, :successfully_updated)
end
redirect_to edit_admin_product_url(@object, @url_filter)
end
end
@@ -156,19 +149,6 @@ module Spree
@collection
end
def create_before
return if params[:product][:prototype_id].blank?
@prototype = Spree::Prototype.find(params[:product][:prototype_id])
end
def update_before
# We only reset the product properties if we're receiving a post from the form on that tab
return unless params[:clear_product_properties]
params[:product] ||= {}
end
def product_includes
[{ variants: [:images, { option_values: :option_type }] },
{ master: [:images, :default_price] }]