spree_core 2.2.14 → 2.3.0

Sign up to get free protection for your applications and to get access to all the features.
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
-