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.
- checksums.yaml +4 -4
- data/app/assets/javascripts/{spree.js.coffee → spree.js.coffee.erb} +11 -2
- data/app/controllers/spree/base_controller.rb +1 -0
- data/app/helpers/spree/base_helper.rb +5 -6
- data/app/helpers/spree/orders_helper.rb +4 -0
- data/app/helpers/spree/products_helper.rb +8 -7
- data/app/mailers/spree/base_mailer.rb +2 -2
- data/app/mailers/spree/order_mailer.rb +2 -2
- data/app/mailers/spree/shipment_mailer.rb +1 -1
- data/app/mailers/spree/test_mailer.rb +1 -1
- data/app/models/spree/ability.rb +15 -16
- data/app/models/spree/address.rb +3 -6
- data/app/models/spree/adjustment.rb +2 -2
- data/app/models/spree/alert.rb +1 -1
- data/app/models/spree/app_configuration.rb +17 -20
- data/app/models/spree/asset.rb +2 -2
- data/app/models/spree/base.rb +9 -0
- data/app/models/spree/calculator.rb +1 -1
- data/app/models/spree/calculator/flat_rate.rb +1 -1
- data/app/models/spree/calculator/flexi_rate.rb +1 -1
- data/app/models/spree/calculator/price_sack.rb +1 -3
- data/app/models/spree/calculator/shipping/flat_rate.rb +1 -1
- data/app/models/spree/calculator/shipping/flexi_rate.rb +1 -1
- data/app/models/spree/calculator/shipping/per_item.rb +1 -1
- data/app/models/spree/calculator/shipping/price_sack.rb +1 -3
- data/app/models/spree/classification.rb +1 -1
- data/app/models/spree/configuration.rb +1 -1
- data/app/models/spree/country.rb +1 -1
- data/app/models/spree/credit_card.rb +8 -12
- data/app/models/spree/gateway.rb +0 -3
- data/app/models/spree/gateway/bogus.rb +2 -3
- data/app/models/spree/image.rb +3 -1
- data/app/models/spree/inventory_unit.rb +5 -6
- data/app/models/spree/item_adjustments.rb +3 -4
- data/app/models/spree/legacy_user.rb +1 -1
- data/app/models/spree/line_item.rb +6 -13
- data/app/models/spree/log_entry.rb +1 -1
- data/app/models/spree/option_type.rb +1 -1
- data/app/models/spree/option_value.rb +1 -3
- data/app/models/spree/order.rb +52 -70
- data/app/models/spree/order/checkout.rb +17 -10
- data/app/models/spree/order/currency_updater.rb +1 -1
- data/app/models/spree/order_contents.rb +7 -4
- data/app/models/spree/order_populator.rb +1 -1
- data/app/models/spree/order_updater.rb +8 -21
- data/app/models/spree/payment.rb +26 -12
- data/app/models/spree/payment/processing.rb +5 -16
- data/app/models/spree/payment_capture_event.rb +1 -1
- data/app/models/spree/payment_method.rb +2 -2
- data/app/models/spree/payment_method/check.rb +0 -2
- data/app/models/spree/preference.rb +1 -31
- data/app/models/spree/preferences/configuration.rb +2 -6
- data/app/models/spree/preferences/preferable.rb +46 -74
- data/app/models/spree/preferences/preferable_class_methods.rb +11 -46
- data/app/models/spree/preferences/scoped_store.rb +33 -0
- data/app/models/spree/preferences/store.rb +8 -7
- data/app/models/spree/price.rb +1 -3
- data/app/models/spree/product.rb +59 -87
- data/app/models/spree/product/scopes.rb +22 -13
- data/app/models/spree/product_option_type.rb +1 -1
- data/app/models/spree/product_property.rb +1 -3
- data/app/models/spree/product_scope/scopes.rb +1 -1
- data/app/models/spree/promotion.rb +4 -5
- data/app/models/spree/promotion/actions/create_adjustment.rb +11 -2
- data/app/models/spree/promotion/actions/create_item_adjustments.rb +19 -2
- data/app/models/spree/promotion/actions/create_line_items.rb +2 -12
- data/app/models/spree/promotion/rules/user.rb +5 -1
- data/app/models/spree/promotion_action.rb +1 -1
- data/app/models/spree/promotion_action_line_item.rb +1 -1
- data/app/models/spree/promotion_handler/cart.rb +2 -14
- data/app/models/spree/promotion_handler/coupon.rb +3 -13
- data/app/models/spree/promotion_rule.rb +1 -1
- data/app/models/spree/property.rb +1 -3
- data/app/models/spree/prototype.rb +1 -1
- data/app/models/spree/return_authorization.rb +4 -10
- data/app/models/spree/role.rb +1 -1
- data/app/models/spree/shipment.rb +1 -9
- data/app/models/spree/shipping_category.rb +3 -3
- data/app/models/spree/shipping_method.rb +1 -1
- data/app/models/spree/shipping_method_category.rb +2 -2
- data/app/models/spree/shipping_rate.rb +3 -3
- data/app/models/spree/state.rb +1 -1
- data/app/models/spree/state_change.rb +1 -1
- data/app/models/spree/stock/availability_validator.rb +7 -3
- data/app/models/spree/stock/package.rb +0 -23
- data/app/models/spree/stock/splitter/backordered.rb +1 -1
- data/app/models/spree/stock/splitter/shipping_category.rb +1 -1
- data/app/models/spree/stock/splitter/weight.rb +1 -1
- data/app/models/spree/stock_item.rb +7 -10
- data/app/models/spree/stock_location.rb +2 -6
- data/app/models/spree/stock_movement.rb +1 -3
- data/app/models/spree/stock_transfer.rb +1 -3
- data/app/models/spree/store.rb +33 -0
- data/app/models/spree/tax_category.rb +2 -2
- data/app/models/spree/tax_rate.rb +21 -52
- data/app/models/spree/taxon.rb +9 -8
- data/app/models/spree/taxonomy.rb +1 -1
- data/app/models/spree/tracker.rb +1 -1
- data/app/models/spree/variant.rb +13 -15
- data/app/models/spree/variant/scopes.rb +1 -1
- data/app/models/spree/zone.rb +22 -22
- data/app/models/spree/zone_member.rb +2 -2
- data/config/initializers/user_class_extensions.rb +0 -8
- data/config/locales/en.yml +7 -42
- data/db/default/spree/countries.rb +2 -3
- data/db/default/spree/stores.rb +9 -0
- data/db/migrate/20130611054351_rename_shipping_methods_zones_to_spree_shipping_methods_zones.rb +0 -5
- data/db/migrate/20130807024301_upgrade_adjustments.rb +4 -5
- data/db/migrate/20130807024302_rename_adjustment_fields.rb +5 -2
- data/db/migrate/20131118183431_add_line_item_id_to_spree_inventory_units.rb +1 -1
- data/db/migrate/20140106065820_remove_value_type_from_spree_preferences.rb +8 -0
- data/db/migrate/20140227112348_add_preference_store_to_everything.rb +8 -0
- data/db/migrate/20140309023735_migrate_old_preferences.rb +23 -0
- data/db/migrate/20140309024355_create_spree_stores.rb +25 -0
- data/db/migrate/20140309033438_create_store_from_preferences.rb +30 -0
- data/db/migrate/20140315053743_add_timestamps_to_spree_assets.rb +6 -0
- data/db/migrate/20140331100557_add_additional_store_fields.rb +8 -0
- data/db/migrate/20140410141842_add_many_missing_indexes.rb +18 -0
- data/db/migrate/20140410150358_correct_some_polymorphic_index_and_add_more_missing.rb +66 -0
- data/db/migrate/20140508151342_change_spree_price_amount_precision.rb +1 -1
- data/db/migrate/20140518174634_add_token_to_spree_orders.rb +5 -0
- data/db/migrate/20140530024945_move_order_token_from_tokenized_permission.rb +29 -0
- data/db/migrate/20140601011216_set_shipment_total_for_users_upgrading.rb +5 -3
- data/db/migrate/20140604135309_drop_credit_card_first_name_and_last_name.rb +6 -0
- data/lib/generators/spree/dummy/dummy_generator.rb +1 -0
- data/lib/generators/spree/dummy/templates/initializers/devise.rb +3 -0
- data/lib/generators/spree/dummy/templates/rails/routes.rb +0 -1
- data/lib/generators/spree/install/install_generator.rb +8 -17
- data/lib/generators/spree/install/templates/config/initializers/spree.rb +2 -2
- data/lib/spree/core.rb +13 -9
- data/lib/spree/core/calculated_adjustments.rb +1 -1
- data/lib/spree/core/controller_helpers/auth.rb +27 -18
- data/lib/spree/core/controller_helpers/common.rb +2 -2
- data/lib/spree/core/controller_helpers/order.rb +15 -24
- data/lib/spree/core/controller_helpers/store.rb +19 -0
- data/lib/spree/core/delegate_belongs_to.rb +2 -2
- data/lib/spree/core/engine.rb +0 -10
- data/lib/spree/core/importer.rb +1 -0
- data/lib/spree/core/importer/order.rb +16 -44
- data/lib/spree/core/importer/product.rb +62 -0
- data/lib/spree/core/product_filters.rb +0 -4
- data/lib/spree/core/routes.rb +4 -6
- data/lib/spree/core/validators/email.rb +23 -1
- data/lib/spree/core/version.rb +1 -1
- data/lib/spree/money.rb +1 -169
- data/lib/spree/permitted_attributes.rb +6 -4
- data/lib/spree/testing_support/authorization_helpers.rb +23 -21
- data/lib/spree/testing_support/capybara_ext.rb +11 -21
- data/lib/spree/testing_support/common_rake.rb +3 -1
- data/lib/spree/testing_support/controller_requests.rb +0 -2
- data/lib/spree/testing_support/factories/credit_card_factory.rb +1 -1
- data/lib/spree/testing_support/factories/line_item_factory.rb +4 -1
- data/lib/spree/testing_support/factories/order_factory.rb +5 -4
- data/lib/spree/testing_support/factories/product_factory.rb +0 -4
- data/lib/spree/testing_support/factories/promotion_factory.rb +5 -7
- data/lib/spree/testing_support/factories/shipment_factory.rb +0 -1
- data/lib/spree/testing_support/factories/stock_factory.rb +2 -2
- data/lib/spree/testing_support/factories/store_factory.rb +8 -0
- data/lib/spree/testing_support/preferences.rb +3 -3
- data/lib/tasks/core.rake +2 -2
- metadata +48 -39
- data/app/models/spree/stock/order_counter.rb +0 -55
- data/app/models/spree/tokenized_permission.rb +0 -6
- data/app/views/spree/shared/_routes.html.erb +0 -13
- data/db/migrate/20140804185157_add_default_to_shipment_cost.rb +0 -10
- data/db/migrate/20141021194502_add_state_lock_version_to_order.rb +0 -5
- data/lib/spree/core/adjustment_source.rb +0 -26
- data/lib/spree/core/mail_interceptor.rb +0 -22
- data/lib/spree/core/mail_method.rb +0 -27
- data/lib/spree/core/mail_settings.rb +0 -55
- data/lib/spree/core/ransackable_attributes.rb +0 -15
- data/lib/spree/core/token_resource.rb +0 -27
@@ -0,0 +1,8 @@
|
|
1
|
+
class AddAdditionalStoreFields < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
add_column :spree_stores, :code, :string unless column_exists?(:spree_stores, :code)
|
4
|
+
add_column :spree_stores, :default, :boolean, default: false, null: false unless column_exists?(:spree_stores, :default)
|
5
|
+
add_index :spree_stores, :code
|
6
|
+
add_index :spree_stores, :default
|
7
|
+
end
|
8
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class AddManyMissingIndexes < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
add_index :spree_adjustments, [:adjustable_id, :adjustable_type]
|
4
|
+
add_index :spree_adjustments, :eligible
|
5
|
+
add_index :spree_adjustments, :order_id
|
6
|
+
add_index :spree_promotions, :code
|
7
|
+
add_index :spree_promotions, :expires_at
|
8
|
+
add_index :spree_states, :country_id
|
9
|
+
add_index :spree_stock_items, :deleted_at
|
10
|
+
add_index :spree_option_types, :position
|
11
|
+
add_index :spree_option_values, :position
|
12
|
+
add_index :spree_product_option_types, :option_type_id
|
13
|
+
add_index :spree_product_option_types, :product_id
|
14
|
+
add_index :spree_products_taxons, :position
|
15
|
+
add_index :spree_promotions, :starts_at
|
16
|
+
add_index :spree_stores, :url
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
class CorrectSomePolymorphicIndexAndAddMoreMissing < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
add_index :spree_addresses, :country_id
|
4
|
+
add_index :spree_addresses, :state_id
|
5
|
+
remove_index :spree_adjustments, [:source_type, :source_id]
|
6
|
+
add_index :spree_adjustments, [:source_id, :source_type]
|
7
|
+
add_index :spree_credit_cards, :address_id
|
8
|
+
add_index :spree_gateways, :active
|
9
|
+
add_index :spree_gateways, :test_mode
|
10
|
+
add_index :spree_inventory_units, :return_authorization_id
|
11
|
+
add_index :spree_line_items, :tax_category_id
|
12
|
+
add_index :spree_log_entries, [:source_id, :source_type]
|
13
|
+
add_index :spree_orders, :approver_id
|
14
|
+
add_index :spree_orders, :bill_address_id
|
15
|
+
add_index :spree_orders, :confirmation_delivered
|
16
|
+
add_index :spree_orders, :considered_risky
|
17
|
+
add_index :spree_orders, :created_by_id
|
18
|
+
add_index :spree_orders, :ship_address_id
|
19
|
+
add_index :spree_orders, :shipping_method_id
|
20
|
+
add_index :spree_orders_promotions, [:order_id, :promotion_id]
|
21
|
+
add_index :spree_payments, [:source_id, :source_type]
|
22
|
+
add_index :spree_prices, :deleted_at
|
23
|
+
add_index :spree_product_option_types, :position
|
24
|
+
add_index :spree_product_properties, :position
|
25
|
+
add_index :spree_product_properties, :property_id
|
26
|
+
add_index :spree_products, :shipping_category_id
|
27
|
+
add_index :spree_products, :tax_category_id
|
28
|
+
add_index :spree_promotion_action_line_items, :promotion_action_id
|
29
|
+
add_index :spree_promotion_action_line_items, :variant_id
|
30
|
+
add_index :spree_promotion_rules, :promotion_id
|
31
|
+
add_index :spree_promotions, :advertise
|
32
|
+
add_index :spree_return_authorizations, :number
|
33
|
+
add_index :spree_return_authorizations, :order_id
|
34
|
+
add_index :spree_return_authorizations, :stock_location_id
|
35
|
+
add_index :spree_shipments, :address_id
|
36
|
+
add_index :spree_shipping_methods, :deleted_at
|
37
|
+
add_index :spree_shipping_methods, :tax_category_id
|
38
|
+
add_index :spree_shipping_rates, :selected
|
39
|
+
add_index :spree_shipping_rates, :tax_rate_id
|
40
|
+
add_index :spree_state_changes, [:stateful_id, :stateful_type]
|
41
|
+
add_index :spree_state_changes, :user_id
|
42
|
+
add_index :spree_stock_items, :backorderable
|
43
|
+
add_index :spree_stock_locations, :active
|
44
|
+
add_index :spree_stock_locations, :backorderable_default
|
45
|
+
add_index :spree_stock_locations, :country_id
|
46
|
+
add_index :spree_stock_locations, :propagate_all_variants
|
47
|
+
add_index :spree_stock_locations, :state_id
|
48
|
+
add_index :spree_tax_categories, :deleted_at
|
49
|
+
add_index :spree_tax_categories, :is_default
|
50
|
+
add_index :spree_tax_rates, :deleted_at
|
51
|
+
add_index :spree_tax_rates, :included_in_price
|
52
|
+
add_index :spree_tax_rates, :show_rate_in_label
|
53
|
+
add_index :spree_tax_rates, :tax_category_id
|
54
|
+
add_index :spree_tax_rates, :zone_id
|
55
|
+
add_index :spree_taxonomies, :position
|
56
|
+
add_index :spree_taxons, :position
|
57
|
+
add_index :spree_trackers, :active
|
58
|
+
add_index :spree_variants, :deleted_at
|
59
|
+
add_index :spree_variants, :is_master
|
60
|
+
add_index :spree_variants, :position
|
61
|
+
add_index :spree_variants, :track_inventory
|
62
|
+
add_index :spree_zone_members, :zone_id
|
63
|
+
add_index :spree_zone_members, [:zoneable_id, :zoneable_type]
|
64
|
+
add_index :spree_zones, :default_tax
|
65
|
+
end
|
66
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
class ChangeSpreePriceAmountPrecision < ActiveRecord::Migration
|
2
2
|
def change
|
3
3
|
change_column :spree_prices, :amount, :decimal, :precision => 10, :scale => 2
|
4
|
-
change_column :spree_line_items, :price, :decimal, :precision => 10, :scale => 2
|
4
|
+
change_column :spree_line_items, :price, :decimal, :precision => 10, :scale => 2
|
5
5
|
change_column :spree_line_items, :cost_price, :decimal, :precision => 10, :scale => 2
|
6
6
|
change_column :spree_variants, :cost_price, :decimal, :precision => 10, :scale => 2
|
7
7
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
class MoveOrderTokenFromTokenizedPermission < ActiveRecord::Migration
|
2
|
+
class Spree::TokenizedPermission < Spree::Base
|
3
|
+
belongs_to :permissable, polymorphic: true
|
4
|
+
end
|
5
|
+
|
6
|
+
def up
|
7
|
+
case Spree::Order.connection.adapter_name
|
8
|
+
when 'SQLite'
|
9
|
+
Spree::Order.has_one :tokenized_permission, :as => :permissable
|
10
|
+
Spree::Order.includes(:tokenized_permission).each do |o|
|
11
|
+
o.update_column :guest_token, o.tokenized_permission.token
|
12
|
+
end
|
13
|
+
when 'Mysql2'
|
14
|
+
execute "UPDATE spree_orders, spree_tokenized_permissions
|
15
|
+
SET spree_orders.guest_token = spree_tokenized_permissions.token
|
16
|
+
WHERE spree_tokenized_permissions.permissable_id = spree_orders.id
|
17
|
+
AND spree_tokenized_permissions.permissable_type = 'Spree::Order'"
|
18
|
+
else
|
19
|
+
execute "UPDATE spree_orders
|
20
|
+
SET guest_token = spree_tokenized_permissions.token
|
21
|
+
FROM spree_tokenized_permissions
|
22
|
+
WHERE spree_tokenized_permissions.permissable_id = spree_orders.id
|
23
|
+
AND spree_tokenized_permissions.permissable_type = 'Spree::Order'"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def down
|
28
|
+
end
|
29
|
+
end
|
@@ -3,8 +3,10 @@ class SetShipmentTotalForUsersUpgrading < ActiveRecord::Migration
|
|
3
3
|
# NOTE You might not need this at all unless you're upgrading from Spree 2.1.x
|
4
4
|
# or below. For those upgrading this should populate the Order#shipment_total
|
5
5
|
# for legacy orders
|
6
|
-
|
7
|
-
|
8
|
-
|
6
|
+
execute "UPDATE spree_orders
|
7
|
+
SET shipment_total = (SELECT SUM(spree_shipments.cost) AS sum_id
|
8
|
+
FROM spree_shipments
|
9
|
+
WHERE spree_shipments.order_id = spree_orders.id)
|
10
|
+
WHERE spree_orders.completed_at IS NOT NULL AND spree_orders.shipment_total = 0"
|
9
11
|
end
|
10
12
|
end
|
@@ -48,6 +48,7 @@ module Spree
|
|
48
48
|
template "rails/test.rb", "#{dummy_path}/config/environments/test.rb", :force => true
|
49
49
|
template "rails/script/rails", "#{dummy_path}/spec/dummy/script/rails", :force => true
|
50
50
|
template "initializers/custom_user.rb", "#{dummy_path}/config/initializers/custom_user.rb", :force => true
|
51
|
+
template "initializers/devise.rb", "#{dummy_path}/config/initializers/devise.rb", :force => true
|
51
52
|
end
|
52
53
|
|
53
54
|
def test_dummy_inject_extension_requirements
|
@@ -13,7 +13,6 @@ module Spree
|
|
13
13
|
class_option :admin_email, :type => :string
|
14
14
|
class_option :admin_password, :type => :string
|
15
15
|
class_option :lib_name, :type => :string, :default => 'spree'
|
16
|
-
class_option :enforce_available_locales, :type => :boolean, :default => nil
|
17
16
|
|
18
17
|
def self.source_paths
|
19
18
|
paths = self.superclass.source_paths
|
@@ -46,10 +45,6 @@ module Spree
|
|
46
45
|
end
|
47
46
|
end
|
48
47
|
|
49
|
-
def remove_unneeded_files
|
50
|
-
remove_file "public/index.html"
|
51
|
-
end
|
52
|
-
|
53
48
|
def additional_tweaks
|
54
49
|
return unless File.exists? 'public/robots.txt'
|
55
50
|
append_file "public/robots.txt", <<-ROBOTS
|
@@ -57,10 +52,14 @@ User-agent: *
|
|
57
52
|
Disallow: /checkout
|
58
53
|
Disallow: /cart
|
59
54
|
Disallow: /orders
|
60
|
-
Disallow: /
|
55
|
+
Disallow: /countries
|
56
|
+
Disallow: /line_items
|
57
|
+
Disallow: /password_resets
|
58
|
+
Disallow: /states
|
59
|
+
Disallow: /user_sessions
|
60
|
+
Disallow: /user_registrations
|
61
|
+
Disallow: /users
|
61
62
|
Disallow: /account
|
62
|
-
Disallow: /api
|
63
|
-
Disallow: /password
|
64
63
|
ROBOTS
|
65
64
|
end
|
66
65
|
|
@@ -101,13 +100,6 @@ Disallow: /password
|
|
101
100
|
end
|
102
101
|
end
|
103
102
|
APP
|
104
|
-
|
105
|
-
if !options[:enforce_available_locales].nil?
|
106
|
-
application <<-APP
|
107
|
-
# Prevent this deprecation message: https://github.com/svenfuchs/i18n/commit/3b6e56e
|
108
|
-
I18n.enforce_available_locales = #{options[:enforce_available_locales]}
|
109
|
-
APP
|
110
|
-
end
|
111
103
|
end
|
112
104
|
|
113
105
|
def include_seed_data
|
@@ -172,7 +164,7 @@ Spree::Auth::Engine.load_seed if defined?(Spree::Auth)
|
|
172
164
|
end
|
173
165
|
|
174
166
|
def notify_about_routes
|
175
|
-
insert_into_file File.join('config', 'routes.rb'), :after => "
|
167
|
+
insert_into_file File.join('config', 'routes.rb'), :after => "Rails.application.routes.draw do\n" do
|
176
168
|
%Q{
|
177
169
|
# This line mounts Spree's routes at the root of your application.
|
178
170
|
# This means, any requests to URLs such as /products, will go to Spree::ProductsController.
|
@@ -199,6 +191,5 @@ Spree::Auth::Engine.load_seed if defined?(Spree::Auth)
|
|
199
191
|
puts "Enjoy!"
|
200
192
|
end
|
201
193
|
end
|
202
|
-
|
203
194
|
end
|
204
195
|
end
|
@@ -7,8 +7,8 @@
|
|
7
7
|
# config.setting_name = 'new value'
|
8
8
|
Spree.config do |config|
|
9
9
|
# Example:
|
10
|
-
# Uncomment to
|
11
|
-
# config.
|
10
|
+
# Uncomment to stop tracking inventory levels in the application
|
11
|
+
# config.track_inventory_levels = false
|
12
12
|
end
|
13
13
|
|
14
14
|
Spree.user_class = <%= (options[:user_class].blank? ? "Spree::LegacyUser" : options[:user_class]).inspect %>
|
data/lib/spree/core.rb
CHANGED
@@ -30,7 +30,7 @@ module Spree
|
|
30
30
|
# Example:
|
31
31
|
#
|
32
32
|
# Spree.config do |config|
|
33
|
-
# config.
|
33
|
+
# config.track_inventory_levels = false
|
34
34
|
# end
|
35
35
|
#
|
36
36
|
# This method is defined within the core gem on purpose.
|
@@ -49,10 +49,6 @@ end
|
|
49
49
|
|
50
50
|
require 'spree/core/version'
|
51
51
|
|
52
|
-
require 'spree/core/ransackable_attributes'
|
53
|
-
require 'spree/core/mail_interceptor'
|
54
|
-
require 'spree/core/mail_method'
|
55
|
-
require 'spree/core/mail_settings'
|
56
52
|
require 'spree/core/environment_extension'
|
57
53
|
require 'spree/core/environment/calculators'
|
58
54
|
require 'spree/core/environment'
|
@@ -68,13 +64,21 @@ require 'spree/core/user_address'
|
|
68
64
|
require 'spree/core/user_payment_source'
|
69
65
|
require 'spree/core/delegate_belongs_to'
|
70
66
|
require 'spree/core/permalinks'
|
71
|
-
require 'spree/core/token_resource'
|
72
67
|
require 'spree/core/calculated_adjustments'
|
73
|
-
require 'spree/core/adjustment_source'
|
74
68
|
require 'spree/core/product_duplicator'
|
75
69
|
require 'spree/core/controller_helpers'
|
76
|
-
require 'spree/core/controller_helpers/strong_parameters'
|
77
|
-
require 'spree/core/controller_helpers/ssl'
|
78
70
|
require 'spree/core/controller_helpers/search'
|
71
|
+
require 'spree/core/controller_helpers/ssl'
|
72
|
+
require 'spree/core/controller_helpers/store'
|
73
|
+
require 'spree/core/controller_helpers/strong_parameters'
|
79
74
|
|
80
75
|
require 'spree/core/importer'
|
76
|
+
|
77
|
+
# Hack waiting on https://github.com/pluginaweek/state_machine/pull/275
|
78
|
+
module StateMachine
|
79
|
+
module Integrations
|
80
|
+
module ActiveModel
|
81
|
+
public :around_validation
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
@@ -3,7 +3,7 @@ module Spree
|
|
3
3
|
module CalculatedAdjustments
|
4
4
|
def self.included(klass)
|
5
5
|
klass.class_eval do
|
6
|
-
has_one :calculator, :
|
6
|
+
has_one :calculator, class_name: "Spree::Calculator", as: :calculable, inverse_of: :calculable, dependent: :destroy, autosave: true
|
7
7
|
accepts_nested_attributes_for :calculator
|
8
8
|
validates :calculator, :presence => true
|
9
9
|
|
@@ -5,10 +5,11 @@ module Spree
|
|
5
5
|
extend ActiveSupport::Concern
|
6
6
|
|
7
7
|
included do
|
8
|
+
before_filter :set_guest_token
|
8
9
|
helper_method :try_spree_current_user
|
9
10
|
|
10
11
|
rescue_from CanCan::AccessDenied do |exception|
|
11
|
-
|
12
|
+
unauthorized
|
12
13
|
end
|
13
14
|
end
|
14
15
|
|
@@ -17,20 +18,15 @@ module Spree
|
|
17
18
|
@current_ability ||= Spree::Ability.new(try_spree_current_user)
|
18
19
|
end
|
19
20
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
if respond_to?(:spree_login_path)
|
30
|
-
redirect_to spree_login_path
|
31
|
-
else
|
32
|
-
redirect_to spree.respond_to?(:root_path) ? spree.root_path : root_path
|
33
|
-
end
|
21
|
+
|
22
|
+
def redirect_back_or_default(default)
|
23
|
+
redirect_to(session["spree_user_return_to"] || default)
|
24
|
+
session["spree_user_return_to"] = nil
|
25
|
+
end
|
26
|
+
|
27
|
+
def set_guest_token
|
28
|
+
unless cookies.signed[:guest_token].present?
|
29
|
+
cookies.permanent.signed[:guest_token] = SecureRandom.urlsafe_base64(nil, false)
|
34
30
|
end
|
35
31
|
end
|
36
32
|
|
@@ -65,10 +61,23 @@ module Spree
|
|
65
61
|
end
|
66
62
|
end
|
67
63
|
|
68
|
-
|
69
|
-
|
70
|
-
|
64
|
+
# Redirect as appropriate when an access request fails. The default action is to redirect to the login screen.
|
65
|
+
# Override this method in your controllers if you want to have special behavior in case the user is not authorized
|
66
|
+
# to access the requested action. For example, a popup window might simply close itself.
|
67
|
+
def unauthorized
|
68
|
+
if try_spree_current_user
|
69
|
+
flash[:error] = Spree.t(:authorization_failure)
|
70
|
+
redirect_to '/unauthorized'
|
71
|
+
else
|
72
|
+
store_location
|
73
|
+
if respond_to?(:spree_login_path)
|
74
|
+
redirect_to spree_login_path
|
75
|
+
else
|
76
|
+
redirect_to spree.respond_to?(:root_path) ? spree.root_path : root_path
|
77
|
+
end
|
78
|
+
end
|
71
79
|
end
|
80
|
+
|
72
81
|
end
|
73
82
|
end
|
74
83
|
end
|
@@ -39,12 +39,12 @@ module Spree
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def default_title
|
42
|
-
|
42
|
+
current_store.name
|
43
43
|
end
|
44
44
|
|
45
45
|
# this is a hook for subclasses to provide title
|
46
46
|
def accurate_title
|
47
|
-
|
47
|
+
current_store.seo_title
|
48
48
|
end
|
49
49
|
|
50
50
|
def render_404(exception = nil)
|
@@ -2,48 +2,41 @@ module Spree
|
|
2
2
|
module Core
|
3
3
|
module ControllerHelpers
|
4
4
|
module Order
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
5
|
+
extend ActiveSupport::Concern
|
6
|
+
|
7
|
+
included do
|
8
|
+
before_filter :set_current_order
|
9
|
+
|
10
|
+
helper_method :current_currency
|
11
|
+
helper_method :current_order
|
12
|
+
helper_method :simple_current_order
|
12
13
|
end
|
13
14
|
|
14
15
|
# Used in the link_to_cart helper.
|
15
16
|
def simple_current_order
|
16
|
-
@
|
17
|
+
@order ||= Spree::Order.find_by(completed_at: nil, currency: current_currency, guest_token: cookies.signed[:guest_token])
|
17
18
|
end
|
18
19
|
|
19
|
-
# The current incomplete order from the
|
20
|
+
# The current incomplete order from the guest_token for use in cart and during checkout
|
20
21
|
def current_order(options = {})
|
21
22
|
options[:create_order_if_necessary] ||= false
|
22
23
|
options[:lock] ||= false
|
23
24
|
|
24
25
|
return @current_order if @current_order
|
25
26
|
|
26
|
-
|
27
|
-
|
28
|
-
@current_order = current_order unless current_order.try(:completed?)
|
29
|
-
end
|
27
|
+
# Find any incomplete orders for the guest_token
|
28
|
+
@current_order = Spree::Order.includes(:adjustments).lock(options[:lock]).find_by(completed_at: nil, currency: current_currency, guest_token: cookies.signed[:guest_token])
|
30
29
|
|
31
30
|
if options[:create_order_if_necessary] and (@current_order.nil? or @current_order.completed?)
|
32
|
-
@current_order = Spree::Order.new(currency: current_currency)
|
31
|
+
@current_order = Spree::Order.new(currency: current_currency, guest_token: cookies.signed[:guest_token])
|
33
32
|
@current_order.user ||= try_spree_current_user
|
34
33
|
# See issue #3346 for reasons why this line is here
|
35
34
|
@current_order.created_by ||= try_spree_current_user
|
36
35
|
@current_order.save!
|
37
|
-
|
38
|
-
# make sure the user has permission to access the order (if they are a guest)
|
39
|
-
if try_spree_current_user.nil?
|
40
|
-
session[:access_token] = @current_order.token
|
41
|
-
end
|
42
36
|
end
|
43
37
|
|
44
38
|
if @current_order
|
45
39
|
@current_order.last_ip_address = ip_address
|
46
|
-
session[:order_id] = @current_order.id
|
47
40
|
return @current_order
|
48
41
|
end
|
49
42
|
end
|
@@ -53,15 +46,13 @@ module Spree
|
|
53
46
|
if try_spree_current_user && @order
|
54
47
|
@order.associate_user!(try_spree_current_user) if @order.user.blank? || @order.email.blank?
|
55
48
|
end
|
56
|
-
|
57
|
-
session[:guest_token] = nil
|
58
49
|
end
|
59
50
|
|
60
51
|
def set_current_order
|
61
52
|
if user = try_spree_current_user
|
62
53
|
last_incomplete_order = user.last_incomplete_spree_order
|
63
|
-
if
|
64
|
-
|
54
|
+
if last_incomplete_order
|
55
|
+
cookies.permanent.signed[:guest_token] = last_incomplete_order.guest_token
|
65
56
|
elsif current_order && last_incomplete_order && current_order != last_incomplete_order
|
66
57
|
current_order.merge!(last_incomplete_order, user)
|
67
58
|
end
|