solidus_api 1.2.3 → 1.3.0.beta1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +2 -2
- data/Rakefile +1 -1
- data/app/controllers/spree/api/addresses_controller.rb +3 -2
- data/app/controllers/spree/api/base_controller.rb +10 -15
- data/app/controllers/spree/api/checkouts_controller.rb +56 -55
- data/app/controllers/spree/api/classifications_controller.rb +4 -4
- data/app/controllers/spree/api/config_controller.rb +6 -1
- data/app/controllers/spree/api/credit_cards_controller.rb +11 -11
- data/app/controllers/spree/api/images_controller.rb +13 -13
- data/app/controllers/spree/api/inventory_units_controller.rb +4 -4
- data/app/controllers/spree/api/line_items_controller.rb +27 -23
- data/app/controllers/spree/api/option_types_controller.rb +6 -5
- data/app/controllers/spree/api/option_values_controller.rb +12 -12
- data/app/controllers/spree/api/orders_controller.rb +6 -17
- data/app/controllers/spree/api/payments_controller.rb +15 -17
- data/app/controllers/spree/api/product_properties_controller.rb +13 -14
- data/app/controllers/spree/api/products_controller.rb +31 -28
- data/app/controllers/spree/api/promotions_controller.rb +9 -8
- data/app/controllers/spree/api/properties_controller.rb +9 -10
- data/app/controllers/spree/api/resource_controller.rb +9 -1
- data/app/controllers/spree/api/shipments_controller.rb +18 -18
- data/app/controllers/spree/api/states_controller.rb +8 -7
- data/app/controllers/spree/api/stock_items_controller.rb +2 -1
- data/app/controllers/spree/api/stock_locations_controller.rb +1 -1
- data/app/controllers/spree/api/stores_controller.rb +0 -1
- data/app/controllers/spree/api/taxonomies_controller.rb +7 -5
- data/app/controllers/spree/api/taxons_controller.rb +20 -19
- data/app/controllers/spree/api/users_controller.rb +1 -4
- data/app/controllers/spree/api/variants_controller.rb +19 -18
- data/app/controllers/spree/api/zones_controller.rb +3 -4
- data/app/helpers/spree/api/api_helpers.rb +7 -6
- data/app/models/spree/api_configuration.rb +1 -1
- data/app/views/spree/api/config/show.v1.rabl +2 -1
- data/app/views/spree/api/products/show.v1.rabl +1 -1
- data/db/migrate/20100107141738_add_api_key_to_spree_users.rb +1 -1
- data/db/migrate/20120411123334_resize_api_key_field.rb +1 -1
- data/lib/spree/api/engine.rb +8 -8
- data/lib/spree/api/responders/rabl_template.rb +1 -1
- data/lib/spree/api/testing_support/caching.rb +4 -4
- data/script/rails +0 -1
- data/solidus_api.gemspec +3 -3
- data/spec/controllers/spree/api/addresses_controller_spec.rb +12 -13
- data/spec/controllers/spree/api/base_controller_spec.rb +10 -11
- data/spec/controllers/spree/api/checkouts_controller_spec.rb +38 -59
- data/spec/controllers/spree/api/config_controller_spec.rb +4 -2
- data/spec/controllers/spree/api/countries_controller_spec.rb +5 -5
- data/spec/controllers/spree/api/credit_cards_controller_spec.rb +5 -5
- data/spec/controllers/spree/api/images_controller_spec.rb +20 -18
- data/spec/controllers/spree/api/inventory_units_controller_spec.rb +11 -11
- data/spec/controllers/spree/api/line_items_controller_spec.rb +20 -19
- data/spec/controllers/spree/api/option_types_controller_spec.rb +23 -24
- data/spec/controllers/spree/api/option_values_controller_spec.rb +28 -29
- data/spec/controllers/spree/api/orders_controller_spec.rb +157 -179
- data/spec/controllers/spree/api/payments_controller_spec.rb +35 -45
- data/spec/controllers/spree/api/product_properties_controller_spec.rb +14 -15
- data/spec/controllers/spree/api/products_controller_spec.rb +64 -70
- data/spec/controllers/spree/api/promotion_application_spec.rb +4 -4
- data/spec/controllers/spree/api/promotions_controller_spec.rb +1 -1
- data/spec/controllers/spree/api/properties_controller_spec.rb +15 -15
- data/spec/controllers/spree/api/resource_controller_spec.rb +31 -2
- data/spec/controllers/spree/api/return_authorizations_controller_spec.rb +31 -31
- data/spec/controllers/spree/api/shipments_controller_spec.rb +6 -8
- data/spec/controllers/spree/api/states_controller_spec.rb +11 -12
- data/spec/controllers/spree/api/stock_items_controller_spec.rb +10 -7
- data/spec/controllers/spree/api/stock_locations_controller_spec.rb +3 -4
- data/spec/controllers/spree/api/stock_movements_controller_spec.rb +2 -3
- data/spec/controllers/spree/api/store_credit_events_controller_spec.rb +0 -2
- data/spec/controllers/spree/api/stores_controller_spec.rb +1 -2
- data/spec/controllers/spree/api/taxonomies_controller_spec.rb +17 -18
- data/spec/controllers/spree/api/taxons_controller_spec.rb +22 -24
- data/spec/controllers/spree/api/unauthenticated_products_controller_spec.rb +1 -2
- data/spec/controllers/spree/api/users_controller_spec.rb +13 -15
- data/spec/controllers/spree/api/variants_controller_spec.rb +42 -37
- data/spec/controllers/spree/api/zones_controller_spec.rb +18 -18
- data/spec/features/checkout_spec.rb +2 -2
- data/spec/models/spree/legacy_user_spec.rb +5 -5
- data/spec/requests/api/address_books_spec.rb +10 -11
- data/spec/requests/rabl_cache_spec.rb +7 -7
- data/spec/requests/ransackable_attributes_spec.rb +5 -7
- data/spec/shared_examples/protect_product_actions.rb +3 -4
- data/spec/spec_helper.rb +8 -4
- data/spec/support/controller_hacks.rb +5 -5
- data/spec/support/have_attributes_matcher.rb +0 -4
- data/spec/test_views/spree/api/widgets/show.v1.rabl +1 -1
- metadata +9 -10
- data/app/models/spree/option_value_decorator.rb +0 -9
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
module Spree
|
|
2
2
|
module Api
|
|
3
3
|
class PaymentsController < Spree::Api::BaseController
|
|
4
|
-
|
|
5
4
|
before_filter :find_order
|
|
6
5
|
around_filter :lock_order, only: [:create, :update, :destroy, :authorize, :capture, :purchase, :void, :credit]
|
|
7
6
|
before_filter :find_payment, only: [:update, :show, :authorize, :purchase, :capture, :void, :credit]
|
|
@@ -17,7 +16,6 @@ module Spree
|
|
|
17
16
|
end
|
|
18
17
|
|
|
19
18
|
def create
|
|
20
|
-
@order.validate_payments_attributes(payment_params)
|
|
21
19
|
@payment = PaymentCreate.new(@order, payment_params).build
|
|
22
20
|
if @payment.save
|
|
23
21
|
respond_with(@payment, status: 201, default_template: :show)
|
|
@@ -59,24 +57,24 @@ module Spree
|
|
|
59
57
|
|
|
60
58
|
private
|
|
61
59
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
60
|
+
def find_order
|
|
61
|
+
@order = Spree::Order.find_by(number: order_id)
|
|
62
|
+
authorize! :read, @order, order_token
|
|
63
|
+
end
|
|
66
64
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
65
|
+
def find_payment
|
|
66
|
+
@payment = @order.payments.find(params[:id])
|
|
67
|
+
end
|
|
70
68
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
69
|
+
def perform_payment_action(action, *args)
|
|
70
|
+
authorize! action, Payment
|
|
71
|
+
@payment.send("#{action}!", *args)
|
|
72
|
+
respond_with(@payment, default_template: :show)
|
|
73
|
+
end
|
|
76
74
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
75
|
+
def payment_params
|
|
76
|
+
params.require(:payment).permit(permitted_payment_attributes)
|
|
77
|
+
end
|
|
80
78
|
end
|
|
81
79
|
end
|
|
82
80
|
end
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
module Spree
|
|
2
2
|
module Api
|
|
3
3
|
class ProductPropertiesController < Spree::Api::BaseController
|
|
4
|
-
|
|
5
4
|
before_action :find_product
|
|
6
5
|
before_action :product_property, only: [:show, :update, :destroy]
|
|
7
6
|
|
|
@@ -51,22 +50,22 @@ module Spree
|
|
|
51
50
|
|
|
52
51
|
private
|
|
53
52
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
53
|
+
def find_product
|
|
54
|
+
@product = super(params[:product_id])
|
|
55
|
+
authorize! :read, @product
|
|
56
|
+
end
|
|
58
57
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
end
|
|
58
|
+
def product_property
|
|
59
|
+
if @product
|
|
60
|
+
@product_property ||= @product.product_properties.find_by(id: params[:id])
|
|
61
|
+
@product_property ||= @product.product_properties.includes(:property).where(spree_properties: { name: params[:id] }).first
|
|
62
|
+
authorize! :read, @product_property
|
|
65
63
|
end
|
|
64
|
+
end
|
|
66
65
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
66
|
+
def product_property_params
|
|
67
|
+
params.require(:product_property).permit(permitted_product_properties_attributes)
|
|
68
|
+
end
|
|
70
69
|
end
|
|
71
70
|
end
|
|
72
71
|
end
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
module Spree
|
|
2
2
|
module Api
|
|
3
3
|
class ProductsController < Spree::Api::BaseController
|
|
4
|
-
|
|
5
4
|
def index
|
|
6
5
|
if params[:ids]
|
|
7
6
|
ids = params[:ids].split(",").flatten
|
|
@@ -11,14 +10,17 @@ module Spree
|
|
|
11
10
|
end
|
|
12
11
|
|
|
13
12
|
@products = @products.distinct.page(params[:page]).per(params[:per_page])
|
|
14
|
-
expires_in 15.minutes, :
|
|
13
|
+
expires_in 15.minutes, public: true
|
|
15
14
|
headers['Surrogate-Control'] = "max-age=#{15.minutes}"
|
|
16
15
|
respond_with(@products)
|
|
17
16
|
end
|
|
18
17
|
|
|
18
|
+
def new
|
|
19
|
+
end
|
|
20
|
+
|
|
19
21
|
def show
|
|
20
22
|
@product = find_product(params[:id])
|
|
21
|
-
expires_in 15.minutes, :
|
|
23
|
+
expires_in 15.minutes, public: true
|
|
22
24
|
headers['Surrogate-Control'] = "max-age=#{15.minutes}"
|
|
23
25
|
headers['Surrogate-Key'] = "product_id=1"
|
|
24
26
|
respond_with(@product)
|
|
@@ -90,40 +92,41 @@ module Spree
|
|
|
90
92
|
@product = find_product(params[:id])
|
|
91
93
|
authorize! :destroy, @product
|
|
92
94
|
@product.destroy
|
|
93
|
-
respond_with(@product, :
|
|
95
|
+
respond_with(@product, status: 204)
|
|
94
96
|
end
|
|
95
97
|
|
|
96
98
|
private
|
|
97
|
-
def product_params
|
|
98
|
-
product_params = params.require(:product).permit(permitted_product_attributes)
|
|
99
|
-
if product_params[:taxon_ids].present?
|
|
100
|
-
product_params[:taxon_ids] = product_params[:taxon_ids].split(',')
|
|
101
|
-
end
|
|
102
|
-
product_params
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
def variants_params
|
|
106
|
-
variants_key = if params[:product].has_key? :variants
|
|
107
|
-
:variants
|
|
108
|
-
else
|
|
109
|
-
:variants_attributes
|
|
110
|
-
end
|
|
111
99
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
100
|
+
def product_params
|
|
101
|
+
product_params = params.require(:product).permit(permitted_product_attributes)
|
|
102
|
+
if product_params[:taxon_ids].present?
|
|
103
|
+
product_params[:taxon_ids] = product_params[:taxon_ids].split(',')
|
|
115
104
|
end
|
|
105
|
+
product_params
|
|
106
|
+
end
|
|
116
107
|
|
|
117
|
-
|
|
118
|
-
|
|
108
|
+
def variants_params
|
|
109
|
+
variants_key = if params[:product].key? :variants
|
|
110
|
+
:variants
|
|
111
|
+
else
|
|
112
|
+
:variants_attributes
|
|
119
113
|
end
|
|
120
114
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
115
|
+
params.require(:product).permit(
|
|
116
|
+
variants_key => [permitted_variant_attributes, :id]
|
|
117
|
+
).delete(variants_key) || []
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
def option_types_params
|
|
121
|
+
params[:product].fetch(:option_types, [])
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def set_up_shipping_category
|
|
125
|
+
if shipping_category = params[:product].delete(:shipping_category)
|
|
126
|
+
id = ShippingCategory.find_or_create_by(name: shipping_category).id
|
|
127
|
+
params[:product][:shipping_category_id] = id
|
|
126
128
|
end
|
|
129
|
+
end
|
|
127
130
|
end
|
|
128
131
|
end
|
|
129
132
|
end
|
|
@@ -12,15 +12,16 @@ module Spree
|
|
|
12
12
|
end
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
-
private
|
|
16
|
-
def requires_admin
|
|
17
|
-
return if @current_user_roles.include?("admin")
|
|
18
|
-
unauthorized and return
|
|
19
|
-
end
|
|
15
|
+
private
|
|
20
16
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
17
|
+
def requires_admin
|
|
18
|
+
return if @current_user_roles.include?("admin")
|
|
19
|
+
unauthorized && return
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def load_promotion
|
|
23
|
+
@promotion = Spree::Promotion.find_by_id(params[:id]) || Spree::Promotion.with_coupon_code(params[:id])
|
|
24
|
+
end
|
|
24
25
|
end
|
|
25
26
|
end
|
|
26
27
|
end
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
module Spree
|
|
2
2
|
module Api
|
|
3
3
|
class PropertiesController < Spree::Api::BaseController
|
|
4
|
-
|
|
5
4
|
before_action :find_property, only: [:show, :update, :destroy]
|
|
6
5
|
|
|
7
6
|
def index
|
|
@@ -9,7 +8,7 @@ module Spree
|
|
|
9
8
|
|
|
10
9
|
if params[:ids]
|
|
11
10
|
ids = params[:ids].split(",").flatten
|
|
12
|
-
@properties = @properties.where(:
|
|
11
|
+
@properties = @properties.where(id: ids)
|
|
13
12
|
else
|
|
14
13
|
@properties = @properties.ransack(params[:q]).result
|
|
15
14
|
end
|
|
@@ -57,15 +56,15 @@ module Spree
|
|
|
57
56
|
|
|
58
57
|
private
|
|
59
58
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
59
|
+
def find_property
|
|
60
|
+
@property = Spree::Property.accessible_by(current_ability, :read).find(params[:id])
|
|
61
|
+
rescue ActiveRecord::RecordNotFound
|
|
62
|
+
@property = Spree::Property.accessible_by(current_ability, :read).find_by!(name: params[:id])
|
|
63
|
+
end
|
|
65
64
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
65
|
+
def property_params
|
|
66
|
+
params.require(:property).permit(permitted_property_attributes)
|
|
67
|
+
end
|
|
69
68
|
end
|
|
70
69
|
end
|
|
71
70
|
end
|
|
@@ -2,7 +2,15 @@ class Spree::Api::ResourceController < Spree::Api::BaseController
|
|
|
2
2
|
before_action :load_resource, only: [:show, :update, :destroy]
|
|
3
3
|
|
|
4
4
|
def index
|
|
5
|
-
|
|
5
|
+
collection_scope = model_class.accessible_by(current_ability, :read)
|
|
6
|
+
if params[:ids]
|
|
7
|
+
ids = params[:ids].split(",").flatten
|
|
8
|
+
collection_scope = collection_scope.where(id: ids)
|
|
9
|
+
else
|
|
10
|
+
collection_scope = collection_scope.ransack(params[:q]).result
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
@collection = collection_scope.page(params[:page]).per(params[:per_page])
|
|
6
14
|
instance_variable_set("@#{controller_name}", @collection)
|
|
7
15
|
|
|
8
16
|
respond_with(@collection)
|
|
@@ -12,7 +12,7 @@ module Spree
|
|
|
12
12
|
@shipments = Spree::Shipment
|
|
13
13
|
.reverse_chronological
|
|
14
14
|
.joins(:order)
|
|
15
|
-
.where(spree_orders: {user_id: current_api_user.id})
|
|
15
|
+
.where(spree_orders: { user_id: current_api_user.id })
|
|
16
16
|
.includes(mine_includes)
|
|
17
17
|
.ransack(params[:q]).result.page(params[:page]).per(params[:per_page])
|
|
18
18
|
else
|
|
@@ -21,7 +21,7 @@ module Spree
|
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
def create
|
|
24
|
-
# TODO Can remove conditional here once deprecated #find_order is removed.
|
|
24
|
+
# TODO: Can remove conditional here once deprecated #find_order is removed.
|
|
25
25
|
unless @order.present?
|
|
26
26
|
@order = Spree::Order.find_by!(number: params[:shipment][:order_id])
|
|
27
27
|
authorize! :read, @order
|
|
@@ -29,7 +29,7 @@ module Spree
|
|
|
29
29
|
authorize! :create, Shipment
|
|
30
30
|
quantity = params[:quantity].to_i
|
|
31
31
|
@shipment = @order.shipments.create(stock_location_id: params.fetch(:stock_location_id))
|
|
32
|
-
@order.contents.add(variant, quantity, {shipment: @shipment})
|
|
32
|
+
@order.contents.add(variant, quantity, { shipment: @shipment })
|
|
33
33
|
|
|
34
34
|
@shipment.save!
|
|
35
35
|
|
|
@@ -48,7 +48,7 @@ module Spree
|
|
|
48
48
|
@shipment.ready!
|
|
49
49
|
else
|
|
50
50
|
logger.error("cannot_ready_shipment shipment_state=#{@shipment.state}")
|
|
51
|
-
render
|
|
51
|
+
render('spree/api/shipments/cannot_ready_shipment', status: 422) && return
|
|
52
52
|
end
|
|
53
53
|
end
|
|
54
54
|
respond_with(@shipment, default_template: :show)
|
|
@@ -66,7 +66,7 @@ module Spree
|
|
|
66
66
|
def add
|
|
67
67
|
quantity = params[:quantity].to_i
|
|
68
68
|
|
|
69
|
-
@shipment.order.contents.add(variant, quantity, {shipment: @shipment})
|
|
69
|
+
@shipment.order.contents.add(variant, quantity, { shipment: @shipment })
|
|
70
70
|
respond_with(@shipment, default_template: :show)
|
|
71
71
|
end
|
|
72
72
|
|
|
@@ -74,7 +74,7 @@ module Spree
|
|
|
74
74
|
quantity = params[:quantity].to_i
|
|
75
75
|
|
|
76
76
|
if @shipment.pending?
|
|
77
|
-
@shipment.order.contents.remove(variant, quantity, {shipment: @shipment})
|
|
77
|
+
@shipment.order.contents.remove(variant, quantity, { shipment: @shipment })
|
|
78
78
|
@shipment.reload if @shipment.persisted?
|
|
79
79
|
respond_with(@shipment, default_template: :show)
|
|
80
80
|
else
|
|
@@ -86,13 +86,13 @@ module Spree
|
|
|
86
86
|
def transfer_to_location
|
|
87
87
|
@stock_location = Spree::StockLocation.find(params[:stock_location_id])
|
|
88
88
|
@original_shipment.transfer_to_location(@variant, @quantity, @stock_location)
|
|
89
|
-
render json: {success: true, message: Spree.t(:shipment_transfer_success)}, status: 201
|
|
89
|
+
render json: { success: true, message: Spree.t(:shipment_transfer_success) }, status: 201
|
|
90
90
|
end
|
|
91
91
|
|
|
92
92
|
def transfer_to_shipment
|
|
93
93
|
@target_shipment = Spree::Shipment.find_by!(number: params[:target_shipment_number])
|
|
94
94
|
@original_shipment.transfer_to_shipment(@variant, @quantity, @target_shipment)
|
|
95
|
-
render json: {success: true, message: Spree.t(:shipment_transfer_success)}, status: 201
|
|
95
|
+
render json: { success: true, message: Spree.t(:shipment_transfer_success) }, status: 201
|
|
96
96
|
end
|
|
97
97
|
|
|
98
98
|
private
|
|
@@ -107,7 +107,7 @@ module Spree
|
|
|
107
107
|
end
|
|
108
108
|
|
|
109
109
|
def find_order_on_create
|
|
110
|
-
# TODO Can remove conditional here once deprecated #find_order is removed.
|
|
110
|
+
# TODO: Can remove conditional here once deprecated #find_order is removed.
|
|
111
111
|
unless @order.present?
|
|
112
112
|
@order = Spree::Order.find_by!(number: params[:shipment][:order_id])
|
|
113
113
|
authorize! :read, @order
|
|
@@ -146,31 +146,31 @@ module Spree
|
|
|
146
146
|
order: {
|
|
147
147
|
bill_address: {
|
|
148
148
|
state: {},
|
|
149
|
-
country: {}
|
|
149
|
+
country: {}
|
|
150
150
|
},
|
|
151
151
|
ship_address: {
|
|
152
152
|
state: {},
|
|
153
|
-
country: {}
|
|
153
|
+
country: {}
|
|
154
154
|
},
|
|
155
155
|
adjustments: {},
|
|
156
156
|
payments: {
|
|
157
157
|
order: {},
|
|
158
|
-
payment_method: {}
|
|
159
|
-
}
|
|
158
|
+
payment_method: {}
|
|
159
|
+
}
|
|
160
160
|
},
|
|
161
161
|
inventory_units: {
|
|
162
162
|
line_item: {
|
|
163
163
|
product: {},
|
|
164
|
-
variant: {}
|
|
164
|
+
variant: {}
|
|
165
165
|
},
|
|
166
166
|
variant: {
|
|
167
167
|
product: {},
|
|
168
168
|
default_price: {},
|
|
169
169
|
option_values: {
|
|
170
|
-
option_type: {}
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
}
|
|
170
|
+
option_type: {}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
174
|
}
|
|
175
175
|
end
|
|
176
176
|
end
|
|
@@ -20,14 +20,15 @@ module Spree
|
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
private
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
23
|
+
|
|
24
|
+
def scope
|
|
25
|
+
if params[:country_id]
|
|
26
|
+
@country = Country.accessible_by(current_ability, :read).find(params[:country_id])
|
|
27
|
+
return @country.states.accessible_by(current_ability, :read)
|
|
28
|
+
else
|
|
29
|
+
return State.accessible_by(current_ability, :read)
|
|
30
30
|
end
|
|
31
|
+
end
|
|
31
32
|
end
|
|
32
33
|
end
|
|
33
34
|
end
|
|
@@ -58,11 +58,12 @@ module Spree
|
|
|
58
58
|
end
|
|
59
59
|
|
|
60
60
|
def scope
|
|
61
|
-
includes = {:
|
|
61
|
+
includes = { variant: [{ option_values: :option_type }, :product] }
|
|
62
62
|
@stock_location.stock_items.accessible_by(current_ability, :read).includes(includes)
|
|
63
63
|
end
|
|
64
64
|
|
|
65
65
|
def stock_item_params
|
|
66
|
+
params.require(:stock_item).delete(:force)
|
|
66
67
|
params.require(:stock_item).permit(permitted_stock_item_attributes)
|
|
67
68
|
end
|
|
68
69
|
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
module Spree
|
|
2
2
|
module Api
|
|
3
3
|
class TaxonomiesController < Spree::Api::BaseController
|
|
4
|
-
|
|
5
4
|
def index
|
|
6
5
|
respond_with(taxonomies)
|
|
7
6
|
end
|
|
8
7
|
|
|
8
|
+
def new
|
|
9
|
+
end
|
|
10
|
+
|
|
9
11
|
def show
|
|
10
12
|
respond_with(taxonomy)
|
|
11
13
|
end
|
|
@@ -19,7 +21,7 @@ module Spree
|
|
|
19
21
|
authorize! :create, Taxonomy
|
|
20
22
|
@taxonomy = Taxonomy.new(taxonomy_params)
|
|
21
23
|
if @taxonomy.save
|
|
22
|
-
respond_with(@taxonomy, :
|
|
24
|
+
respond_with(@taxonomy, status: 201, default_template: :show)
|
|
23
25
|
else
|
|
24
26
|
invalid_resource!(@taxonomy)
|
|
25
27
|
end
|
|
@@ -28,7 +30,7 @@ module Spree
|
|
|
28
30
|
def update
|
|
29
31
|
authorize! :update, taxonomy
|
|
30
32
|
if taxonomy.update_attributes(taxonomy_params)
|
|
31
|
-
respond_with(taxonomy, :
|
|
33
|
+
respond_with(taxonomy, status: 200, default_template: :show)
|
|
32
34
|
else
|
|
33
35
|
invalid_resource!(taxonomy)
|
|
34
36
|
end
|
|
@@ -37,13 +39,13 @@ module Spree
|
|
|
37
39
|
def destroy
|
|
38
40
|
authorize! :destroy, taxonomy
|
|
39
41
|
taxonomy.destroy
|
|
40
|
-
respond_with(taxonomy, :
|
|
42
|
+
respond_with(taxonomy, status: 204)
|
|
41
43
|
end
|
|
42
44
|
|
|
43
45
|
private
|
|
44
46
|
|
|
45
47
|
def taxonomies
|
|
46
|
-
@taxonomies = Taxonomy.accessible_by(current_ability, :read).order('name').includes(:
|
|
48
|
+
@taxonomies = Taxonomy.accessible_by(current_ability, :read).order('name').includes(root: :children).
|
|
47
49
|
ransack(params[:q]).result.
|
|
48
50
|
page(params[:page]).per(params[:per_page])
|
|
49
51
|
end
|
|
@@ -4,18 +4,19 @@ module Spree
|
|
|
4
4
|
def index
|
|
5
5
|
if taxonomy
|
|
6
6
|
@taxons = taxonomy.root.children
|
|
7
|
+
elsif params[:ids]
|
|
8
|
+
@taxons = Spree::Taxon.accessible_by(current_ability, :read).where(id: params[:ids].split(','))
|
|
7
9
|
else
|
|
8
|
-
|
|
9
|
-
@taxons = Spree::Taxon.accessible_by(current_ability, :read).where(id: params[:ids].split(','))
|
|
10
|
-
else
|
|
11
|
-
@taxons = Spree::Taxon.accessible_by(current_ability, :read).order(:taxonomy_id, :lft).ransack(params[:q]).result
|
|
12
|
-
end
|
|
10
|
+
@taxons = Spree::Taxon.accessible_by(current_ability, :read).order(:taxonomy_id, :lft).ransack(params[:q]).result
|
|
13
11
|
end
|
|
14
12
|
|
|
15
13
|
@taxons = @taxons.page(params[:page]).per(params[:per_page])
|
|
16
14
|
respond_with(@taxons)
|
|
17
15
|
end
|
|
18
16
|
|
|
17
|
+
def new
|
|
18
|
+
end
|
|
19
|
+
|
|
19
20
|
def show
|
|
20
21
|
@taxon = taxon
|
|
21
22
|
respond_with(@taxon)
|
|
@@ -33,7 +34,7 @@ module Spree
|
|
|
33
34
|
|
|
34
35
|
if taxonomy.nil?
|
|
35
36
|
@taxon.errors[:taxonomy_id] = I18n.t(:invalid_taxonomy_id, scope: 'spree.api')
|
|
36
|
-
invalid_resource!(@taxon)
|
|
37
|
+
invalid_resource!(@taxon) && return
|
|
37
38
|
end
|
|
38
39
|
|
|
39
40
|
@taxon.parent_id = taxonomy.root.id unless params[:taxon][:parent_id]
|
|
@@ -71,23 +72,23 @@ module Spree
|
|
|
71
72
|
|
|
72
73
|
private
|
|
73
74
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
end
|
|
75
|
+
def taxonomy
|
|
76
|
+
if params[:taxonomy_id].present?
|
|
77
|
+
@taxonomy ||= Spree::Taxonomy.accessible_by(current_ability, :read).find(params[:taxonomy_id])
|
|
78
78
|
end
|
|
79
|
+
end
|
|
79
80
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
81
|
+
def taxon
|
|
82
|
+
@taxon ||= taxonomy.taxons.accessible_by(current_ability, :read).find(params[:id])
|
|
83
|
+
end
|
|
83
84
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
end
|
|
85
|
+
def taxon_params
|
|
86
|
+
if params[:taxon] && !params[:taxon].empty?
|
|
87
|
+
params.require(:taxon).permit(permitted_taxon_attributes)
|
|
88
|
+
else
|
|
89
|
+
{}
|
|
90
90
|
end
|
|
91
|
+
end
|
|
91
92
|
end
|
|
92
93
|
end
|
|
93
94
|
end
|
|
@@ -47,29 +47,30 @@ module Spree
|
|
|
47
47
|
end
|
|
48
48
|
|
|
49
49
|
private
|
|
50
|
-
def product
|
|
51
|
-
@product ||= Spree::Product.accessible_by(current_ability, :read).friendly.find(params[:product_id]) if params[:product_id]
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
def scope
|
|
55
|
-
if @product
|
|
56
|
-
variants = @product.variants_including_master
|
|
57
|
-
else
|
|
58
|
-
variants = Variant
|
|
59
|
-
end
|
|
60
50
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
51
|
+
def product
|
|
52
|
+
@product ||= Spree::Product.accessible_by(current_ability, :read).friendly.find(params[:product_id]) if params[:product_id]
|
|
53
|
+
end
|
|
64
54
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
variants
|
|
55
|
+
def scope
|
|
56
|
+
if @product
|
|
57
|
+
variants = @product.variants_including_master
|
|
58
|
+
else
|
|
59
|
+
variants = Variant
|
|
68
60
|
end
|
|
69
61
|
|
|
70
|
-
|
|
71
|
-
|
|
62
|
+
if current_ability.can?(:manage, Variant) && params[:show_deleted]
|
|
63
|
+
variants = variants.with_deleted
|
|
72
64
|
end
|
|
65
|
+
|
|
66
|
+
variants = variants.accessible_by(current_ability, :read)
|
|
67
|
+
variants = variants.in_stock if params[:in_stock_only] || cannot?(:view_out_of_stock, Spree::Variant)
|
|
68
|
+
variants
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def variant_params
|
|
72
|
+
params.require(:variant).permit(permitted_variant_attributes)
|
|
73
|
+
end
|
|
73
74
|
end
|
|
74
75
|
end
|
|
75
76
|
end
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
module Spree
|
|
2
2
|
module Api
|
|
3
3
|
class ZonesController < Spree::Api::BaseController
|
|
4
|
-
|
|
5
4
|
def create
|
|
6
5
|
authorize! :create, Zone
|
|
7
6
|
@zone = Zone.new(zone_params)
|
|
8
7
|
if @zone.save
|
|
9
|
-
respond_with(@zone, :
|
|
8
|
+
respond_with(@zone, status: 201, default_template: :show)
|
|
10
9
|
else
|
|
11
10
|
invalid_resource!(@zone)
|
|
12
11
|
end
|
|
@@ -15,7 +14,7 @@ module Spree
|
|
|
15
14
|
def destroy
|
|
16
15
|
authorize! :destroy, zone
|
|
17
16
|
zone.destroy
|
|
18
|
-
respond_with(zone, :
|
|
17
|
+
respond_with(zone, status: 204)
|
|
19
18
|
end
|
|
20
19
|
|
|
21
20
|
def index
|
|
@@ -30,7 +29,7 @@ module Spree
|
|
|
30
29
|
def update
|
|
31
30
|
authorize! :update, zone
|
|
32
31
|
if zone.update_attributes(zone_params)
|
|
33
|
-
respond_with(zone, :
|
|
32
|
+
respond_with(zone, status: 200, default_template: :show)
|
|
34
33
|
else
|
|
35
34
|
invalid_resource!(zone)
|
|
36
35
|
end
|