spree_api 1.3.5 → 2.0.0.rc1
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 +14 -6
- data/Rakefile +1 -1
- data/app/controllers/spree/api/addresses_controller.rb +0 -1
- data/app/controllers/spree/api/base_controller.rb +21 -9
- data/app/controllers/spree/api/checkouts_controller.rb +40 -20
- data/app/controllers/spree/api/countries_controller.rb +0 -1
- data/app/controllers/spree/api/inventory_units_controller.rb +1 -1
- data/app/controllers/spree/api/option_types_controller.rb +46 -0
- data/app/controllers/spree/api/option_values_controller.rb +56 -0
- data/app/controllers/spree/api/orders_controller.rb +1 -21
- data/app/controllers/spree/api/product_properties_controller.rb +0 -1
- data/app/controllers/spree/api/products_controller.rb +12 -27
- data/app/controllers/spree/api/properties_controller.rb +61 -0
- data/app/controllers/spree/api/shipments_controller.rb +51 -1
- data/app/controllers/spree/api/states_controller.rb +32 -0
- data/app/controllers/spree/api/stock_items_controller.rb +70 -0
- data/app/controllers/spree/api/stock_locations_controller.rb +45 -0
- data/app/controllers/spree/api/stock_movements_controller.rb +55 -0
- data/app/controllers/spree/api/taxonomies_controller.rb +5 -0
- data/app/controllers/spree/api/taxons_controller.rb +16 -2
- data/app/controllers/spree/api/variants_controller.rb +1 -1
- data/app/controllers/spree/api/zones_controller.rb +0 -1
- data/app/helpers/spree/api/api_helpers.rb +34 -7
- data/app/models/spree/api_configuration.rb +1 -2
- data/app/models/spree/line_item_decorator.rb +1 -1
- data/app/models/spree/order_decorator.rb +6 -169
- data/app/overrides/api_admin_user_edit_form.rb +7 -6
- data/app/views/spree/admin/users/_api_fields.html.erb +7 -8
- data/app/views/spree/api/addresses/show.v1.rabl +2 -2
- data/app/views/spree/api/adjustments/show.v1.rabl +2 -0
- data/app/views/spree/api/credit_cards/show.v1.rabl +2 -0
- data/app/views/spree/api/option_types/index.v1.rabl +3 -0
- data/app/views/spree/api/option_types/show.v1.rabl +5 -0
- data/app/views/spree/api/option_values/index.v1.rabl +3 -0
- data/app/views/spree/api/option_values/show.v1.rabl +2 -0
- data/app/views/spree/api/orders/could_not_apply_coupon.v1.rabl +2 -0
- data/app/views/spree/api/orders/delivery.v1.rabl +2 -2
- data/app/views/spree/api/orders/payment.v1.rabl +3 -0
- data/app/views/spree/api/orders/show.v1.rabl +8 -0
- data/app/views/spree/api/properties/index.v1.rabl +7 -0
- data/app/views/spree/api/properties/new.v1.rabl +2 -0
- data/app/views/spree/api/properties/show.v1.rabl +2 -0
- data/app/views/spree/api/shared/stock_location_required.v1.rabl +2 -0
- data/app/views/spree/api/shipments/show.v1.rabl +7 -0
- data/app/views/spree/api/states/index.v1.rabl +14 -0
- data/app/views/spree/api/states/show.v1.rabl +2 -0
- data/app/views/spree/api/stock_items/index.v1.rabl +7 -0
- data/app/views/spree/api/stock_items/show.v1.rabl +5 -0
- data/app/views/spree/api/stock_locations/index.v1.rabl +7 -0
- data/app/views/spree/api/stock_locations/show.v1.rabl +8 -0
- data/app/views/spree/api/stock_movements/index.v1.rabl +7 -0
- data/app/views/spree/api/stock_movements/show.v1.rabl +5 -0
- data/app/views/spree/api/taxonomies/jstree.rabl +8 -0
- data/app/views/spree/api/taxons/jstree.rabl +8 -0
- data/app/views/spree/api/variants/index.v1.rabl +14 -1
- data/app/views/spree/api/variants/variant.v1.rabl +0 -4
- data/config/locales/en.yml +1 -0
- data/config/routes.rb +29 -3
- data/lib/spree/api.rb +0 -2
- data/lib/spree/api/controller_setup.rb +6 -1
- data/lib/spree/api/testing_support/helpers.rb +1 -1
- data/lib/spree/api/testing_support/setup.rb +13 -0
- data/spec/controllers/spree/api/base_controller_spec.rb +14 -1
- data/spec/controllers/spree/api/checkouts_controller_spec.rb +59 -28
- data/spec/controllers/spree/api/line_items_controller_spec.rb +1 -5
- data/spec/controllers/spree/api/option_types_controller_spec.rb +116 -0
- data/spec/controllers/spree/api/option_values_controller_spec.rb +128 -0
- data/spec/controllers/spree/api/orders_controller_spec.rb +11 -93
- data/spec/controllers/spree/api/product_properties_controller_spec.rb +2 -2
- data/spec/controllers/spree/api/products_controller_spec.rb +18 -76
- data/spec/controllers/spree/api/properties_controller_spec.rb +89 -0
- data/spec/controllers/spree/api/return_authorizations_controller_spec.rb +1 -9
- data/spec/controllers/spree/api/shipments_controller_spec.rb +80 -5
- data/spec/controllers/spree/api/states_controller_spec.rb +76 -0
- data/spec/controllers/spree/api/stock_items_controller_spec.rb +88 -0
- data/spec/controllers/spree/api/stock_locations_controller_spec.rb +86 -0
- data/spec/controllers/spree/api/stock_movements_controller_spec.rb +72 -0
- data/spec/controllers/spree/api/taxonomies_controller_spec.rb +7 -0
- data/spec/controllers/spree/api/taxons_controller_spec.rb +29 -2
- data/spec/controllers/spree/api/unauthenticated_products_controller_spec.rb +1 -1
- data/spec/controllers/spree/api/variants_controller_spec.rb +5 -16
- data/spec/fixtures/thinking-cat.jpg +0 -0
- data/spec/models/spree/order_spec.rb +7 -328
- data/spec/spec_helper.rb +18 -2
- data/spree_api.gemspec +2 -1
- metadata +67 -16
- data/.rspec +0 -1
- data/app/controllers/spree/base_controller_decorator.rb +0 -15
- data/app/overrides/api_key_spree_layout.rb +0 -7
- data/app/views/spree/api/_key.html.erb +0 -4
- data/db/migrate/20131017162334_add_index_to_user_spree_api_key.rb +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
OWE5YWU1MDZmMjkwNjViNmI0NWNhYmYxMzRhYzgxNjU2NmJmMzkzYw==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
ODliMjc0ZjAyMDhhZjkyYTUwMGU5MGM1MDMzYjA3Yjk2OGJjNTE1NQ==
|
7
|
+
!binary "U0hBNTEy":
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
MzkzYzE5N2M3MDgyODdhNDcyMzdjMmRmMDkyYzZhZTczYjFhMTZmZjE2NDBm
|
10
|
+
MWQ4NDIzODE3NzBmMDAyZjE4NzQ0NTY4YmU4MzdkNGJkNTAyMWM2YjIzYWEy
|
11
|
+
NmNhYzU0MmE0NzYyNDk2NGZkMjBiZjQwYTQxMGMxYzEyOGNkYjk=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
ZjNhMGJiNzg0ZDIwYzgxMzcxYTkwZDdjMTQwYmU0NDMzYWVhMzNlYzE4NWQx
|
14
|
+
ZGMwODE3ZTA2NTRjMWM0Yjc1NDIzMjNkMTI0ZDEwYWFlNDg2YjA5MjM3NTE0
|
15
|
+
ZDU0MDA1M2IyODVkMGQyNmJmY2YyYWIwNjViMWVkMTA4NWYxNmY=
|
data/Rakefile
CHANGED
@@ -4,7 +4,7 @@ require 'rake/testtask'
|
|
4
4
|
require 'rake/packagetask'
|
5
5
|
require 'rubygems/package_task'
|
6
6
|
require 'rspec/core/rake_task'
|
7
|
-
require 'spree/
|
7
|
+
require 'spree/testing_support/common_rake'
|
8
8
|
require 'rails/all'
|
9
9
|
|
10
10
|
Bundler::GemHelper.install_tasks
|
@@ -1,15 +1,20 @@
|
|
1
|
+
require_dependency 'spree/api/controller_setup'
|
2
|
+
|
1
3
|
module Spree
|
2
4
|
module Api
|
3
5
|
class BaseController < ActionController::Metal
|
4
6
|
include Spree::Api::ControllerSetup
|
7
|
+
include Spree::Core::ControllerHelpers::SSL
|
5
8
|
include ::ActionController::Head
|
6
9
|
|
7
10
|
self.responder = Spree::Api::Responders::AppResponder
|
8
11
|
|
12
|
+
respond_to :json
|
13
|
+
|
9
14
|
attr_accessor :current_api_user
|
10
15
|
|
11
16
|
before_filter :set_content_type
|
12
|
-
before_filter :
|
17
|
+
before_filter :check_for_user_or_api_key, :if => :requires_authentication?
|
13
18
|
before_filter :authenticate_user
|
14
19
|
after_filter :set_jsonp_format
|
15
20
|
|
@@ -49,18 +54,25 @@ module Spree
|
|
49
54
|
headers["Content-Type"] = content_type
|
50
55
|
end
|
51
56
|
|
52
|
-
def
|
53
|
-
|
57
|
+
def check_for_user_or_api_key
|
58
|
+
# User is already authenticated with Spree, make request this way instead.
|
59
|
+
return true if @current_api_user = try_spree_current_user || !Spree::Api::Config[:requires_authentication]
|
60
|
+
|
61
|
+
if api_key.blank?
|
62
|
+
render "spree/api/errors/must_specify_api_key", :status => 401 and return
|
63
|
+
end
|
54
64
|
end
|
55
65
|
|
56
66
|
def authenticate_user
|
57
|
-
|
58
|
-
|
59
|
-
|
67
|
+
unless @current_api_user
|
68
|
+
if requires_authentication? || api_key.present?
|
69
|
+
unless @current_api_user = Spree.user_class.find_by_spree_api_key(api_key.to_s)
|
70
|
+
render "spree/api/errors/invalid_api_key", :status => 401 and return
|
71
|
+
end
|
72
|
+
else
|
73
|
+
# An anonymous user
|
74
|
+
@current_api_user = Spree.user_class.new
|
60
75
|
end
|
61
|
-
else
|
62
|
-
# Effectively, an anonymous user
|
63
|
-
@current_api_user = Spree.user_class.new
|
64
76
|
end
|
65
77
|
end
|
66
78
|
|
@@ -1,17 +1,11 @@
|
|
1
1
|
module Spree
|
2
2
|
module Api
|
3
3
|
class CheckoutsController < Spree::Api::BaseController
|
4
|
-
before_filter :load_order, :only => :update
|
4
|
+
before_filter :load_order, :only => [:update, :next]
|
5
5
|
before_filter :associate_user, :only => :update
|
6
6
|
|
7
|
-
# Spree::Core::ControllerHelpers::Auth overrides
|
8
|
-
# Spree::Api::BaseController's unauthorized method...
|
9
|
-
# Which is not a good thing.
|
10
|
-
# Here's a small hack to shuffle around the method.
|
11
|
-
alias_method :real_unauthorized, :unauthorized
|
12
7
|
include Spree::Core::ControllerHelpers::Auth
|
13
8
|
include Spree::Core::ControllerHelpers::Order
|
14
|
-
alias_method :unauthorized, :real_unauthorized
|
15
9
|
|
16
10
|
respond_to :json
|
17
11
|
|
@@ -21,22 +15,28 @@ module Spree
|
|
21
15
|
end
|
22
16
|
|
23
17
|
def update
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
state_callback(:after)
|
18
|
+
user_id = object_params.delete(:user_id)
|
19
|
+
if @order.update_attributes(object_params)
|
20
|
+
# TODO: Replace with better code when we switch to strong_parameters
|
21
|
+
# Also remove above user_id stripping
|
22
|
+
if current_api_user.has_spree_role?("admin") && user_id.present?
|
23
|
+
@order.associate_user!(Spree.user_class.find(user_id))
|
24
|
+
end
|
25
|
+
return if after_update_attributes
|
26
|
+
state_callback(:after) if @order.next
|
34
27
|
respond_with(@order, :default_template => 'spree/api/orders/show')
|
35
28
|
else
|
36
|
-
|
29
|
+
invalid_resource!(@order)
|
37
30
|
end
|
38
31
|
end
|
39
32
|
|
33
|
+
def next
|
34
|
+
@order.next!
|
35
|
+
respond_with(@order, :default_template => 'spree/api/orders/show', :status => 200)
|
36
|
+
rescue StateMachine::InvalidTransition
|
37
|
+
respond_with(@order, :default_template => 'spree/api/orders/could_not_transition', :status => 422)
|
38
|
+
end
|
39
|
+
|
40
40
|
private
|
41
41
|
|
42
42
|
def object_params
|
@@ -50,7 +50,7 @@ module Spree
|
|
50
50
|
params[:order][:payments_attributes].first[:amount] = @order.total
|
51
51
|
end
|
52
52
|
end
|
53
|
-
params[:order]
|
53
|
+
params[:order] || {}
|
54
54
|
end
|
55
55
|
|
56
56
|
def nested_params
|
@@ -70,6 +70,14 @@ module Spree
|
|
70
70
|
state_callback(:before)
|
71
71
|
end
|
72
72
|
|
73
|
+
def current_currency
|
74
|
+
Spree::Config[:currency]
|
75
|
+
end
|
76
|
+
|
77
|
+
def ip_address
|
78
|
+
''
|
79
|
+
end
|
80
|
+
|
73
81
|
def raise_insufficient_quantity
|
74
82
|
respond_with(@order, :default_template => 'spree/api/orders/insufficient_quantity')
|
75
83
|
end
|
@@ -86,7 +94,7 @@ module Spree
|
|
86
94
|
|
87
95
|
def before_delivery
|
88
96
|
return if params[:order].present?
|
89
|
-
@order.
|
97
|
+
@order.create_proposed_shipments
|
90
98
|
end
|
91
99
|
|
92
100
|
def before_payment
|
@@ -100,6 +108,18 @@ module Spree
|
|
100
108
|
render 'spree/api/orders/could_not_transition', :status => 422
|
101
109
|
end
|
102
110
|
end
|
111
|
+
|
112
|
+
def after_update_attributes
|
113
|
+
if object_params && object_params[:coupon_code].present?
|
114
|
+
coupon_result = Spree::Promo::CouponApplicator.new(@order).apply
|
115
|
+
if !coupon_result[:coupon_applied?]
|
116
|
+
@coupon_message = coupon_result[:error]
|
117
|
+
respond_with(@order, :default_template => 'spree/api/orders/could_not_apply_coupon')
|
118
|
+
return true
|
119
|
+
end
|
120
|
+
end
|
121
|
+
false
|
122
|
+
end
|
103
123
|
end
|
104
124
|
end
|
105
125
|
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module Spree
|
2
|
+
module Api
|
3
|
+
class OptionTypesController < Spree::Api::BaseController
|
4
|
+
def index
|
5
|
+
if params[:ids]
|
6
|
+
@option_types = Spree::OptionType.where(:id => params[:ids].split(','))
|
7
|
+
else
|
8
|
+
@option_types = Spree::OptionType.scoped.ransack(params[:q]).result
|
9
|
+
end
|
10
|
+
respond_with(@option_types)
|
11
|
+
end
|
12
|
+
|
13
|
+
def show
|
14
|
+
@option_type = Spree::OptionType.find(params[:id])
|
15
|
+
respond_with(@option_type)
|
16
|
+
end
|
17
|
+
|
18
|
+
def create
|
19
|
+
authorize! :create, Spree::OptionType
|
20
|
+
@option_type = Spree::OptionType.new(params[:option_type])
|
21
|
+
if @option_type.save
|
22
|
+
render :show, :status => 201
|
23
|
+
else
|
24
|
+
invalid_resource!(@option_type)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def update
|
29
|
+
authorize! :update, Spree::OptionType
|
30
|
+
@option_type = Spree::OptionType.find(params[:id])
|
31
|
+
if @option_type.update_attributes(params[:option_type])
|
32
|
+
render :show
|
33
|
+
else
|
34
|
+
invalid_resource!(@option_type)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def destroy
|
39
|
+
authorize! :destroy, Spree::OptionType
|
40
|
+
@option_type = Spree::OptionType.find(params[:id])
|
41
|
+
@option_type.destroy
|
42
|
+
render :text => nil, :status => 204
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
module Spree
|
2
|
+
module Api
|
3
|
+
class OptionValuesController < Spree::Api::BaseController
|
4
|
+
def index
|
5
|
+
if params[:ids]
|
6
|
+
@option_values = scope.where(:id => params[:ids])
|
7
|
+
else
|
8
|
+
@option_values = scope.ransack(params[:q]).result
|
9
|
+
end
|
10
|
+
respond_with(@option_values)
|
11
|
+
end
|
12
|
+
|
13
|
+
def show
|
14
|
+
@option_value = scope.find(params[:id])
|
15
|
+
respond_with(@option_value)
|
16
|
+
end
|
17
|
+
|
18
|
+
def create
|
19
|
+
authorize! :create, Spree::OptionValue
|
20
|
+
@option_value = scope.new(params[:option_value])
|
21
|
+
if @option_value.save
|
22
|
+
render :show, :status => 201
|
23
|
+
else
|
24
|
+
invalid_resource!(@option_value)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def update
|
29
|
+
authorize! :update, Spree::OptionValue
|
30
|
+
@option_value = scope.find(params[:id])
|
31
|
+
if @option_value.update_attributes(params[:option_value])
|
32
|
+
render :show
|
33
|
+
else
|
34
|
+
invalid_resource!(@option_value)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def destroy
|
39
|
+
authorize! :destroy, Spree::OptionValue
|
40
|
+
@option_value = scope.find(params[:id])
|
41
|
+
@option_value.destroy
|
42
|
+
render :text => nil, :status => 204
|
43
|
+
end
|
44
|
+
|
45
|
+
private
|
46
|
+
|
47
|
+
def scope
|
48
|
+
if params[:option_type_id]
|
49
|
+
@scope ||= Spree::OptionType.find(params[:option_type_id]).option_values
|
50
|
+
else
|
51
|
+
@scope ||= Spree::OptionValue.scoped
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -17,17 +17,12 @@ module Spree
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def create
|
20
|
-
nested_params[:line_items_attributes] = sanitize_line_items(nested_params[:line_items_attributes])
|
21
20
|
@order = Order.build_from_api(current_api_user, nested_params)
|
22
21
|
respond_with(order, :default_template => :show, :status => 201)
|
23
22
|
end
|
24
23
|
|
25
24
|
def update
|
26
25
|
authorize! :update, Order
|
27
|
-
# Parsing line items through as an update_attributes call in the API will result in
|
28
|
-
# many line items for the same variant_id being created. We must be smarter about this,
|
29
|
-
# hence the use of the update_line_items method, defined within order_decorator.rb.
|
30
|
-
nested_params[:line_items_attributes] = sanitize_line_items(nested_params[:line_items_attributes])
|
31
26
|
if order.update_attributes(nested_params)
|
32
27
|
order.update!
|
33
28
|
respond_with(order, :default_template => :show)
|
@@ -50,22 +45,7 @@ module Spree
|
|
50
45
|
private
|
51
46
|
|
52
47
|
def nested_params
|
53
|
-
|
54
|
-
end
|
55
|
-
|
56
|
-
def sanitize_line_items(line_item_attributes)
|
57
|
-
return {} if line_item_attributes.blank?
|
58
|
-
line_item_attributes = line_item_attributes.map do |id, attributes|
|
59
|
-
attributes ||= id
|
60
|
-
|
61
|
-
# Faux Strong-Parameters code to strip price if user isn't an admin
|
62
|
-
if current_api_user.has_spree_role?("admin")
|
63
|
-
[id, attributes.slice(*Spree::LineItem.attr_accessible[:api])]
|
64
|
-
else
|
65
|
-
[id, attributes.slice(*Spree::LineItem.attr_accessible[:default])]
|
66
|
-
end
|
67
|
-
end
|
68
|
-
line_item_attributes = Hash[line_item_attributes].delete_if { |k,v| v.empty? }
|
48
|
+
map_nested_attributes_keys Order, params[:order] || {}
|
69
49
|
end
|
70
50
|
|
71
51
|
def order
|
@@ -4,7 +4,14 @@ module Spree
|
|
4
4
|
respond_to :json
|
5
5
|
|
6
6
|
def index
|
7
|
-
|
7
|
+
if params[:ids]
|
8
|
+
@products = product_scope.where(:id => params[:ids])
|
9
|
+
else
|
10
|
+
@products = product_scope.ransack(params[:q]).result
|
11
|
+
end
|
12
|
+
|
13
|
+
@products = @products.page(params[:page]).per(params[:per_page])
|
14
|
+
|
8
15
|
respond_with(@products)
|
9
16
|
end
|
10
17
|
|
@@ -19,33 +26,11 @@ module Spree
|
|
19
26
|
def create
|
20
27
|
authorize! :create, Product
|
21
28
|
params[:product][:available_on] ||= Time.now
|
22
|
-
|
23
|
-
variants_attributes = params[:product].delete(:variants_attributes) || []
|
24
|
-
option_type_attributes = params[:product].delete(:option_types) || []
|
25
|
-
|
26
29
|
@product = Product.new(params[:product])
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
variant.update_attributes(variant_attribute)
|
32
|
-
end
|
33
|
-
|
34
|
-
option_type_attributes.each do |name|
|
35
|
-
option_type = OptionType.where(name: name).first_or_initialize do |option_type|
|
36
|
-
option_type.presentation = name
|
37
|
-
option_type.save!
|
38
|
-
end
|
39
|
-
|
40
|
-
@product.option_types << option_type unless @product.option_types.include?(option_type)
|
41
|
-
end
|
42
|
-
|
43
|
-
respond_with(@product, :status => 201, :default_template => :show)
|
44
|
-
else
|
45
|
-
invalid_resource!(@product)
|
46
|
-
end
|
47
|
-
rescue ActiveRecord::RecordNotUnique
|
48
|
-
retry
|
30
|
+
if @product.save
|
31
|
+
respond_with(@product, :status => 201, :default_template => :show)
|
32
|
+
else
|
33
|
+
invalid_resource!(@product)
|
49
34
|
end
|
50
35
|
end
|
51
36
|
|
@@ -0,0 +1,61 @@
|
|
1
|
+
module Spree
|
2
|
+
module Api
|
3
|
+
class PropertiesController < Spree::Api::BaseController
|
4
|
+
respond_to :json
|
5
|
+
|
6
|
+
before_filter :find_property, :only => [:show, :update, :destroy]
|
7
|
+
|
8
|
+
def index
|
9
|
+
@properties = Spree::Property.
|
10
|
+
ransack(params[:q]).result.
|
11
|
+
page(params[:page]).per(params[:per_page])
|
12
|
+
respond_with(@properties)
|
13
|
+
end
|
14
|
+
|
15
|
+
def show
|
16
|
+
respond_with(@property)
|
17
|
+
end
|
18
|
+
|
19
|
+
def new
|
20
|
+
end
|
21
|
+
|
22
|
+
def create
|
23
|
+
authorize! :create, Property
|
24
|
+
@property = Spree::Property.new(params[:property])
|
25
|
+
if @property.save
|
26
|
+
respond_with(@property, :status => 201, :default_template => :show)
|
27
|
+
else
|
28
|
+
invalid_resource!(@property)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def update
|
33
|
+
authorize! :update, Property
|
34
|
+
if @property && @property.update_attributes(params[:property])
|
35
|
+
respond_with(@property, :status => 200, :default_template => :show)
|
36
|
+
else
|
37
|
+
invalid_resource!(@property)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def destroy
|
42
|
+
authorize! :delete, Property
|
43
|
+
if(@property)
|
44
|
+
@property.destroy
|
45
|
+
respond_with(@property, :status => 204)
|
46
|
+
else
|
47
|
+
invalid_resource!(@property)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
private
|
52
|
+
|
53
|
+
def find_property
|
54
|
+
@property = Spree::Property.find(params[:id])
|
55
|
+
rescue ActiveRecord::RecordNotFound
|
56
|
+
@property = Spree::Property.find_by_name!(params[:id])
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|