solidus_core 2.11.17 → 3.0.0.rc2
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.erb +0 -51
- data/app/helpers/spree/store_helper.rb +0 -11
- data/app/mailers/spree/carton_mailer.rb +1 -5
- data/app/models/concerns/spree/active_storage_adapter/attachment.rb +11 -13
- data/app/models/concerns/spree/active_storage_adapter.rb +0 -2
- data/app/models/concerns/spree/adjustment_source.rb +0 -15
- data/app/models/concerns/spree/calculated_adjustments.rb +0 -18
- data/app/models/concerns/spree/soft_deletable.rb +2 -4
- data/app/models/concerns/spree/user_address_book.rb +0 -37
- data/app/models/concerns/spree/user_methods.rb +2 -11
- data/app/models/spree/ability.rb +0 -37
- data/app/models/spree/address/name.rb +2 -20
- data/app/models/spree/address.rb +8 -187
- data/app/models/spree/adjustment.rb +0 -28
- data/app/models/spree/base.rb +12 -48
- data/app/models/spree/calculator/flexi_rate.rb +0 -5
- data/app/models/spree/calculator.rb +0 -11
- data/app/models/spree/country.rb +1 -6
- data/app/models/spree/credit_card.rb +0 -27
- data/app/models/spree/customer_return.rb +1 -4
- data/app/models/spree/image/active_storage_attachment.rb +2 -10
- data/app/models/spree/image/paperclip_attachment.rb +1 -1
- data/app/models/spree/image.rb +0 -7
- data/app/models/spree/inventory_unit.rb +0 -21
- data/app/models/spree/line_item.rb +2 -45
- data/app/models/spree/log_entry.rb +1 -74
- data/app/models/spree/order.rb +4 -137
- data/app/models/spree/order_cancellations.rb +4 -24
- data/app/models/spree/order_shipping.rb +9 -6
- data/app/models/spree/order_updater.rb +2 -11
- data/app/models/spree/payment/cancellation.rb +3 -22
- data/app/models/spree/payment.rb +0 -3
- data/app/models/spree/payment_create.rb +1 -13
- data/app/models/spree/payment_method/bogus_credit_card.rb +9 -13
- data/app/models/spree/payment_method/credit_card.rb +1 -3
- data/app/models/spree/payment_method/simple_bogus_credit_card.rb +4 -4
- data/app/models/spree/payment_method.rb +2 -106
- data/app/models/spree/product/scopes.rb +0 -27
- data/app/models/spree/product.rb +0 -39
- data/app/models/spree/promotion/actions/create_adjustment.rb +0 -3
- data/app/models/spree/promotion/actions/create_item_adjustments.rb +0 -3
- data/app/models/spree/promotion/actions/create_quantity_adjustments.rb +0 -3
- data/app/models/spree/promotion/rules/taxon.rb +2 -15
- data/app/models/spree/promotion.rb +2 -6
- data/app/models/spree/promotion_action.rb +2 -12
- data/app/models/spree/promotion_code/batch_builder.rb +0 -14
- data/app/models/spree/promotion_code.rb +2 -2
- data/app/models/spree/promotion_rule.rb +0 -4
- data/app/models/spree/refund.rb +0 -60
- data/app/models/spree/reimbursement.rb +3 -41
- data/app/models/spree/reimbursement_performer.rb +2 -8
- data/app/models/spree/reimbursement_type/credit.rb +1 -4
- data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +1 -2
- data/app/models/spree/reimbursement_type/store_credit.rb +1 -4
- data/app/models/spree/return_authorization.rb +1 -4
- data/app/models/spree/return_item.rb +1 -19
- data/app/models/spree/shipment.rb +1 -54
- data/app/models/spree/shipping_method.rb +0 -25
- data/app/models/spree/shipping_rate.rb +0 -2
- data/app/models/spree/state.rb +0 -4
- data/app/models/spree/stock/simple_coordinator.rb +1 -20
- data/app/models/spree/stock/splitter/base.rb +2 -7
- data/app/models/spree/stock_item.rb +1 -7
- data/app/models/spree/store.rb +0 -12
- data/app/models/spree/store_credit.rb +0 -8
- data/app/models/spree/store_credit_category.rb +0 -32
- data/app/models/spree/tax_calculator/shipping_rate.rb +1 -12
- data/app/models/spree/tax_rate.rb +0 -27
- data/app/models/spree/taxon/active_storage_attachment.rb +0 -5
- data/app/models/spree/taxon/paperclip_attachment.rb +0 -5
- data/app/models/spree/taxon.rb +0 -11
- data/app/models/spree/user_address.rb +0 -5
- data/app/models/spree/variant.rb +2 -46
- data/config/locales/en.yml +0 -8
- data/db/migrate/20180416083007_add_apply_to_all_to_variant_property_rule.rb +1 -1
- data/lib/generators/solidus/install/install_generator.rb +13 -2
- data/lib/generators/solidus/install/templates/config/initializers/spree.rb.tt +3 -39
- data/lib/generators/spree/dummy/dummy_generator.rb +2 -1
- data/lib/generators/spree/dummy/templates/rails/database.yml +6 -1
- data/lib/generators/spree/dummy/templates/rails/storage.yml +3 -0
- data/lib/generators/spree/dummy/templates/rails/test.rb +2 -0
- data/lib/spree/app_configuration.rb +6 -89
- data/lib/spree/core/class_constantizer.rb +2 -0
- data/lib/spree/core/controller_helpers/auth.rb +1 -14
- data/lib/spree/core/controller_helpers/order.rb +2 -22
- data/lib/spree/core/controller_helpers/payment_parameters.rb +0 -54
- data/lib/spree/core/controller_helpers/pricing.rb +0 -8
- data/lib/spree/core/controller_helpers/strong_parameters.rb +0 -4
- data/lib/spree/core/engine.rb +0 -49
- data/lib/spree/core/environment_extension.rb +0 -9
- data/lib/spree/core/product_filters.rb +0 -40
- data/lib/spree/core/role_configuration.rb +0 -14
- data/lib/spree/core/search/base.rb +0 -26
- data/lib/spree/core/state_machines.rb +2 -11
- data/lib/spree/core/validators/email.rb +1 -1
- data/lib/spree/core/version.rb +1 -1
- data/lib/spree/core.rb +9 -8
- data/lib/spree/event/configuration.rb +0 -5
- data/lib/spree/event/subscriber.rb +0 -18
- data/lib/spree/event/subscriber_registry.rb +3 -1
- data/lib/spree/event.rb +0 -31
- data/lib/spree/i18n.rb +0 -22
- data/lib/spree/money.rb +3 -18
- data/lib/spree/permitted_attributes.rb +3 -60
- data/lib/spree/testing_support/blacklist_urls.rb +1 -1
- data/lib/spree/testing_support/capybara_ext.rb +0 -30
- data/lib/spree/testing_support/controller_requests.rb +0 -82
- data/lib/spree/testing_support/dummy_app/migrations.rb +0 -3
- data/lib/spree/testing_support/dummy_app.rb +6 -16
- data/lib/spree/testing_support/factories/order_factory.rb +0 -1
- data/lib/spree/testing_support/factories/refund_factory.rb +0 -1
- data/lib/spree/testing_support/factories/user_factory.rb +0 -6
- data/lib/spree/testing_support/order_walkthrough.rb +0 -3
- data/lib/spree/testing_support/preferences.rb +0 -25
- data/lib/spree/testing_support.rb +1 -1
- data/lib/tasks/migrations/migrate_default_billing_addresses_to_address_book.rake +20 -15
- data/solidus_core.gemspec +1 -25
- metadata +9 -94
- data/app/mailers/spree/test_mailer.rb +0 -13
- data/app/models/concerns/spree/user_payment_source.rb +0 -26
- data/app/models/spree/calculator/free_shipping.rb +0 -22
- data/app/models/spree/calculator/percent_per_item.rb +0 -51
- data/app/models/spree/calculator/price_sack.rb +0 -28
- data/app/models/spree/gateway/bogus.rb +0 -13
- data/app/models/spree/gateway/bogus_simple.rb +0 -13
- data/app/models/spree/gateway.rb +0 -14
- data/app/models/spree/order/checkout.rb +0 -244
- data/app/models/spree/order_capturing.rb +0 -50
- data/app/models/spree/promotion_handler/free_shipping.rb +0 -9
- data/lib/generators/spree/install/install_generator.rb +0 -15
- data/lib/solidus/migrations/rename_gateways.rb +0 -41
- data/lib/spree/core/current_store.rb +0 -24
- data/lib/spree/paranoia_deprecations.rb +0 -41
- data/lib/spree/preferences/persistable.rb +0 -23
- data/lib/spree/promo/environment.rb +0 -12
- data/lib/spree/testing_support/bar_ability.rb +0 -19
- data/lib/spree/testing_support/fixtures/file.txt +0 -1
- data/lib/tasks/core.rake +0 -104
- data/lib/tasks/email.rake +0 -12
- data/lib/tasks/migrations/copy_order_bill_address_to_credit_card.rake +0 -119
- data/lib/tasks/migrations/migrate_shipping_rate_taxes.rake +0 -22
- data/lib/tasks/migrations/migrate_user_addresses.rake +0 -34
- data/lib/tasks/migrations/rename_gateways.rake +0 -23
- data/lib/tasks/order_capturing.rake +0 -27
- 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,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,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
|