From 1a186affcf528793096709fc5d096bd762173976 Mon Sep 17 00:00:00 2001 From: Gaetan Riou Date: Fri, 10 Jul 2020 15:38:56 +1000 Subject: [PATCH] refactor create and update to get rid of respond_override --- .../spree/admin/products_controller.rb | 64 +++++++------------ 1 file changed, 22 insertions(+), 42 deletions(-) diff --git a/app/controllers/spree/admin/products_controller.rb b/app/controllers/spree/admin/products_controller.rb index e131e10e25..406c997fdb 100644 --- a/app/controllers/spree/admin/products_controller.rb +++ b/app/controllers/spree/admin/products_controller.rb @@ -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] }]