spree_core 3.0.0.rc1 → 3.0.0.rc3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 599174c8bcc4c415e7a65af40048eeff77e07147
4
- data.tar.gz: f0b4346703e8ff979bc55c7ba86204e5878d163c
3
+ metadata.gz: 8039d6ead846bc4fa735aa26d8388a62d5c86a3c
4
+ data.tar.gz: 5ee17fff4d41214804b660bbf57f528d8f65855a
5
5
  SHA512:
6
- metadata.gz: a20e56fe585721fd0daea6ae733b0cadcd53273e9f44aaf0e783e62b11bf1bf8d2dc1c00e06e5cc6d2de55099e54b1ed62f6162e402039946f00c547a75e8334
7
- data.tar.gz: 0547cb6578f56c46bbbe61fdb6a920e74cca7e79b5fbcca9d8dfab376b5ae97a827571a3ba9a4737ac99dd6765797f69f4538604af0c9009b33493a7a371e7ce
6
+ metadata.gz: 8ed7452b11a0af1096c325d9f63eaf74bc928e82acce258d3fa5e46d5a9cc3b0d3a5a5251bb84ebb1e7732f1ea4038ed06dee1c0f83476e0055df4f69bec9f7d
7
+ data.tar.gz: 6d904ef3437a05af9bbe5355a566f9659c5828ccf19d57e0a1ef0be9829085d47e4129ab8b908fa688fcc2258049168fe021dd253e2f0313b9907b04e55dade8
@@ -4,11 +4,11 @@ module Spree
4
4
  money_methods :lifetime_value, :average_order_value
5
5
 
6
6
  def lifetime_value
7
- spree_orders.complete.pluck(:total).sum
7
+ orders.complete.pluck(:total).sum
8
8
  end
9
9
 
10
10
  def order_count
11
- BigDecimal(spree_orders.complete.count)
11
+ BigDecimal(orders.complete.count)
12
12
  end
13
13
 
14
14
  def average_order_value
@@ -32,7 +32,7 @@ module Spree
32
32
  alias_action :new_action, to: :create
33
33
  alias_action :show, to: :read
34
34
  alias_action :index, :read, to: :display
35
-
35
+ alias_action :create, :update, :destroy, to: :modify
36
36
 
37
37
  user ||= Spree.user_class.new
38
38
 
@@ -64,6 +64,9 @@ module Spree
64
64
  ability = clazz.send(:new, user)
65
65
  @rules = rules + ability.send(:rules)
66
66
  end
67
+
68
+ # Protect admin and user roles
69
+ cannot [:update, :destroy], Role, name: ['admin']
67
70
  end
68
71
  end
69
72
  end
@@ -30,7 +30,7 @@ module Spree
30
30
  add(promotions, promotion, source.promotion_id)
31
31
  end
32
32
 
33
- def promotions_adjustments(promotion_id, adjustments = adjustments)
33
+ def promotions_adjustments(promotion_id, adjustments = adjustments())
34
34
  where(sources, promotion_id: promotion_id).map do |source|
35
35
  where(adjustments, source_id: source.id)
36
36
  end.flatten
@@ -29,7 +29,7 @@ module Spree
29
29
  before_transition to: :canceled, do: :cancel_return_items
30
30
 
31
31
  event :cancel do
32
- transition to: :canceled, from: :authorized
32
+ transition to: :canceled, from: :authorized, if: lambda { |return_authorization| return_authorization.can_cancel_return_items? }
33
33
  end
34
34
 
35
35
  end
@@ -53,6 +53,10 @@ module Spree
53
53
  customer_returns.exists?
54
54
  end
55
55
 
56
+ def can_cancel_return_items?
57
+ return_items.any?(&:can_cancel?) || return_items.blank?
58
+ end
59
+
56
60
  private
57
61
 
58
62
  def must_have_shipped_units
@@ -69,7 +73,7 @@ module Spree
69
73
  end
70
74
 
71
75
  def cancel_return_items
72
- return_items.each(&:cancel!)
76
+ return_items.each { |item| item.cancel! if item.can_cancel? }
73
77
  end
74
78
 
75
79
  def generate_expedited_exchange_reimbursements
@@ -121,7 +121,7 @@ module Spree
121
121
  end
122
122
 
123
123
  def total
124
- pre_tax_amount + additional_tax_total
124
+ pre_tax_amount + included_tax_total + additional_tax_total
125
125
  end
126
126
 
127
127
  def eligible_exchange_variants
@@ -1,5 +1,7 @@
1
1
  module Spree
2
2
  class Role < Spree::Base
3
3
  has_and_belongs_to_many :users, join_table: 'spree_roles_users', class_name: Spree.user_class.to_s
4
+
5
+ validates :name, presence: true
4
6
  end
5
7
  end
@@ -41,21 +41,15 @@ module Spree
41
41
  end
42
42
 
43
43
  # Attempts to look up StockItem for the variant, and creates one if not found.
44
- # This method accepts an id or instance of the variant since it is used in
45
- # multiple ways. Other methods in this model attempt to pass a variant,
44
+ # This method accepts an instance of the variant.
45
+ # Other methods in this model attempt to pass a variant,
46
46
  # but controller actions can pass just the variant id as a parameter.
47
47
  #
48
- # @param variant_or_id [Variant|String] Variant instance or string id of a variant.
48
+ # @param variant [Variant] Variant instance.
49
49
  #
50
50
  # @return [StockItem] Corresponding StockItem for the StockLocation's variant.
51
- def stock_item_or_create(variant_or_id)
52
- vid = if variant_or_id.is_a?(Variant)
53
- variant_or_id.id
54
- else
55
- ActiveSupport::Deprecation.warn "Passing a Variant ID is deprecated, and will be removed in Spree 3. Please pass a variant instance instead.", caller
56
- variant_or_id
57
- end
58
- stock_item(vid) || stock_items.create(variant_id: vid)
51
+ def stock_item_or_create(variant)
52
+ stock_item(variant) || stock_items.create(variant_id: variant.id)
59
53
  end
60
54
 
61
55
  def count_on_hand(variant)
@@ -1,11 +1,13 @@
1
1
  module Spree
2
2
  class Store < Spree::Base
3
+ has_many :orders, class_name: "Spree::Order"
4
+
3
5
  validates :code, presence: true, uniqueness: { allow_blank: true }
4
6
  validates :name, presence: true
5
7
  validates :url, presence: true
6
8
  validates :mail_from_address, presence: true
7
9
 
8
- before_create :ensure_default_exists_and_is_unique
10
+ before_save :ensure_default_exists_and_is_unique
9
11
  before_destroy :validate_not_default
10
12
 
11
13
  scope :by_url, lambda { |url| where("url like ?", "%#{url}%") }
@@ -23,7 +25,7 @@ module Spree
23
25
 
24
26
  def ensure_default_exists_and_is_unique
25
27
  if default
26
- Store.update_all(default: false)
28
+ Store.where.not(id: id).update_all(default: false)
27
29
  elsif Store.where(default: true).count == 0
28
30
  self.default = true
29
31
  end
@@ -1,5 +1,7 @@
1
1
  module Spree
2
2
  class Taxonomy < Spree::Base
3
+ acts_as_list
4
+
3
5
  validates :name, presence: true
4
6
 
5
7
  has_many :taxons, inverse_of: :taxonomy
@@ -89,6 +89,10 @@ module Spree
89
89
  is_master? ? name : options_text
90
90
  end
91
91
 
92
+ def descriptive_name
93
+ is_master? ? name + ' - Master' : name + ' - ' + options_text
94
+ end
95
+
92
96
  # use deleted? rather than checking the attribute directly. this
93
97
  # allows extensions to override deleted? if they want to provide
94
98
  # their own definition.
@@ -10,7 +10,7 @@ Spree::Core::Engine.config.to_prepare do
10
10
  foreign_key: "user_id",
11
11
  class_name: "Spree::Role"
12
12
 
13
- has_many :spree_orders, foreign_key: "user_id", class_name: "Spree::Order"
13
+ has_many :orders, foreign_key: :user_id, class_name: "Spree::Order"
14
14
 
15
15
  belongs_to :ship_address, class_name: 'Spree::Address'
16
16
  belongs_to :bill_address, class_name: 'Spree::Address'
@@ -21,7 +21,7 @@ Spree::Core::Engine.config.to_prepare do
21
21
  end
22
22
 
23
23
  def last_incomplete_spree_order
24
- spree_orders.incomplete.order('created_at DESC').first
24
+ orders.incomplete.order('created_at DESC').first
25
25
  end
26
26
  end
27
27
  end
@@ -404,6 +404,7 @@ en:
404
404
  add_to_cart: Add To Cart
405
405
  add_variant: Add Variant
406
406
  additional_item: Additional Item
407
+ address: Address
407
408
  address1: Address
408
409
  address2: Address (contd.)
409
410
  adjustable: Adjustable
@@ -605,6 +606,7 @@ en:
605
606
  default_tax: Default Tax
606
607
  default_tax_zone: Default Tax Zone
607
608
  delete: Delete
609
+ delete_from_taxon: Delete From Taxon
608
610
  deleted_variants_present: Some line items in this order have products that are no longer available.
609
611
  delivery: Delivery
610
612
  depth: Depth
@@ -825,6 +827,7 @@ en:
825
827
  new_refund_reason: New Refund Reason
826
828
  new_rma_reason: New RMA Reason
827
829
  new_return_authorization: New Return Authorization
830
+ new_role: New Role
828
831
  new_shipping_category: New Shipping Category
829
832
  new_shipping_method: New Shipping Method
830
833
  new_shipment_at_location: New shipment at location
@@ -1013,6 +1016,7 @@ en:
1013
1016
  description: Makes all shipments for the order free
1014
1017
  name: Free shipping
1015
1018
  promotion_actions: Actions
1019
+ promotion_category: Promotion Category
1016
1020
  promotion_form:
1017
1021
  match_policies:
1018
1022
  all: Match all of these rules
@@ -1130,6 +1134,7 @@ en:
1130
1134
  rma_credit: RMA Credit
1131
1135
  rma_number: RMA Number
1132
1136
  rma_value: RMA Value
1137
+ role_id: Role ID
1133
1138
  roles: Roles
1134
1139
  rules: Rules
1135
1140
  safe: Safe
@@ -0,0 +1,13 @@
1
+ class AddIndexToSpreeStockItemsVariantId < ActiveRecord::Migration
2
+ def up
3
+ unless index_exists? :spree_stock_items, :variant_id
4
+ add_index :spree_stock_items, :variant_id
5
+ end
6
+ end
7
+
8
+ def down
9
+ if index_exists? :spree_stock_items, :variant_id
10
+ remove_index :spree_stock_items, :variant_id
11
+ end
12
+ end
13
+ end
@@ -27,7 +27,7 @@ production:
27
27
  database: <%= database_prefix %><%= options[:lib_name] %>_spree_production
28
28
  encoding: utf8
29
29
  <% when 'postgres' %>
30
- <% db_host = ENV['DB_HOST'] -%>
30
+ <% db_host = ENV['DB_HOST'] %>
31
31
  development:
32
32
  adapter: postgresql
33
33
  database: <%= database_prefix %><%= options[:lib_name] %>_spree_development
@@ -97,21 +97,71 @@ module Spree
97
97
  end
98
98
  end
99
99
 
100
- def self.create_line_items_from_params(line_items_hash, order)
101
- return {} unless line_items_hash
102
- line_items_hash.each_key do |k|
103
- begin
104
- extra_params = line_items_hash[k].except(:variant_id, :quantity, :sku)
105
- line_item = ensure_variant_id_from_params(line_items_hash[k])
106
- line_item = order.contents.add(Spree::Variant.find(line_item[:variant_id]), line_item[:quantity])
107
- # Raise any errors with saving to prevent import succeeding with line items failing silently.
108
- if extra_params.present?
109
- line_item.update_attributes!(extra_params)
110
- else
111
- line_item.save!
100
+ def self.create_line_items_from_params(line_items, order)
101
+ return {} unless line_items
102
+ case line_items
103
+ when Hash
104
+ ActiveSupport::Deprecation.warn(<<-EOS, caller)
105
+ Passing a hash is now deprecated and will be removed in Spree 3.1.
106
+ It is recommended that you pass it as an array instead.
107
+
108
+ New Syntax:
109
+
110
+ {
111
+ "order": {
112
+ "line_items": [
113
+ { "variant_id": 123, "quantity": 1 },
114
+ { "variant_id": 456, "quantity": 1 }
115
+ ]
116
+ }
117
+ }
118
+
119
+ Old Syntax:
120
+
121
+ {
122
+ "order": {
123
+ "line_items": {
124
+ "1": { "variant_id": 123, "quantity": 1 },
125
+ "2": { "variant_id": 123, "quantity": 1 }
126
+ }
127
+ }
128
+ }
129
+ EOS
130
+
131
+ line_items.each_key do |k|
132
+ begin
133
+ extra_params = line_items[k].except(:variant_id, :quantity, :sku)
134
+ line_item = ensure_variant_id_from_params(line_items[k])
135
+ variant = Spree::Variant.find(line_item[:variant_id])
136
+ line_item = order.contents.add(variant, line_item[:quantity])
137
+ # Raise any errors with saving to prevent import succeeding with line items
138
+ # failing silently.
139
+ if extra_params.present?
140
+ line_item.update_attributes!(extra_params)
141
+ else
142
+ line_item.save!
143
+ end
144
+ rescue Exception => e
145
+ raise "Order import line items: #{e.message} #{line_item}"
146
+ end
147
+ end
148
+ when Array
149
+ line_items.each do |line_item|
150
+ begin
151
+ extra_params = line_item.except(:variant_id, :quantity, :sku)
152
+ line_item = ensure_variant_id_from_params(line_item)
153
+ variant = Spree::Variant.find(line_item[:variant_id])
154
+ line_item = order.contents.add(variant, line_item[:quantity])
155
+ # Raise any errors with saving to prevent import succeeding with line items
156
+ # failing silently.
157
+ if extra_params.present?
158
+ line_item.update_attributes!(extra_params)
159
+ else
160
+ line_item.save!
161
+ end
162
+ rescue Exception => e
163
+ raise "Order import line items: #{e.message} #{line_item}"
112
164
  end
113
- rescue Exception => e
114
- raise "Order import line items: #{e.message} #{line_item}"
115
165
  end
116
166
  end
117
167
  end
@@ -1,5 +1,5 @@
1
1
  module Spree
2
2
  def self.version
3
- "3.0.0.rc1"
3
+ "3.0.0.rc3"
4
4
  end
5
5
  end
@@ -26,6 +26,12 @@
26
26
  module Spree
27
27
  module TestingSupport
28
28
  module ControllerRequests
29
+ extend ActiveSupport::Concern
30
+
31
+ included do
32
+ routes { Spree::Core::Engine.routes }
33
+ end
34
+
29
35
  def spree_get(action, parameters = nil, session = nil, flash = nil)
30
36
  process_spree_action(action, parameters, session, flash, "GET")
31
37
  end
@@ -65,13 +71,12 @@ module Spree
65
71
 
66
72
  def process_spree_action(action, parameters = nil, session = nil, flash = nil, method = "GET")
67
73
  parameters ||= {}
68
- process(action, method, parameters.merge!(:use_route => :spree), session, flash)
74
+ process(action, method, parameters, session, flash)
69
75
  end
70
76
 
71
77
  def process_spree_xhr_action(action, parameters = nil, session = nil, flash = nil, method = :get)
72
78
  parameters ||= {}
73
79
  parameters.reverse_merge!(:format => :json)
74
- parameters.merge!(:use_route => :spree)
75
80
  xml_http_request(method, action, parameters, session, flash)
76
81
  end
77
82
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spree_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0.rc1
4
+ version: 3.0.0.rc3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean Schofield
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-04 00:00:00.000000000 Z
11
+ date: 2015-02-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemerchant
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.44.1
19
+ version: 1.46.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 1.44.1
26
+ version: 1.46.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: acts_as_list
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 1.9.2
75
+ version: 1.10.1
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 1.9.2
82
+ version: 1.10.1
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: deface
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -128,14 +128,14 @@ dependencies:
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: 5.0.4
131
+ version: 5.1.0
132
132
  type: :runtime
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: 5.0.4
138
+ version: 5.1.0
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: highline
141
141
  requirement: !ruby/object:Gem::Requirement
@@ -774,6 +774,7 @@ files:
774
774
  - db/migrate/20150122202432_add_code_to_spree_promotion_categories.rb
775
775
  - db/migrate/20150128032538_remove_environment_from_tracker.rb
776
776
  - db/migrate/20150128060325_remove_spree_configurations.rb
777
+ - db/migrate/20150216173445_add_index_to_spree_stock_items_variant_id.rb
777
778
  - db/seeds.rb
778
779
  - lib/generators/spree/custom_user/custom_user_generator.rb
779
780
  - lib/generators/spree/custom_user/templates/authentication_helpers.rb.tt