solidus_core 2.11.16 → 3.0.0.rc2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of solidus_core might be problematic. Click here for more details.

Files changed (144) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spree.js.erb +0 -51
  3. data/app/helpers/spree/store_helper.rb +0 -11
  4. data/app/mailers/spree/carton_mailer.rb +1 -5
  5. data/app/models/concerns/spree/active_storage_adapter/attachment.rb +11 -13
  6. data/app/models/concerns/spree/active_storage_adapter.rb +0 -2
  7. data/app/models/concerns/spree/adjustment_source.rb +0 -15
  8. data/app/models/concerns/spree/calculated_adjustments.rb +0 -18
  9. data/app/models/concerns/spree/soft_deletable.rb +2 -4
  10. data/app/models/concerns/spree/user_address_book.rb +0 -37
  11. data/app/models/concerns/spree/user_methods.rb +2 -11
  12. data/app/models/spree/ability.rb +0 -37
  13. data/app/models/spree/address/name.rb +2 -20
  14. data/app/models/spree/address.rb +8 -187
  15. data/app/models/spree/adjustment.rb +0 -28
  16. data/app/models/spree/base.rb +12 -48
  17. data/app/models/spree/calculator/flexi_rate.rb +0 -5
  18. data/app/models/spree/calculator.rb +0 -11
  19. data/app/models/spree/country.rb +1 -6
  20. data/app/models/spree/credit_card.rb +0 -27
  21. data/app/models/spree/customer_return.rb +1 -4
  22. data/app/models/spree/image/active_storage_attachment.rb +2 -10
  23. data/app/models/spree/image/paperclip_attachment.rb +1 -1
  24. data/app/models/spree/image.rb +0 -7
  25. data/app/models/spree/inventory_unit.rb +0 -21
  26. data/app/models/spree/line_item.rb +2 -45
  27. data/app/models/spree/order.rb +4 -137
  28. data/app/models/spree/order_cancellations.rb +4 -24
  29. data/app/models/spree/order_shipping.rb +9 -6
  30. data/app/models/spree/order_updater.rb +2 -11
  31. data/app/models/spree/payment/cancellation.rb +3 -22
  32. data/app/models/spree/payment.rb +0 -3
  33. data/app/models/spree/payment_create.rb +1 -13
  34. data/app/models/spree/payment_method/bogus_credit_card.rb +9 -13
  35. data/app/models/spree/payment_method/credit_card.rb +1 -3
  36. data/app/models/spree/payment_method/simple_bogus_credit_card.rb +4 -4
  37. data/app/models/spree/payment_method.rb +2 -106
  38. data/app/models/spree/product/scopes.rb +0 -27
  39. data/app/models/spree/product.rb +0 -39
  40. data/app/models/spree/promotion/actions/create_adjustment.rb +0 -3
  41. data/app/models/spree/promotion/actions/create_item_adjustments.rb +0 -3
  42. data/app/models/spree/promotion/actions/create_quantity_adjustments.rb +0 -3
  43. data/app/models/spree/promotion/rules/taxon.rb +2 -15
  44. data/app/models/spree/promotion.rb +2 -6
  45. data/app/models/spree/promotion_action.rb +2 -12
  46. data/app/models/spree/promotion_code/batch_builder.rb +0 -14
  47. data/app/models/spree/promotion_code.rb +2 -2
  48. data/app/models/spree/promotion_rule.rb +0 -4
  49. data/app/models/spree/refund.rb +0 -60
  50. data/app/models/spree/reimbursement.rb +3 -41
  51. data/app/models/spree/reimbursement_performer.rb +2 -8
  52. data/app/models/spree/reimbursement_type/credit.rb +1 -4
  53. data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +1 -2
  54. data/app/models/spree/reimbursement_type/store_credit.rb +1 -4
  55. data/app/models/spree/return_authorization.rb +1 -4
  56. data/app/models/spree/return_item.rb +1 -19
  57. data/app/models/spree/shipment.rb +1 -54
  58. data/app/models/spree/shipping_method.rb +0 -25
  59. data/app/models/spree/shipping_rate.rb +0 -2
  60. data/app/models/spree/state.rb +0 -4
  61. data/app/models/spree/stock/simple_coordinator.rb +1 -20
  62. data/app/models/spree/stock/splitter/base.rb +2 -7
  63. data/app/models/spree/stock_item.rb +1 -7
  64. data/app/models/spree/store.rb +0 -12
  65. data/app/models/spree/store_credit.rb +0 -8
  66. data/app/models/spree/store_credit_category.rb +0 -32
  67. data/app/models/spree/tax_calculator/shipping_rate.rb +1 -12
  68. data/app/models/spree/tax_rate.rb +0 -27
  69. data/app/models/spree/taxon/active_storage_attachment.rb +0 -5
  70. data/app/models/spree/taxon/paperclip_attachment.rb +0 -5
  71. data/app/models/spree/taxon.rb +0 -11
  72. data/app/models/spree/user_address.rb +0 -5
  73. data/app/models/spree/variant.rb +2 -46
  74. data/config/locales/en.yml +0 -8
  75. data/db/migrate/20180416083007_add_apply_to_all_to_variant_property_rule.rb +1 -1
  76. data/lib/generators/solidus/install/install_generator.rb +13 -2
  77. data/lib/generators/solidus/install/templates/config/initializers/spree.rb.tt +3 -39
  78. data/lib/generators/spree/dummy/dummy_generator.rb +2 -1
  79. data/lib/generators/spree/dummy/templates/rails/database.yml +6 -1
  80. data/lib/generators/spree/dummy/templates/rails/storage.yml +3 -0
  81. data/lib/generators/spree/dummy/templates/rails/test.rb +2 -0
  82. data/lib/spree/app_configuration.rb +6 -73
  83. data/lib/spree/core/class_constantizer.rb +2 -0
  84. data/lib/spree/core/controller_helpers/auth.rb +1 -14
  85. data/lib/spree/core/controller_helpers/order.rb +2 -22
  86. data/lib/spree/core/controller_helpers/payment_parameters.rb +0 -54
  87. data/lib/spree/core/controller_helpers/pricing.rb +0 -8
  88. data/lib/spree/core/controller_helpers/strong_parameters.rb +0 -4
  89. data/lib/spree/core/engine.rb +0 -43
  90. data/lib/spree/core/environment_extension.rb +0 -9
  91. data/lib/spree/core/product_filters.rb +0 -40
  92. data/lib/spree/core/role_configuration.rb +0 -14
  93. data/lib/spree/core/search/base.rb +0 -26
  94. data/lib/spree/core/state_machines.rb +2 -11
  95. data/lib/spree/core/validators/email.rb +1 -1
  96. data/lib/spree/core/version.rb +1 -1
  97. data/lib/spree/core.rb +9 -8
  98. data/lib/spree/event/configuration.rb +0 -5
  99. data/lib/spree/event/subscriber.rb +0 -18
  100. data/lib/spree/event/subscriber_registry.rb +3 -1
  101. data/lib/spree/event.rb +0 -31
  102. data/lib/spree/i18n.rb +0 -22
  103. data/lib/spree/money.rb +3 -18
  104. data/lib/spree/permitted_attributes.rb +3 -60
  105. data/lib/spree/testing_support/blacklist_urls.rb +1 -1
  106. data/lib/spree/testing_support/capybara_ext.rb +0 -30
  107. data/lib/spree/testing_support/controller_requests.rb +0 -82
  108. data/lib/spree/testing_support/dummy_app/migrations.rb +0 -3
  109. data/lib/spree/testing_support/dummy_app.rb +6 -16
  110. data/lib/spree/testing_support/factories/order_factory.rb +0 -1
  111. data/lib/spree/testing_support/factories/refund_factory.rb +0 -1
  112. data/lib/spree/testing_support/order_walkthrough.rb +0 -3
  113. data/lib/spree/testing_support/preferences.rb +0 -25
  114. data/lib/spree/testing_support.rb +1 -1
  115. data/lib/tasks/migrations/migrate_default_billing_addresses_to_address_book.rake +20 -15
  116. data/solidus_core.gemspec +1 -24
  117. metadata +9 -74
  118. data/app/mailers/spree/test_mailer.rb +0 -13
  119. data/app/models/concerns/spree/user_payment_source.rb +0 -26
  120. data/app/models/spree/calculator/free_shipping.rb +0 -22
  121. data/app/models/spree/calculator/percent_per_item.rb +0 -51
  122. data/app/models/spree/calculator/price_sack.rb +0 -28
  123. data/app/models/spree/gateway/bogus.rb +0 -13
  124. data/app/models/spree/gateway/bogus_simple.rb +0 -13
  125. data/app/models/spree/gateway.rb +0 -14
  126. data/app/models/spree/order/checkout.rb +0 -244
  127. data/app/models/spree/order_capturing.rb +0 -50
  128. data/app/models/spree/promotion_handler/free_shipping.rb +0 -9
  129. data/lib/generators/spree/install/install_generator.rb +0 -15
  130. data/lib/solidus/migrations/rename_gateways.rb +0 -41
  131. data/lib/spree/core/current_store.rb +0 -24
  132. data/lib/spree/paranoia_deprecations.rb +0 -41
  133. data/lib/spree/preferences/persistable.rb +0 -23
  134. data/lib/spree/promo/environment.rb +0 -12
  135. data/lib/spree/testing_support/bar_ability.rb +0 -19
  136. data/lib/spree/testing_support/fixtures/file.txt +0 -1
  137. data/lib/tasks/core.rake +0 -104
  138. data/lib/tasks/email.rake +0 -12
  139. data/lib/tasks/migrations/copy_order_bill_address_to_credit_card.rake +0 -119
  140. data/lib/tasks/migrations/migrate_shipping_rate_taxes.rake +0 -22
  141. data/lib/tasks/migrations/migrate_user_addresses.rake +0 -34
  142. data/lib/tasks/migrations/rename_gateways.rake +0 -23
  143. data/lib/tasks/order_capturing.rake +0 -27
  144. data/lib/tasks/solidus/check_orders_with_invalid_email.rake +0 -18
@@ -1,244 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Spree
4
- class Order < Spree::Base
5
- module Checkout
6
- def self.included(klass)
7
- klass.extend ClassMethods
8
- end
9
-
10
- module ClassMethods
11
- attr_accessor :previous_states
12
- attr_writer :next_event_transitions
13
- attr_writer :checkout_steps
14
- attr_writer :removed_transitions
15
-
16
- def checkout_flow(&block)
17
- if block_given?
18
- @checkout_flow = block
19
- define_state_machine!
20
- else
21
- @checkout_flow
22
- end
23
- end
24
-
25
- def define_state_machine!
26
- self.checkout_steps = {}
27
- self.next_event_transitions = []
28
- self.previous_states = [:cart]
29
- self.removed_transitions = []
30
-
31
- # Build the checkout flow using the checkout_flow defined either
32
- # within the Order class, or a decorator for that class.
33
- #
34
- # This method may be called multiple times depending on if the
35
- # checkout_flow is re-defined in a decorator or not.
36
- instance_eval(&checkout_flow)
37
-
38
- klass = self
39
-
40
- # To avoid multiple occurrences of the same transition being defined
41
- # On first definition, state_machines will not be defined
42
- state_machines.clear if respond_to?(:state_machines)
43
- state_machine :state, initial: :cart, use_transactions: false do
44
- klass.next_event_transitions.each { |state| transition(state.merge(on: :next)) }
45
-
46
- # Persist the state on the order
47
- after_transition do |order, transition|
48
- order.state = order.state
49
- order.state_changes.create(
50
- previous_state: transition.from,
51
- next_state: transition.to,
52
- name: 'order',
53
- user_id: order.user_id
54
- )
55
- order.save
56
- end
57
-
58
- event :cancel do
59
- transition to: :canceled, if: :allow_cancel?
60
- end
61
-
62
- event :return do
63
- transition to: :returned, from: [:returned, :complete, :awaiting_return, :canceled], if: :all_inventory_units_returned?
64
- end
65
-
66
- event :resume do
67
- transition to: :resumed, from: :canceled, if: :canceled?
68
- end
69
-
70
- event :authorize_return do
71
- transition to: :awaiting_return
72
- end
73
-
74
- event :complete do
75
- transition to: :complete, from: :confirm
76
- end
77
-
78
- if states[:payment]
79
- event :payment_failed do
80
- transition to: :payment, from: :confirm
81
- end
82
-
83
- after_transition to: :complete, do: :add_payment_sources_to_wallet
84
- before_transition to: :payment, do: :add_default_payment_from_wallet
85
- before_transition to: :payment, do: :ensure_billing_address
86
-
87
- before_transition to: :confirm, do: :add_store_credit_payments
88
-
89
- # see also process_payments_before_complete below which needs to
90
- # be added in the correct sequence.
91
- end
92
-
93
- before_transition from: :cart, do: :ensure_line_items_present
94
-
95
- if states[:address]
96
- before_transition to: :address, do: :assign_default_user_addresses
97
- before_transition from: :address, do: :persist_user_address!
98
- end
99
-
100
- if states[:delivery]
101
- before_transition to: :delivery, do: :ensure_shipping_address
102
- before_transition to: :delivery, do: :create_proposed_shipments
103
- before_transition to: :delivery, do: :ensure_available_shipping_rates
104
- before_transition from: :delivery, do: :apply_shipping_promotions
105
- end
106
-
107
- before_transition to: :resumed, do: :ensure_line_item_variants_are_not_deleted
108
- before_transition to: :resumed, do: :validate_line_item_availability
109
-
110
- # Sequence of before_transition to: :complete
111
- # calls matter so that we do not process payments
112
- # until validations have passed
113
- before_transition to: :complete, do: :validate_line_item_availability
114
- before_transition to: :complete, do: :ensure_promotions_eligible
115
- before_transition to: :complete, do: :ensure_line_item_variants_are_not_deleted
116
- before_transition to: :complete, do: :ensure_inventory_units
117
- if states[:payment]
118
- before_transition to: :complete, do: :process_payments_before_complete
119
- end
120
-
121
- after_transition to: :complete, do: :finalize!
122
- after_transition to: :resumed, do: :after_resume
123
- after_transition to: :canceled, do: :after_cancel
124
-
125
- after_transition from: any - :cart, to: any - [:confirm, :complete] do |order|
126
- order.recalculate
127
- end
128
-
129
- after_transition do |order, transition|
130
- order.logger.debug "Order #{order.number} transitioned from #{transition.from} to #{transition.to} via #{transition.event}"
131
- end
132
-
133
- after_failure do |order, transition|
134
- order.logger.debug "Order #{order.number} halted transition on event #{transition.event} state #{transition.from}: #{order.errors.full_messages.join}"
135
- end
136
- end
137
- end
138
-
139
- def go_to_state(name, options = {})
140
- checkout_steps[name] = options
141
- previous_states.each do |state|
142
- add_transition({ from: state, to: name }.merge(options))
143
- end
144
- if options[:if]
145
- previous_states << name
146
- else
147
- self.previous_states = [name]
148
- end
149
- end
150
-
151
- def insert_checkout_step(name, options = {})
152
- before = options.delete(:before)
153
- after = options.delete(:after) unless before
154
- after = checkout_steps.keys.last unless before || after
155
-
156
- cloned_steps = checkout_steps.clone
157
- cloned_removed_transitions = removed_transitions.clone
158
- checkout_flow do
159
- cloned_steps.each_pair do |key, value|
160
- go_to_state(name, options) if key == before
161
- go_to_state(key, value)
162
- go_to_state(name, options) if key == after
163
- end
164
- cloned_removed_transitions.each do |transition|
165
- remove_transition(transition)
166
- end
167
- end
168
- end
169
-
170
- def remove_checkout_step(name)
171
- cloned_steps = checkout_steps.clone
172
- cloned_removed_transitions = removed_transitions.clone
173
- checkout_flow do
174
- cloned_steps.each_pair do |key, value|
175
- go_to_state(key, value) unless key == name
176
- end
177
- cloned_removed_transitions.each do |transition|
178
- remove_transition(transition)
179
- end
180
- end
181
- end
182
-
183
- def remove_transition(options = {})
184
- removed_transitions << options
185
- next_event_transitions.delete(find_transition(options))
186
- end
187
-
188
- def find_transition(options = {})
189
- return nil if options.nil? || !options.include?(:from) || !options.include?(:to)
190
- next_event_transitions.detect do |transition|
191
- transition[options[:from].to_sym] == options[:to].to_sym
192
- end
193
- end
194
-
195
- def next_event_transitions
196
- @next_event_transitions ||= []
197
- end
198
-
199
- def checkout_steps
200
- @checkout_steps ||= {}
201
- end
202
-
203
- def checkout_step_names
204
- checkout_steps.keys
205
- end
206
-
207
- def add_transition(options)
208
- next_event_transitions << { options.delete(:from) => options.delete(:to) }.merge(options)
209
- end
210
-
211
- def removed_transitions
212
- @removed_transitions ||= []
213
- end
214
- end
215
-
216
- def checkout_steps
217
- steps = self.class.checkout_steps.each_with_object([]) { |(step, options), checkout_steps|
218
- next if options.include?(:if) && !options[:if].call(self)
219
- checkout_steps << step
220
- }.map(&:to_s)
221
- # Ensure there is always a complete step
222
- steps << "complete" unless steps.include?("complete")
223
- steps
224
- end
225
-
226
- def has_checkout_step?(step)
227
- step.present? && checkout_steps.include?(step)
228
- end
229
-
230
- def passed_checkout_step?(step)
231
- has_checkout_step?(step) && checkout_step_index(step) < checkout_step_index(state)
232
- end
233
-
234
- def checkout_step_index(step)
235
- checkout_steps.index(step).to_i
236
- end
237
-
238
- def can_go_to_state?(state)
239
- return false unless has_checkout_step?(self.state) && has_checkout_step?(state)
240
- checkout_step_index(state) > checkout_step_index(self.state)
241
- end
242
- end
243
- end
244
- end
@@ -1,50 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class Spree::OrderCapturing
4
- # Allows for prioritizing payment methods in the order to be captured
5
- class_attribute :sorted_payment_method_classes
6
- self.sorted_payment_method_classes = []
7
-
8
- # Allows your store to void unused payments and release auths
9
- class_attribute :void_unused_payments
10
- self.void_unused_payments = false
11
-
12
- class_attribute :failure_handler
13
- self.failure_handler = ->(failures) { raise Spree::OrderCapturingFailures.new(failures.to_json) }
14
-
15
- def initialize(order, sorted_payment_method_classes = nil)
16
- Spree::Deprecation.warn "Spree::OrderCapturing is deprecated and will be removed without replacement. " \
17
- "Please implement your own automated capturing logic in your store."
18
- @order = order
19
- @sorted_payment_method_classes = sorted_payment_method_classes || Spree::OrderCapturing.sorted_payment_method_classes
20
- end
21
-
22
- def capture_payments
23
- return if @order.paid?
24
-
25
- Spree::OrderMutex.with_lock!(@order) do
26
- uncaptured_amount = @order.display_total.cents
27
-
28
- sorted_payments(@order).each do |payment|
29
- amount = [uncaptured_amount, payment.money.cents].min
30
-
31
- if amount > 0
32
- payment.capture!(amount)
33
- uncaptured_amount -= amount
34
- elsif Spree::OrderCapturing.void_unused_payments
35
- payment.void_transaction!
36
- end
37
- end
38
- end
39
- end
40
-
41
- private
42
-
43
- def sorted_payments(order)
44
- order.payments.pending.sort_by do |payment|
45
- [@sorted_payment_method_classes.index(payment.payment_method.class), payment.id]
46
- end
47
- end
48
- end
49
-
50
- class Spree::OrderCapturingFailures < StandardError; end
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Spree::PromotionHandler
4
- FreeShipping = ActiveSupport::Deprecation::DeprecatedConstantProxy.new(
5
- 'Spree::PromotionHandler::FreeShipping',
6
- 'Spree::PromotionHandler::Shipping',
7
- Spree::Deprecation,
8
- )
9
- end
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'generators/solidus/install/install_generator'
4
-
5
- module Spree
6
- # @private
7
- class InstallGenerator < Solidus::InstallGenerator
8
- def print_deprecation_warning
9
- puts " "
10
- puts "*" * 50
11
- puts "spree:install generator is deprecated, please use solidus:install."
12
- puts " "
13
- end
14
- end
15
- end
@@ -1,41 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Solidus
4
- module Migrations
5
- class RenameGateways
6
- DEFAULT_MAPPING = {
7
- 'Spree::Gateway' => 'Spree::PaymentMethod::CreditCard',
8
- 'Spree::Gateway::Bogus' => 'Spree::PaymentMethod::BogusCreditCard',
9
- 'Spree::Gateway::BogusSimple' => 'Spree::PaymentMethod::SimpleBogusCreditCard'
10
- }
11
-
12
- attr_reader :gateway_mapping
13
-
14
- def initialize(gateway_mapping = DEFAULT_MAPPING)
15
- Spree::Deprecation.warn 'Solidus::Migrations::RenameGateways is deprecated and will be removed with Solidus 3.0.'
16
-
17
- @gateway_mapping = gateway_mapping
18
- end
19
-
20
- def up
21
- gateway_mapping.inject(0) do |count, mapping|
22
- count + update(from: mapping[0], to: mapping[1])
23
- end
24
- end
25
-
26
- def down
27
- gateway_mapping.inject(0) do |count, mapping|
28
- count + update(from: mapping[1], to: mapping[0])
29
- end
30
- end
31
-
32
- private
33
-
34
- def update(from:, to:)
35
- ActiveRecord::Base.connection.update <<-SQL.strip_heredoc
36
- UPDATE spree_payment_methods SET type = '#{to}' WHERE type = '#{from}';
37
- SQL
38
- end
39
- end
40
- end
41
- end
@@ -1,24 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Default class for deciding what the current store is, given an HTTP request
4
- # This is an extension point used in Spree::Core::ControllerHelpers::Store
5
- # Custom versions of this class must respond to a store instance method
6
- module Spree
7
- module Core
8
- class CurrentStore
9
- def initialize(request)
10
- @request = request
11
- @current_store_selector = Spree::Config.current_store_selector_class.new(request)
12
- Spree::Deprecation.warn "Using Spree::Core::CurrentStore is deprecated. Use Spree::Config.current_store_selector_class instead", caller
13
- end
14
-
15
- # Delegate store selection to Spree::Config.current_store_selector_class
16
- # Using this class is deprecated.
17
- #
18
- # @return [Spree::Store]
19
- def store
20
- @current_store_selector.store
21
- end
22
- end
23
- end
24
- end
@@ -1,41 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Spree
4
- module ParanoiaDeprecations
5
- module InstanceMethods
6
- def paranoia_destroy
7
- Spree::Deprecation.warn <<~WARN, caller
8
- Calling #destroy (or #paranoia_destroy) on a #{self.class} currently performs a soft-destroy using the paranoia gem.
9
- In Solidus 3.0, paranoia will be removed, and this will perform a HARD destroy instead. To continue soft-deleting, use #discard instead.
10
- WARN
11
- super
12
- end
13
-
14
- def paranoia_delete
15
- Spree::Deprecation.warn <<~WARN, caller
16
- Calling #delete (or #paranoia_delete) on a #{self.class} currently performs a soft-destroy using the paranoia gem.
17
- In Solidus 3.0, paranoia will be removed, and this will perform a HARD destroy instead. To continue soft-deleting, use #discard instead.
18
- WARN
19
- super
20
- end
21
- end
22
-
23
- module ClassMethods
24
- def with_deleted
25
- Spree::Deprecation.warn <<~WARN, caller
26
- #{self}.with_deleted has been deprecated. Use #{self}.with_discarded instead.
27
- In Solidus 3.0, paranoia will be removed, and this method will be replaced by #{self}.with_discarded.
28
- WARN
29
- super
30
- end
31
-
32
- def only_deleted
33
- Spree::Deprecation.warn <<~WARN, caller
34
- #{self}.only_deleted has been deprecated. Use #{self}.discarded instead.
35
- In Solidus 3.0, paranoia will be removed, and this method will be replaced by #{self}.discarded.
36
- WARN
37
- super
38
- end
39
- end
40
- end
41
- end
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Spree
4
- module Preferences
5
- module Persistable
6
- extend ActiveSupport::Concern
7
-
8
- included do
9
- include Spree::Preferences::Preferable
10
- serialize :preferences, Hash
11
- after_initialize :initialize_preference_defaults
12
- end
13
-
14
- private
15
-
16
- def initialize_preference_defaults
17
- if has_attribute?(:preferences)
18
- self.preferences = default_preferences.merge(preferences)
19
- end
20
- end
21
- end
22
- end
23
- end
@@ -1,12 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Spree
4
- module Promo
5
- Environment =
6
- ActiveSupport::Deprecation::DeprecatedConstantProxy.new(
7
- 'Spree::Promo::Environment',
8
- 'Spree::Core::Environment::Promotions',
9
- Spree::Deprecation
10
- )
11
- end
12
- end
@@ -1,19 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- Spree::Deprecation.warn "BarAbility is deprecated. Use stub_authorization! instead"
4
-
5
- # Fake ability for testing administration
6
- # @private
7
- class BarAbility
8
- include CanCan::Ability
9
-
10
- def initialize(user)
11
- user ||= Spree::User.new
12
- if user.has_spree_role? 'bar'
13
- # allow dispatch to :admin, :index, and :show on Spree::Order
14
- can [:admin, :index, :show], Spree::Order
15
- # allow dispatch to :index, :show, :create and :update shipments on the admin
16
- can [:admin, :manage], Spree::Shipment
17
- end
18
- end
19
- end
@@ -1 +0,0 @@
1
- This is a text file
data/lib/tasks/core.rake DELETED
@@ -1,104 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'active_record'
4
-
5
- def prompt_for_agree(prompt)
6
- print prompt
7
- ["y", "yes"].include? STDIN.gets.strip.downcase
8
- end
9
-
10
- namespace :db do
11
- desc 'Loads a specified fixture file:
12
- use rake db:load_file[/absolute/path/to/sample/filename.rb]'
13
-
14
- task :load_file, [:file, :dir] => :environment do |_t, args|
15
- Spree::Deprecation.warn("load_file has been deprecated. Please load your own file.")
16
- file = Pathname.new(args.file)
17
-
18
- puts "loading ruby #{file}"
19
- require file
20
- end
21
-
22
- desc "Loads fixtures from the the dir you specify using rake db:load_dir[loadfrom]"
23
- task :load_dir, [:dir] => :environment do |_t, args|
24
- Spree::Deprecation.warn("rake spree:load_dir has been deprecated and will be removed with Solidus 3.0. Please load your files directly.")
25
- dir = args.dir
26
- dir = File.join(Rails.root, "db", dir) if Pathname.new(dir).relative?
27
-
28
- ruby_files = {}
29
- Dir.glob(File.join(dir, '**/*.{rb}')).each do |fixture_file|
30
- ruby_files[File.basename(fixture_file, '.*')] = fixture_file
31
- end
32
- ruby_files.sort.each do |fixture, ruby_file|
33
- # If file is exists within application it takes precendence.
34
- if File.exist?(File.join(Rails.root, "db/default/spree", "#{fixture}.rb"))
35
- ruby_file = File.expand_path(File.join(Rails.root, "db/default/spree", "#{fixture}.rb"))
36
- end
37
- # an invoke will only execute the task once
38
- Rake::Task["db:load_file"].execute( Rake::TaskArguments.new([:file], [ruby_file]) )
39
- end
40
- end
41
-
42
- desc "Migrate schema to version 0 and back up again. WARNING: Destroys all data in tables!!"
43
- task remigrate: :environment do
44
- Spree::Deprecation.warn("remigrate has been deprecated. Please use db:reset or other db: commands instead.")
45
-
46
- if ENV['SKIP_NAG'] || ENV['OVERWRITE'].to_s.casecmp('true') || prompt_for_agree("This task will destroy any data in the database. Are you sure you want to \ncontinue? [y/n] ")
47
-
48
- # Drop all tables
49
- ActiveRecord::Base.connection.tables.each { |t| ActiveRecord::Base.connection.drop_table t }
50
-
51
- # Migrate upward
52
- Rake::Task["db:migrate"].invoke
53
-
54
- # Dump the schema
55
- Rake::Task["db:schema:dump"].invoke
56
- else
57
- puts "Task cancelled."
58
- exit
59
- end
60
- end
61
-
62
- desc "Bootstrap is: migrating, loading defaults, sample data and seeding (for all extensions) and load_products tasks"
63
- task :bootstrap do
64
- Spree::Deprecation.warn("rake bootstrap has been deprecated, please run db:setup instead.")
65
-
66
- # remigrate unless production mode (as saftey check)
67
- if %w[demo development test].include? Rails.env
68
- if ENV['AUTO_ACCEPT'] || prompt_for_agree("This task will destroy any data in the database. Are you sure you want to \ncontinue? [y/n] ")
69
- ENV['SKIP_NAG'] = 'yes'
70
- Rake::Task["db:create"].invoke
71
- Rake::Task["db:remigrate"].invoke
72
- else
73
- puts "Task cancelled, exiting."
74
- exit
75
- end
76
- else
77
- puts "NOTE: Bootstrap in production mode will not drop database before migration"
78
- Rake::Task["db:migrate"].invoke
79
- end
80
-
81
- ActiveRecord::Base.send(:subclasses).each(&:reset_column_information)
82
-
83
- load_defaults = Spree::Country.count == 0
84
- load_defaults ||= prompt_for_agree('Countries present, load sample data anyways? [y/n]: ')
85
- if load_defaults
86
- Rake::Task["db:seed"].invoke
87
- end
88
-
89
- if Rails.env.production? && Spree::Product.count > 0
90
- load_sample = prompt_for_agree("WARNING: In Production and products exist in database, load sample data anyways? [y/n]:" )
91
- else
92
- load_sample = true if ENV['AUTO_ACCEPT']
93
- load_sample ||= prompt_for_agree('Load Sample Data? [y/n]: ')
94
- end
95
-
96
- if load_sample
97
- # Reload models' attributes in case they were loaded in old migrations with wrong attributes
98
- ActiveRecord::Base.descendants.each(&:reset_column_information)
99
- Rake::Task["spree_sample:load"].invoke
100
- end
101
-
102
- puts "Bootstrap Complete.\n\n"
103
- end
104
- end
data/lib/tasks/email.rake DELETED
@@ -1,12 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- namespace :email do
4
- desc 'Sends test email to specified address - Example: EMAIL=solidus@example.com bundle exec rake email:test'
5
- task test: :environment do
6
- Spree::Deprecation.warn("rake email:test has been deprecated and will be removed with Solidus 3.0")
7
-
8
- raise ArgumentError, "Must pass EMAIL environment variable. Example: EMAIL=solidus@example.com bundle exec rake email:test" if ENV['EMAIL'].blank?
9
-
10
- Spree::TestMailer.test_email(ENV['EMAIL']).deliver!
11
- end
12
- end