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.
- 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
|