spree_core 2.2.14 → 2.3.0

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.
Files changed (172) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/{spree.js.coffee → spree.js.coffee.erb} +11 -2
  3. data/app/controllers/spree/base_controller.rb +1 -0
  4. data/app/helpers/spree/base_helper.rb +5 -6
  5. data/app/helpers/spree/orders_helper.rb +4 -0
  6. data/app/helpers/spree/products_helper.rb +8 -7
  7. data/app/mailers/spree/base_mailer.rb +2 -2
  8. data/app/mailers/spree/order_mailer.rb +2 -2
  9. data/app/mailers/spree/shipment_mailer.rb +1 -1
  10. data/app/mailers/spree/test_mailer.rb +1 -1
  11. data/app/models/spree/ability.rb +15 -16
  12. data/app/models/spree/address.rb +3 -6
  13. data/app/models/spree/adjustment.rb +2 -2
  14. data/app/models/spree/alert.rb +1 -1
  15. data/app/models/spree/app_configuration.rb +17 -20
  16. data/app/models/spree/asset.rb +2 -2
  17. data/app/models/spree/base.rb +9 -0
  18. data/app/models/spree/calculator.rb +1 -1
  19. data/app/models/spree/calculator/flat_rate.rb +1 -1
  20. data/app/models/spree/calculator/flexi_rate.rb +1 -1
  21. data/app/models/spree/calculator/price_sack.rb +1 -3
  22. data/app/models/spree/calculator/shipping/flat_rate.rb +1 -1
  23. data/app/models/spree/calculator/shipping/flexi_rate.rb +1 -1
  24. data/app/models/spree/calculator/shipping/per_item.rb +1 -1
  25. data/app/models/spree/calculator/shipping/price_sack.rb +1 -3
  26. data/app/models/spree/classification.rb +1 -1
  27. data/app/models/spree/configuration.rb +1 -1
  28. data/app/models/spree/country.rb +1 -1
  29. data/app/models/spree/credit_card.rb +8 -12
  30. data/app/models/spree/gateway.rb +0 -3
  31. data/app/models/spree/gateway/bogus.rb +2 -3
  32. data/app/models/spree/image.rb +3 -1
  33. data/app/models/spree/inventory_unit.rb +5 -6
  34. data/app/models/spree/item_adjustments.rb +3 -4
  35. data/app/models/spree/legacy_user.rb +1 -1
  36. data/app/models/spree/line_item.rb +6 -13
  37. data/app/models/spree/log_entry.rb +1 -1
  38. data/app/models/spree/option_type.rb +1 -1
  39. data/app/models/spree/option_value.rb +1 -3
  40. data/app/models/spree/order.rb +52 -70
  41. data/app/models/spree/order/checkout.rb +17 -10
  42. data/app/models/spree/order/currency_updater.rb +1 -1
  43. data/app/models/spree/order_contents.rb +7 -4
  44. data/app/models/spree/order_populator.rb +1 -1
  45. data/app/models/spree/order_updater.rb +8 -21
  46. data/app/models/spree/payment.rb +26 -12
  47. data/app/models/spree/payment/processing.rb +5 -16
  48. data/app/models/spree/payment_capture_event.rb +1 -1
  49. data/app/models/spree/payment_method.rb +2 -2
  50. data/app/models/spree/payment_method/check.rb +0 -2
  51. data/app/models/spree/preference.rb +1 -31
  52. data/app/models/spree/preferences/configuration.rb +2 -6
  53. data/app/models/spree/preferences/preferable.rb +46 -74
  54. data/app/models/spree/preferences/preferable_class_methods.rb +11 -46
  55. data/app/models/spree/preferences/scoped_store.rb +33 -0
  56. data/app/models/spree/preferences/store.rb +8 -7
  57. data/app/models/spree/price.rb +1 -3
  58. data/app/models/spree/product.rb +59 -87
  59. data/app/models/spree/product/scopes.rb +22 -13
  60. data/app/models/spree/product_option_type.rb +1 -1
  61. data/app/models/spree/product_property.rb +1 -3
  62. data/app/models/spree/product_scope/scopes.rb +1 -1
  63. data/app/models/spree/promotion.rb +4 -5
  64. data/app/models/spree/promotion/actions/create_adjustment.rb +11 -2
  65. data/app/models/spree/promotion/actions/create_item_adjustments.rb +19 -2
  66. data/app/models/spree/promotion/actions/create_line_items.rb +2 -12
  67. data/app/models/spree/promotion/rules/user.rb +5 -1
  68. data/app/models/spree/promotion_action.rb +1 -1
  69. data/app/models/spree/promotion_action_line_item.rb +1 -1
  70. data/app/models/spree/promotion_handler/cart.rb +2 -14
  71. data/app/models/spree/promotion_handler/coupon.rb +3 -13
  72. data/app/models/spree/promotion_rule.rb +1 -1
  73. data/app/models/spree/property.rb +1 -3
  74. data/app/models/spree/prototype.rb +1 -1
  75. data/app/models/spree/return_authorization.rb +4 -10
  76. data/app/models/spree/role.rb +1 -1
  77. data/app/models/spree/shipment.rb +1 -9
  78. data/app/models/spree/shipping_category.rb +3 -3
  79. data/app/models/spree/shipping_method.rb +1 -1
  80. data/app/models/spree/shipping_method_category.rb +2 -2
  81. data/app/models/spree/shipping_rate.rb +3 -3
  82. data/app/models/spree/state.rb +1 -1
  83. data/app/models/spree/state_change.rb +1 -1
  84. data/app/models/spree/stock/availability_validator.rb +7 -3
  85. data/app/models/spree/stock/package.rb +0 -23
  86. data/app/models/spree/stock/splitter/backordered.rb +1 -1
  87. data/app/models/spree/stock/splitter/shipping_category.rb +1 -1
  88. data/app/models/spree/stock/splitter/weight.rb +1 -1
  89. data/app/models/spree/stock_item.rb +7 -10
  90. data/app/models/spree/stock_location.rb +2 -6
  91. data/app/models/spree/stock_movement.rb +1 -3
  92. data/app/models/spree/stock_transfer.rb +1 -3
  93. data/app/models/spree/store.rb +33 -0
  94. data/app/models/spree/tax_category.rb +2 -2
  95. data/app/models/spree/tax_rate.rb +21 -52
  96. data/app/models/spree/taxon.rb +9 -8
  97. data/app/models/spree/taxonomy.rb +1 -1
  98. data/app/models/spree/tracker.rb +1 -1
  99. data/app/models/spree/variant.rb +13 -15
  100. data/app/models/spree/variant/scopes.rb +1 -1
  101. data/app/models/spree/zone.rb +22 -22
  102. data/app/models/spree/zone_member.rb +2 -2
  103. data/config/initializers/user_class_extensions.rb +0 -8
  104. data/config/locales/en.yml +7 -42
  105. data/db/default/spree/countries.rb +2 -3
  106. data/db/default/spree/stores.rb +9 -0
  107. data/db/migrate/20130611054351_rename_shipping_methods_zones_to_spree_shipping_methods_zones.rb +0 -5
  108. data/db/migrate/20130807024301_upgrade_adjustments.rb +4 -5
  109. data/db/migrate/20130807024302_rename_adjustment_fields.rb +5 -2
  110. data/db/migrate/20131118183431_add_line_item_id_to_spree_inventory_units.rb +1 -1
  111. data/db/migrate/20140106065820_remove_value_type_from_spree_preferences.rb +8 -0
  112. data/db/migrate/20140227112348_add_preference_store_to_everything.rb +8 -0
  113. data/db/migrate/20140309023735_migrate_old_preferences.rb +23 -0
  114. data/db/migrate/20140309024355_create_spree_stores.rb +25 -0
  115. data/db/migrate/20140309033438_create_store_from_preferences.rb +30 -0
  116. data/db/migrate/20140315053743_add_timestamps_to_spree_assets.rb +6 -0
  117. data/db/migrate/20140331100557_add_additional_store_fields.rb +8 -0
  118. data/db/migrate/20140410141842_add_many_missing_indexes.rb +18 -0
  119. data/db/migrate/20140410150358_correct_some_polymorphic_index_and_add_more_missing.rb +66 -0
  120. data/db/migrate/20140508151342_change_spree_price_amount_precision.rb +1 -1
  121. data/db/migrate/20140518174634_add_token_to_spree_orders.rb +5 -0
  122. data/db/migrate/20140530024945_move_order_token_from_tokenized_permission.rb +29 -0
  123. data/db/migrate/20140601011216_set_shipment_total_for_users_upgrading.rb +5 -3
  124. data/db/migrate/20140604135309_drop_credit_card_first_name_and_last_name.rb +6 -0
  125. data/lib/generators/spree/dummy/dummy_generator.rb +1 -0
  126. data/lib/generators/spree/dummy/templates/initializers/devise.rb +3 -0
  127. data/lib/generators/spree/dummy/templates/rails/routes.rb +0 -1
  128. data/lib/generators/spree/install/install_generator.rb +8 -17
  129. data/lib/generators/spree/install/templates/config/initializers/spree.rb +2 -2
  130. data/lib/spree/core.rb +13 -9
  131. data/lib/spree/core/calculated_adjustments.rb +1 -1
  132. data/lib/spree/core/controller_helpers/auth.rb +27 -18
  133. data/lib/spree/core/controller_helpers/common.rb +2 -2
  134. data/lib/spree/core/controller_helpers/order.rb +15 -24
  135. data/lib/spree/core/controller_helpers/store.rb +19 -0
  136. data/lib/spree/core/delegate_belongs_to.rb +2 -2
  137. data/lib/spree/core/engine.rb +0 -10
  138. data/lib/spree/core/importer.rb +1 -0
  139. data/lib/spree/core/importer/order.rb +16 -44
  140. data/lib/spree/core/importer/product.rb +62 -0
  141. data/lib/spree/core/product_filters.rb +0 -4
  142. data/lib/spree/core/routes.rb +4 -6
  143. data/lib/spree/core/validators/email.rb +23 -1
  144. data/lib/spree/core/version.rb +1 -1
  145. data/lib/spree/money.rb +1 -169
  146. data/lib/spree/permitted_attributes.rb +6 -4
  147. data/lib/spree/testing_support/authorization_helpers.rb +23 -21
  148. data/lib/spree/testing_support/capybara_ext.rb +11 -21
  149. data/lib/spree/testing_support/common_rake.rb +3 -1
  150. data/lib/spree/testing_support/controller_requests.rb +0 -2
  151. data/lib/spree/testing_support/factories/credit_card_factory.rb +1 -1
  152. data/lib/spree/testing_support/factories/line_item_factory.rb +4 -1
  153. data/lib/spree/testing_support/factories/order_factory.rb +5 -4
  154. data/lib/spree/testing_support/factories/product_factory.rb +0 -4
  155. data/lib/spree/testing_support/factories/promotion_factory.rb +5 -7
  156. data/lib/spree/testing_support/factories/shipment_factory.rb +0 -1
  157. data/lib/spree/testing_support/factories/stock_factory.rb +2 -2
  158. data/lib/spree/testing_support/factories/store_factory.rb +8 -0
  159. data/lib/spree/testing_support/preferences.rb +3 -3
  160. data/lib/tasks/core.rake +2 -2
  161. metadata +48 -39
  162. data/app/models/spree/stock/order_counter.rb +0 -55
  163. data/app/models/spree/tokenized_permission.rb +0 -6
  164. data/app/views/spree/shared/_routes.html.erb +0 -13
  165. data/db/migrate/20140804185157_add_default_to_shipment_cost.rb +0 -10
  166. data/db/migrate/20141021194502_add_state_lock_version_to_order.rb +0 -5
  167. data/lib/spree/core/adjustment_source.rb +0 -26
  168. data/lib/spree/core/mail_interceptor.rb +0 -22
  169. data/lib/spree/core/mail_method.rb +0 -27
  170. data/lib/spree/core/mail_settings.rb +0 -55
  171. data/lib/spree/core/ransackable_attributes.rb +0 -15
  172. data/lib/spree/core/token_resource.rb +0 -27
@@ -1,55 +0,0 @@
1
- module Spree
2
- module Stock
3
- class OrderCounter
4
- attr_reader :order
5
-
6
- def initialize(order)
7
- @order = order
8
- @ordered_counts = count_line_items
9
- @assigned_counts = count_inventory_units
10
- end
11
-
12
- def variants
13
- @ordered_counts.keys
14
- end
15
-
16
- def variants_with_remaining
17
- variants.select { |variant| remaining(variant) > 0 }
18
- end
19
-
20
- def remaining?
21
- not variants_with_remaining.empty?
22
- end
23
-
24
- def ordered(variant)
25
- @ordered_counts[variant]
26
- end
27
-
28
- def assigned(variant)
29
- @assigned_counts[variant]
30
- end
31
-
32
- def remaining(variant)
33
- @ordered_counts[variant] - @assigned_counts[variant]
34
- end
35
-
36
- private
37
- def count_line_items
38
- counts = Hash.new(0)
39
- order.line_items.each do |line_item|
40
- counts[line_item.variant] += line_item.quantity
41
- end
42
- counts
43
- end
44
-
45
- def count_inventory_units
46
- counts = Hash.new(0)
47
- order.inventory_units.each do |inventory_unit|
48
- counts[inventory_unit.variant] += 1
49
- end
50
- counts
51
- end
52
- end
53
- end
54
- end
55
-
@@ -1,6 +0,0 @@
1
- module Spree
2
- class TokenizedPermission < ActiveRecord::Base
3
- belongs_to :permissable, polymorphic: true
4
- end
5
- end
6
-
@@ -1,13 +0,0 @@
1
- <script>
2
- if (Spree === undefined) {
3
- var Spree = {};
4
- }
5
- if (Spree.routes == undefined) {
6
- Spree.routes = {};
7
- }
8
- Spree.routes.states_search = "<%= spree.api_states_path(:format => 'json') %>";
9
- Spree.routes.apply_coupon_code = function(order_id) {
10
- return "<%= spree.api_orders_path %>/" + order_id + "/apply_coupon_code";
11
- }
12
- Spree.routes.root = "<%= spree.root_url if spree.respond_to? :root_url %>";
13
- </script>
@@ -1,10 +0,0 @@
1
- class AddDefaultToShipmentCost < ActiveRecord::Migration
2
- def up
3
- change_column :spree_shipments, :cost, :decimal, precision: 10, scale: 2, default: 0.0
4
- Spree::Shipment.where(cost: nil).update_all(cost: 0)
5
- end
6
-
7
- def down
8
- change_column :spree_shipments, :cost, :decimal, precision: 10, scale: 2
9
- end
10
- end
@@ -1,5 +0,0 @@
1
- class AddStateLockVersionToOrder < ActiveRecord::Migration
2
- def change
3
- add_column :spree_orders, :state_lock_version, :integer, default: 0, null: false
4
- end
5
- end
@@ -1,26 +0,0 @@
1
- module Spree
2
- module Core
3
- module AdjustmentSource
4
- def self.included(klass)
5
- klass.class_eval do
6
- def deals_with_adjustments_for_deleted_source
7
- adjustment_scope = self.adjustments.includes(:order).references(:spree_orders)
8
-
9
- # For incomplete orders, remove the adjustment completely.
10
- adjustment_scope.where("spree_orders.completed_at IS NULL").destroy_all
11
-
12
- # For complete orders, the source will be invalid.
13
- # Therefore we nullify the source_id, leaving the adjustment in place.
14
- # This would mean that the order's total is not altered at all.
15
- adjustment_scope.where("spree_orders.completed_at IS NOT NULL").each do |adjustment|
16
- adjustment.update_columns(
17
- source_id: nil,
18
- updated_at: Time.now,
19
- )
20
- end
21
- end
22
- end
23
- end
24
- end
25
- end
26
- end
@@ -1,22 +0,0 @@
1
- # Allows us to intercept any outbound mail message and make last minute changes
2
- # (such as specifying a "from" address or sending to a test email account)
3
- #
4
- # See http://railscasts.com/episodes/206-action-mailer-in-rails-3 for more details.
5
- module Spree
6
- module Core
7
- class MailInterceptor
8
- def self.delivering_email(message)
9
- return unless MailSettings.override?
10
-
11
- if Config[:intercept_email].present?
12
- message.subject = "#{message.to} #{message.subject}"
13
- message.to = Config[:intercept_email]
14
- end
15
-
16
- if Config[:mail_bcc].present?
17
- message.bcc ||= Config[:mail_bcc]
18
- end
19
- end
20
- end
21
- end
22
- end
@@ -1,27 +0,0 @@
1
- module Spree
2
- module Core
3
- class MailMethod
4
- def initialize(options={})
5
- end
6
-
7
- def deliver!(mail)
8
- if Config.enable_mail_delivery
9
- mailer.deliver!(mail)
10
- end
11
- end
12
-
13
- def mailer
14
- mailer_class.new(mail_server_settings)
15
- end
16
-
17
- private
18
- def mailer_class
19
- Rails.env.test?? Mail::TestMailer : Mail::SMTP
20
- end
21
-
22
- def mail_server_settings
23
- MailSettings.new.mail_server_settings
24
- end
25
- end
26
- end
27
- end
@@ -1,55 +0,0 @@
1
- module Spree
2
- module Core
3
- class MailSettings
4
- MAIL_AUTH = ['None', 'plain', 'login', 'cram_md5']
5
- SECURE_CONNECTION_TYPES = ['None','SSL','TLS']
6
-
7
- # Override the Rails application mail settings based on preferences
8
- # This makes it possible to configure the mail settings through an admin
9
- # interface instead of requiring changes to the Rails envrionment file
10
- def self.init
11
- override! if override?
12
- end
13
-
14
- def self.override?
15
- Config.override_actionmailer_config
16
- end
17
-
18
- def self.override!
19
- ActionMailer::Base.delivery_method = :spree
20
- ActionMailer::Base.default_url_options[:host] ||= Config.site_url
21
- end
22
-
23
- def mail_server_settings
24
- settings = if need_authentication?
25
- basic_settings.merge(user_credentials)
26
- else
27
- basic_settings
28
- end
29
-
30
- settings.merge :enable_starttls_auto => secure_connection?
31
- end
32
-
33
- private
34
- def user_credentials
35
- { :user_name => Config.smtp_username,
36
- :password => Config.smtp_password }
37
- end
38
-
39
- def basic_settings
40
- { :address => Config.mail_host,
41
- :domain => Config.mail_domain,
42
- :port => Config.mail_port,
43
- :authentication => Config.mail_auth_type }
44
- end
45
-
46
- def need_authentication?
47
- Config.mail_auth_type != 'None'
48
- end
49
-
50
- def secure_connection?
51
- Config.secure_connection_type == 'TLS'
52
- end
53
- end
54
- end
55
- end
@@ -1,15 +0,0 @@
1
- ActiveRecord::Base.class_eval do
2
- class_attribute :whitelisted_ransackable_associations
3
- class_attribute :whitelisted_ransackable_attributes
4
-
5
- class_attribute :default_ransackable_attributes
6
- self.default_ransackable_attributes = %w[id name]
7
-
8
- def self.ransackable_associations *arg
9
- self.whitelisted_ransackable_associations || []
10
- end
11
-
12
- def self.ransackable_attributes *arg
13
- self.default_ransackable_attributes | (self.whitelisted_ransackable_attributes || [])
14
- end
15
- end
@@ -1,27 +0,0 @@
1
- module Spree
2
- module Core
3
- module TokenResource
4
- module ClassMethods
5
- def token_resource
6
- has_one :tokenized_permission, :as => :permissable
7
- delegate :token, :to => :tokenized_permission, :allow_nil => true
8
- after_create :create_token
9
- end
10
- end
11
-
12
- def create_token
13
- permission = build_tokenized_permission
14
- permission.token = token = ::SecureRandom::hex(8)
15
- permission.save!
16
- token
17
- end
18
-
19
- def self.included(receiver)
20
- receiver.extend ClassMethods
21
- end
22
- end
23
- end
24
- end
25
-
26
- ActiveRecord::Base.class_eval { include Spree::Core::TokenResource }
27
-