From 22f6ece83f7445a4339b04e89f0b92becf4ed64f Mon Sep 17 00:00:00 2001 From: Rohan Mitchell Date: Wed, 4 Feb 2015 10:16:34 +1100 Subject: [PATCH] When fetching products for variant overrides admin, fetch all overridable products --- .../variant_overrides_controller.js.coffee | 2 +- .../api/products_controller_decorator.rb | 33 ++++++++++++++----- config/routes.rb | 1 + 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/app/assets/javascripts/admin/controllers/variant_overrides_controller.js.coffee b/app/assets/javascripts/admin/controllers/variant_overrides_controller.js.coffee index 81cc7d3317..bcc633805f 100644 --- a/app/assets/javascripts/admin/controllers/variant_overrides_controller.js.coffee +++ b/app/assets/javascripts/admin/controllers/variant_overrides_controller.js.coffee @@ -17,7 +17,7 @@ angular.module("ofn.admin").controller "AdminVariantOverridesCtrl", ($scope, $ti $scope.fetchProducts = -> - url = "/api/products/distributable?page=::page::;per_page=100" + url = "/api/products/overridable?page=::page::;per_page=100" PagedFetcher.fetch url, (data) => $scope.addProducts data.products diff --git a/app/controllers/spree/api/products_controller_decorator.rb b/app/controllers/spree/api/products_controller_decorator.rb index 733ce365a2..af7834bb04 100644 --- a/app/controllers/spree/api/products_controller_decorator.rb +++ b/app/controllers/spree/api/products_controller_decorator.rb @@ -17,21 +17,25 @@ Spree::Api::ProductsController.class_eval do ransack(params[:q]).result. page(params[:page]).per(params[:per_page]) - render text: { products: ActiveModel::ArraySerializer.new(@products, each_serializer: Spree::Api::ProductSerializer), pages: @products.num_pages }.to_json + render_paged_products @products end def distributable producers = OpenFoodNetwork::Permissions.new(current_api_user). order_cycle_enterprises.is_primary_producer.by_name - @products = Spree::Product.scoped. - merge(product_scope). - where(supplier_id: producers). - by_producer.by_name. - ransack(params[:q]).result. - page(params[:page]).per(params[:per_page]) + @products = paged_products_for_producers producers - render text: { products: ActiveModel::ArraySerializer.new(@products, each_serializer: Spree::Api::ProductSerializer), pages: @products.num_pages }.to_json + render_paged_products @products + end + + def overridable + producers = OpenFoodNetwork::Permissions.new(current_api_user). + variant_override_producers.by_name + + @products = paged_products_for_producers producers + + render_paged_products @products end def soft_delete @@ -60,4 +64,17 @@ Spree::Api::ProductsController.class_eval do scope.includes(:master) end + def paged_products_for_producers(producers) + Spree::Product.scoped. + merge(product_scope). + where(supplier_id: producers). + by_producer.by_name. + ransack(params[:q]).result. + page(params[:page]).per(params[:per_page]) + end + + def render_paged_products(products) + render text: { products: ActiveModel::ArraySerializer.new(products, each_serializer: Spree::Api::ProductSerializer), pages: products.num_pages }.to_json + end + end diff --git a/config/routes.rb b/config/routes.rb index 0d5d034df4..7b88f6014a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -142,6 +142,7 @@ Spree::Core::Engine.routes.prepend do get :managed get :bulk_products get :distributable + get :overridable end delete :soft_delete