solidus_core 3.0.0 → 4.5.1
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/README.md +1 -2
- data/Rakefile +7 -2
- data/app/assets/images/logo/solidus.svg +18 -1
- data/app/assets/images/logo/solidus_logo.png +0 -0
- data/app/controllers/spree/base_controller.rb +1 -3
- data/app/helpers/spree/base_helper.rb +3 -3
- data/app/helpers/spree/core/controller_helpers/auth.rb +66 -0
- data/app/helpers/spree/core/controller_helpers/common.rb +82 -0
- data/app/helpers/spree/core/controller_helpers/order.rb +86 -0
- data/app/helpers/spree/core/controller_helpers/payment_parameters.rb +165 -0
- data/{lib/spree/core/controller_helpers/current_host.rb → app/helpers/spree/core/controller_helpers/pricing.rb} +6 -4
- data/app/helpers/spree/core/controller_helpers/search.rb +16 -0
- data/app/helpers/spree/core/controller_helpers/store.rb +19 -0
- data/app/helpers/spree/core/controller_helpers/strong_parameters.rb +74 -0
- data/app/helpers/spree/products_helper.rb +2 -2
- data/app/mailers/spree/base_mailer.rb +1 -1
- data/app/mailers/spree/carton_mailer.rb +1 -1
- data/app/mailers/spree/order_mailer.rb +3 -3
- data/app/mailers/spree/reimbursement_mailer.rb +1 -1
- data/app/models/concerns/spree/active_storage_adapter/attachment.rb +30 -11
- data/app/models/concerns/spree/active_storage_adapter/normalization.rb +1 -1
- data/app/models/concerns/spree/active_storage_adapter.rb +1 -18
- data/app/models/concerns/spree/default_price.rb +30 -10
- data/app/models/concerns/spree/display_money.rb +1 -1
- data/app/models/concerns/spree/metadata.rb +64 -0
- data/app/models/concerns/spree/named_type.rb +2 -0
- data/app/models/concerns/spree/ordered_property_value_list.rb +2 -2
- data/app/models/concerns/spree/ransackable_attributes.rb +9 -5
- data/app/models/concerns/spree/user_address_book.rb +19 -10
- data/app/models/concerns/spree/user_methods.rb +40 -6
- data/app/models/spree/address.rb +11 -9
- data/app/models/spree/adjustment.rb +15 -76
- data/app/models/spree/adjustment_reason.rb +2 -0
- data/app/models/spree/calculator/flat_fee.rb +21 -0
- data/app/models/spree/calculator/returns/default_refund_amount.rb +1 -1
- data/app/models/spree/carton.rb +3 -3
- data/app/models/spree/core/state_machines/inventory_unit.rb +42 -0
- data/app/models/spree/core/state_machines/order/class_methods.rb +217 -0
- data/app/models/spree/core/state_machines/order.rb +42 -0
- data/app/models/spree/core/state_machines/payment.rb +61 -0
- data/app/models/spree/core/state_machines/reimbursement.rb +33 -0
- data/app/models/spree/core/state_machines/return_authorization.rb +32 -0
- data/app/models/spree/core/state_machines/return_item/acceptance_status.rb +51 -0
- data/app/models/spree/core/state_machines/return_item/reception_status.rb +42 -0
- data/app/models/spree/core/state_machines/shipment.rb +58 -0
- data/app/models/spree/country.rb +1 -1
- data/app/models/spree/credit_card.rb +13 -10
- data/app/models/spree/customer_return.rb +6 -3
- data/app/models/spree/deprecated_configurable_class.rb +40 -0
- data/app/models/spree/fulfilment_changer.rb +56 -29
- data/app/models/spree/image/active_storage_attachment.rb +2 -7
- data/app/models/spree/image/paperclip_attachment.rb +2 -2
- data/app/models/spree/inventory_unit.rb +2 -2
- data/app/models/spree/item_total.rb +28 -0
- data/app/models/spree/legacy_user.rb +1 -0
- data/app/models/spree/line_item.rb +26 -8
- data/app/models/spree/log_entry.rb +98 -1
- data/app/models/spree/money.rb +120 -0
- data/app/models/spree/null_promotion_adjuster.rb +13 -0
- data/app/models/spree/null_promotion_advertiser.rb +9 -0
- data/app/models/spree/null_promotion_finder.rb +9 -0
- data/app/models/spree/null_promotion_handler.rb +44 -0
- data/app/models/spree/option_type.rb +1 -1
- data/app/models/spree/option_value.rb +4 -3
- data/app/models/spree/order/number_generator.rb +7 -1
- data/app/models/spree/order.rb +143 -96
- data/app/models/spree/order_cancellations.rb +8 -8
- data/app/models/spree/order_inventory.rb +7 -5
- data/app/models/spree/order_merger.rb +5 -7
- data/app/models/spree/order_mutex.rb +2 -2
- data/app/models/spree/order_shipping.rb +15 -19
- data/app/models/spree/order_taxation.rb +7 -4
- data/app/models/spree/order_update_attributes.rb +3 -1
- data/app/models/spree/order_updater.rb +25 -63
- data/app/models/spree/payment/processing.rb +60 -57
- data/app/models/spree/payment.rb +14 -27
- data/app/models/spree/payment_create.rb +1 -1
- data/app/models/spree/payment_method/bogus_credit_card.rb +18 -14
- data/app/models/spree/payment_method/credit_card.rb +0 -4
- data/app/models/spree/payment_method/simple_bogus_credit_card.rb +18 -4
- data/app/models/spree/payment_method/store_credit.rb +1 -1
- data/app/models/spree/payment_method.rb +29 -10
- data/app/models/spree/payment_source.rb +5 -1
- data/app/models/spree/permission_set.rb +11 -0
- data/app/models/spree/permission_sets/base.rb +45 -0
- data/app/models/spree/permission_sets/configuration_display.rb +53 -0
- data/app/models/spree/permission_sets/configuration_management.rb +52 -0
- data/app/models/spree/permission_sets/dashboard_display.rb +28 -0
- data/app/models/spree/permission_sets/default_customer.rb +83 -0
- data/app/models/spree/permission_sets/order_display.rb +50 -0
- data/app/models/spree/permission_sets/order_management.rb +50 -0
- data/app/models/spree/permission_sets/product_display.rb +43 -0
- data/app/models/spree/permission_sets/product_management.rb +47 -0
- data/app/models/spree/permission_sets/restricted_stock_display.rb +33 -0
- data/app/models/spree/permission_sets/restricted_stock_management.rb +33 -0
- data/app/models/spree/permission_sets/stock_display.rb +26 -0
- data/app/models/spree/permission_sets/stock_management.rb +26 -0
- data/app/models/spree/permission_sets/super_user.rb +26 -0
- data/app/models/spree/permission_sets/user_display.rb +27 -0
- data/app/models/spree/permission_sets/user_management.rb +44 -0
- data/app/models/spree/preference.rb +1 -1
- data/app/models/spree/price.rb +3 -3
- data/app/models/spree/product/scopes.rb +23 -10
- data/app/models/spree/product.rb +30 -23
- data/app/models/spree/product_property.rb +1 -1
- data/app/models/spree/property.rb +1 -1
- data/app/models/spree/refund.rb +13 -3
- data/app/models/spree/refund_reason.rb +6 -1
- data/app/models/spree/reimbursement.rb +6 -6
- data/app/models/spree/reimbursement_performer.rb +3 -3
- data/app/models/spree/reimbursement_tax_calculator.rb +3 -3
- data/app/models/spree/reimbursement_type/credit.rb +1 -1
- data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +6 -6
- data/app/models/spree/reimbursement_type/store_credit.rb +1 -1
- data/app/models/spree/reimbursement_type.rb +6 -1
- data/app/models/spree/return_authorization.rb +3 -1
- data/app/models/spree/return_item.rb +13 -15
- data/app/models/spree/return_reason.rb +6 -1
- data/app/models/spree/role.rb +3 -1
- data/app/models/spree/role_permission.rb +8 -0
- data/app/models/spree/shipment.rb +12 -10
- data/app/models/spree/shipping_category.rb +2 -0
- data/app/models/spree/shipping_rate.rb +2 -3
- data/app/models/spree/shipping_rate_tax.rb +1 -1
- data/app/models/spree/{order_contents.rb → simple_order_contents.rb} +10 -13
- data/app/models/spree/state.rb +1 -1
- data/app/models/spree/stock/allocator/on_hand_first.rb +2 -2
- data/app/models/spree/stock/availability.rb +11 -3
- data/app/models/spree/stock/estimator.rb +1 -1
- data/app/models/spree/stock/inventory_unit_builder.rb +1 -1
- data/app/models/spree/stock/package.rb +2 -2
- data/app/models/spree/stock/quantifier.rb +12 -8
- data/app/models/spree/stock/simple_coordinator.rb +38 -28
- data/app/models/spree/stock/splitter/shipping_category.rb +1 -1
- data/app/models/spree/stock_item.rb +2 -1
- data/app/models/spree/stock_location.rb +7 -7
- data/app/models/spree/stock_movement.rb +2 -2
- data/app/models/spree/store.rb +3 -1
- data/app/models/spree/store_credit.rb +31 -16
- data/app/models/spree/store_credit_event.rb +4 -3
- data/app/models/spree/store_credit_prioritizer.rb +17 -0
- data/app/models/spree/store_credit_reason.rb +6 -1
- data/app/models/spree/store_selector/by_server_name.rb +1 -1
- data/app/models/spree/tax/item_tax.rb +3 -2
- data/app/models/spree/tax/order_tax.rb +3 -1
- data/app/models/spree/tax/tax_helpers.rb +14 -3
- data/app/models/spree/tax/tax_location.rb +4 -7
- data/app/models/spree/tax_calculator/default.rb +32 -1
- data/app/models/spree/tax_calculator/shipping_rate.rb +2 -2
- data/app/models/spree/tax_category.rb +3 -1
- data/app/models/spree/tax_rate.rb +14 -1
- data/app/models/spree/taxon/active_storage_attachment.rb +2 -2
- data/app/models/spree/taxon/paperclip_attachment.rb +4 -4
- data/app/models/spree/taxon.rb +25 -3
- data/app/models/spree/taxon_brand_selector.rb +22 -0
- data/app/models/spree/taxonomy.rb +4 -3
- data/app/models/spree/unauthorized_redirect_handler.rb +24 -0
- data/app/models/spree/unit_cancel.rb +1 -2
- data/app/models/spree/user_address.rb +9 -3
- data/app/models/spree/user_last_url_storer/rules/authentication_rule.rb +1 -1
- data/app/models/spree/variant/price_selector.rb +25 -8
- data/app/models/spree/variant/scopes.rb +4 -0
- data/app/models/spree/variant/vat_price_generator.rb +1 -1
- data/app/models/spree/variant.rb +64 -37
- data/app/models/spree/wallet/add_payment_sources_to_wallet.rb +4 -4
- data/app/models/spree/wallet.rb +2 -2
- data/app/models/spree/zone.rb +1 -1
- data/app/subscribers/spree/order_mailer_subscriber.rb +35 -0
- data/app/views/layouts/spree/base_mailer.html.erb +2 -2
- data/app/views/spree/order_mailer/cancel_email.html.erb +1 -1
- data/app/views/spree/order_mailer/cancel_email.text.erb +1 -1
- data/app/views/spree/order_mailer/confirm_email.html.erb +5 -5
- data/app/views/spree/order_mailer/confirm_email.text.erb +5 -5
- data/app/views/spree/order_mailer/inventory_cancellation_email.html.erb +0 -1
- data/config/i18n-tasks.yml +134 -0
- data/config/locales/en.yml +439 -338
- data/db/default/spree/permission_sets.rb +10 -0
- data/db/default/spree/return_reasons.rb +3 -1
- data/db/default/spree/states.rb +2 -2
- data/db/migrate/20160101010000_solidus_one_four.rb +0 -127
- data/db/migrate/20180710170104_create_spree_store_credit_reasons_table.rb +2 -2
- data/db/migrate/20201127212108_add_type_before_removal_to_spree_payment_methods.rb +7 -0
- data/db/migrate/20210312061050_change_column_null_on_prices.rb +7 -0
- data/db/migrate/20210815004823_add_unique_index_to_option_values_variants.rb +16 -0
- data/db/migrate/20220419170826_remove_archived_user_addresses.rb +12 -0
- data/db/migrate/20220805202442_add_level_to_spree_tax_rates.rb +5 -0
- data/db/migrate/20221123152807_add_shipping_category_to_spree_variants.rb +5 -0
- data/db/migrate/20230321161854_change_column_null_option_values_option_type_id.rb +5 -0
- data/db/migrate/20230425103509_remove_taxon_position.rb +5 -0
- data/db/migrate/20230427095534_drop_deprecated_address_id_from_shipments.rb +11 -0
- data/db/migrate/20240821173254_create_spree_permission_sets_in_core.rb +9 -0
- data/db/migrate/20240821173341_create_spree_roles_permissions_in_core.rb +9 -0
- data/db/migrate/20240821173641_add_description_to_spree_roles.rb +5 -0
- data/db/migrate/20240904152041_add_privilege_and_category_to_spree_permission_sets.rb +6 -0
- data/db/migrate/20250129061658_add_metadata_to_spree_resources.rb +28 -0
- data/db/migrate/20250201172950_add_gtin_and_condition_to_spree_variant.rb +6 -0
- data/db/migrate/20250207104016_add_primary_taxon_to_products.rb +7 -0
- data/db/migrate/20250221152004_add_metadata_to_users.rb +13 -0
- data/db/seeds.rb +5 -1
- data/lib/generators/solidus/install/app_templates/authentication/custom.rb +16 -0
- data/lib/generators/solidus/install/app_templates/authentication/devise.rb +16 -0
- data/lib/generators/solidus/install/app_templates/authentication/existing.rb +10 -0
- data/lib/generators/solidus/install/app_templates/authentication/none.rb +1 -0
- data/lib/generators/solidus/install/app_templates/frontend/none.rb +1 -0
- data/lib/generators/solidus/install/app_templates/frontend/starter.rb +1 -0
- data/lib/generators/solidus/install/app_templates/payment_method/braintree.rb +5 -0
- data/lib/generators/solidus/install/app_templates/payment_method/none.rb +1 -0
- data/lib/generators/solidus/install/app_templates/payment_method/paypal.rb +5 -0
- data/lib/generators/solidus/install/app_templates/payment_method/stripe.rb +5 -0
- data/lib/generators/solidus/install/install_generator.rb +210 -156
- data/lib/generators/solidus/install/templates/config/initializers/spree.rb.tt +27 -33
- data/lib/generators/solidus/install/templates/vendor/assets/javascripts/spree/backend/all.js +2 -2
- data/lib/generators/solidus/update/templates/config/initializers/new_solidus_defaults.rb.tt +30 -0
- data/lib/generators/solidus/update/update_generator.rb +124 -0
- data/lib/generators/spree/custom_user/custom_user_generator.rb +6 -4
- data/lib/generators/spree/custom_user/templates/authentication_helpers.rb.tt +2 -6
- data/lib/generators/spree/custom_user/templates/migration.rb.tt +7 -3
- data/lib/generators/spree/dummy/dummy_generator.rb +12 -9
- data/lib/generators/spree/dummy/templates/rails/application.rb.tt +1 -2
- data/lib/generators/spree/dummy/templates/rails/database.yml +48 -63
- data/lib/generators/spree/dummy/templates/rails/manifest.js +3 -0
- data/lib/generators/spree/dummy/templates/rails/test.rb +7 -2
- data/lib/spree/app_configuration.rb +220 -71
- data/lib/spree/bus.rb +11 -0
- data/lib/spree/core/class_constantizer.rb +2 -2
- data/lib/spree/core/controller_helpers/auth.rb +5 -69
- data/lib/spree/core/controller_helpers/common.rb +5 -80
- data/lib/spree/core/controller_helpers/order.rb +5 -86
- data/lib/spree/core/controller_helpers/payment_parameters.rb +5 -165
- data/lib/spree/core/controller_helpers/pricing.rb +5 -17
- data/lib/spree/core/controller_helpers/search.rb +5 -14
- data/lib/spree/core/controller_helpers/store.rb +5 -17
- data/lib/spree/core/controller_helpers/strong_parameters.rb +5 -71
- data/lib/spree/core/engine.rb +49 -16
- data/lib/spree/core/environment/calculators.rb +35 -3
- data/lib/spree/core/environment/promotions.rb +25 -4
- data/lib/spree/core/environment_extension.rb +16 -2
- data/lib/spree/core/importer/order.rb +6 -6
- data/lib/spree/core/importer/product.rb +3 -3
- data/lib/spree/core/nested_class_set.rb +28 -0
- data/lib/spree/core/null_promotion_configuration.rb +84 -0
- data/lib/spree/core/product_duplicator.rb +1 -1
- data/lib/spree/core/product_filters.rb +2 -2
- data/lib/spree/core/search/base.rb +18 -9
- data/lib/spree/core/search/variant.rb +2 -2
- data/lib/spree/core/state_machines/inventory_unit.rb +5 -40
- data/lib/spree/core/state_machines/order.rb +5 -247
- data/lib/spree/core/state_machines/payment.rb +5 -59
- data/lib/spree/core/state_machines/reimbursement.rb +5 -31
- data/lib/spree/core/state_machines/return_authorization.rb +5 -30
- data/lib/spree/core/state_machines/return_item/acceptance_status.rb +5 -49
- data/lib/spree/core/state_machines/return_item/reception_status.rb +5 -40
- data/lib/spree/core/state_machines/shipment.rb +5 -56
- data/lib/spree/core/state_machines.rb +48 -81
- data/lib/spree/core/stock_configuration.rb +18 -0
- data/lib/spree/core/validators/email.rb +2 -4
- data/lib/spree/core/version.rb +5 -1
- data/lib/spree/core/versioned_value.rb +75 -0
- data/lib/spree/core.rb +40 -16
- data/lib/spree/deprecated_instance_variable_proxy.rb +57 -0
- data/lib/spree/deprecation.rb +3 -51
- data/lib/spree/deprecator.rb +9 -0
- data/lib/spree/i18n.rb +1 -1
- data/lib/spree/mailer_previews/carton_preview.rb +1 -1
- data/lib/spree/migration_helpers.rb +3 -3
- data/lib/spree/migrations.rb +13 -11
- data/lib/spree/money.rb +5 -118
- data/lib/spree/permission_sets/base.rb +5 -30
- data/lib/spree/permission_sets/configuration_display.rb +5 -23
- data/lib/spree/permission_sets/configuration_management.rb +5 -23
- data/lib/spree/permission_sets/dashboard_display.rb +5 -9
- data/lib/spree/permission_sets/default_customer.rb +5 -35
- data/lib/spree/permission_sets/order_display.rb +5 -19
- data/lib/spree/permission_sets/order_management.rb +5 -20
- data/lib/spree/permission_sets/product_display.rb +5 -17
- data/lib/spree/permission_sets/product_management.rb +5 -19
- data/lib/spree/permission_sets/restricted_stock_display.rb +5 -16
- data/lib/spree/permission_sets/restricted_stock_management.rb +5 -16
- data/lib/spree/permission_sets/stock_display.rb +5 -10
- data/lib/spree/permission_sets/stock_management.rb +5 -10
- data/lib/spree/permission_sets/super_user.rb +5 -9
- data/lib/spree/permission_sets/user_display.rb +5 -11
- data/lib/spree/permission_sets/user_management.rb +5 -23
- data/lib/spree/permission_sets.rb +5 -18
- data/lib/spree/permitted_attributes.rb +35 -14
- data/lib/spree/preferences/configuration.rb +88 -0
- data/lib/spree/preferences/persistable.rb +7 -1
- data/lib/spree/preferences/preferable.rb +13 -0
- data/lib/spree/preferences/preferable_class_methods.rb +12 -4
- data/lib/spree/preferences/preference_differentiator.rb +29 -0
- data/lib/spree/preferences/static_model_preferences.rb +25 -10
- data/lib/spree/preferences/store.rb +2 -2
- data/lib/spree/testing_support/blacklist_urls.rb +1 -1
- data/lib/spree/testing_support/bus_helpers.rb +101 -0
- data/lib/spree/testing_support/capybara_ext.rb +11 -1
- data/lib/spree/testing_support/common_rake.rb +76 -23
- data/lib/spree/testing_support/dummy_ability.rb +7 -0
- data/lib/spree/testing_support/dummy_app/assets/javascripts/spree/backend/all.js +1 -1
- data/lib/spree/testing_support/dummy_app/assets/stylesheets/solidus_admin/tailwind.css +1 -0
- data/lib/spree/testing_support/dummy_app/database.yml +39 -28
- data/lib/spree/testing_support/dummy_app/migrations.rb +8 -15
- data/lib/spree/testing_support/dummy_app/rake_tasks.rb +3 -10
- data/lib/spree/testing_support/dummy_app.rb +71 -42
- data/lib/spree/testing_support/extension_rake.rb +2 -2
- data/lib/spree/testing_support/factories/address_factory.rb +9 -13
- data/lib/spree/testing_support/factories/adjustment_factory.rb +1 -13
- data/lib/spree/testing_support/factories/adjustment_reason_factory.rb +0 -5
- data/lib/spree/testing_support/factories/calculator_factory.rb +4 -10
- data/lib/spree/testing_support/factories/carton_factory.rb +2 -10
- data/lib/spree/testing_support/factories/country_factory.rb +1 -7
- data/lib/spree/testing_support/factories/credit_card_factory.rb +0 -5
- data/lib/spree/testing_support/factories/customer_return_factory.rb +2 -11
- data/lib/spree/testing_support/factories/image_factory.rb +0 -5
- data/lib/spree/testing_support/factories/inventory_unit_factory.rb +4 -14
- data/lib/spree/testing_support/factories/line_item_factory.rb +0 -8
- data/lib/spree/testing_support/factories/option_type_factory.rb +0 -8
- data/lib/spree/testing_support/factories/option_value_factory.rb +0 -5
- data/lib/spree/testing_support/factories/order_factory.rb +19 -38
- data/lib/spree/testing_support/factories/payment_factory.rb +0 -10
- data/lib/spree/testing_support/factories/payment_method_factory.rb +0 -5
- data/lib/spree/testing_support/factories/price_factory.rb +0 -7
- data/lib/spree/testing_support/factories/product_factory.rb +5 -13
- data/lib/spree/testing_support/factories/product_option_type_factory.rb +0 -8
- data/lib/spree/testing_support/factories/product_property_factory.rb +0 -8
- data/lib/spree/testing_support/factories/property_factory.rb +0 -5
- data/lib/spree/testing_support/factories/refund_factory.rb +0 -8
- data/lib/spree/testing_support/factories/refund_reason_factory.rb +0 -5
- data/lib/spree/testing_support/factories/reimbursement_factory.rb +0 -7
- data/lib/spree/testing_support/factories/reimbursement_type_factory.rb +0 -5
- data/lib/spree/testing_support/factories/return_authorization_factory.rb +0 -9
- data/lib/spree/testing_support/factories/return_item_factory.rb +0 -9
- data/lib/spree/testing_support/factories/return_reason_factory.rb +0 -5
- data/lib/spree/testing_support/factories/role_factory.rb +0 -5
- data/lib/spree/testing_support/factories/shipment_factory.rb +1 -11
- data/lib/spree/testing_support/factories/shipping_category_factory.rb +0 -5
- data/lib/spree/testing_support/factories/shipping_method_factory.rb +0 -9
- data/lib/spree/testing_support/factories/shipping_rate_factory.rb +0 -8
- data/lib/spree/testing_support/factories/state_factory.rb +8 -10
- data/lib/spree/testing_support/factories/stock_item_factory.rb +5 -9
- data/lib/spree/testing_support/factories/stock_location_factory.rb +0 -9
- data/lib/spree/testing_support/factories/stock_movement_factory.rb +0 -7
- data/lib/spree/testing_support/factories/stock_package_factory.rb +1 -9
- data/lib/spree/testing_support/factories/store_credit_category_factory.rb +0 -5
- data/lib/spree/testing_support/factories/store_credit_event_factory.rb +0 -8
- data/lib/spree/testing_support/factories/store_credit_factory.rb +4 -13
- data/lib/spree/testing_support/factories/store_credit_reason_factory.rb +0 -5
- data/lib/spree/testing_support/factories/store_credit_type_factory.rb +0 -5
- data/lib/spree/testing_support/factories/store_factory.rb +0 -5
- data/lib/spree/testing_support/factories/tax_category_factory.rb +0 -8
- data/lib/spree/testing_support/factories/tax_rate_factory.rb +0 -9
- data/lib/spree/testing_support/factories/taxon_factory.rb +5 -10
- data/lib/spree/testing_support/factories/taxonomy_factory.rb +3 -6
- data/lib/spree/testing_support/factories/user_factory.rb +6 -9
- data/lib/spree/testing_support/factories/variant_factory.rb +0 -10
- data/lib/spree/testing_support/factories/variant_property_rule_condition_factory.rb +0 -8
- data/lib/spree/testing_support/factories/variant_property_rule_factory.rb +0 -9
- data/lib/spree/testing_support/factories/variant_property_rule_value_factory.rb +0 -8
- data/lib/spree/testing_support/factories/zone_factory.rb +1 -9
- data/lib/spree/testing_support/factory_bot.rb +6 -29
- data/lib/spree/testing_support/flaky.rb +22 -0
- data/lib/spree/testing_support/order_walkthrough.rb +7 -6
- data/lib/spree/testing_support/sequences.rb +0 -5
- data/lib/spree/testing_support/shared_examples/calculator.rb +10 -0
- data/lib/spree/testing_support/shared_examples/order_factory.rb +141 -0
- data/lib/spree/testing_support/shared_examples/working_factory.rb +15 -0
- data/lib/spree/testing_support/silence_deprecations.rb +9 -0
- data/lib/spree/user_class_handle.rb +2 -2
- data/lib/tasks/colorado_delivery_fee.rake +28 -0
- data/lib/tasks/payment_method.rake +29 -0
- data/lib/tasks/solidus/delete_prices_with_nil_amount.rake +8 -0
- data/solidus_core.gemspec +18 -8
- metadata +233 -117
- data/app/jobs/spree/promotion_code_batch_job.rb +0 -26
- data/app/mailers/spree/promotion_code_batch_mailer.rb +0 -15
- data/app/models/spree/calculator/distributed_amount.rb +0 -33
- data/app/models/spree/calculator/flat_percent_item_total.rb +0 -23
- data/app/models/spree/calculator/flexi_rate.rb +0 -22
- data/app/models/spree/calculator/percent_on_line_item.rb +0 -13
- data/app/models/spree/calculator/tiered_flat_rate.rb +0 -52
- data/app/models/spree/calculator/tiered_percent.rb +0 -62
- data/app/models/spree/line_item_action.rb +0 -8
- data/app/models/spree/order_promotion.rb +0 -27
- data/app/models/spree/promotion/actions/create_adjustment.rb +0 -77
- data/app/models/spree/promotion/actions/create_item_adjustments.rb +0 -99
- data/app/models/spree/promotion/actions/create_quantity_adjustments.rb +0 -139
- data/app/models/spree/promotion/actions/free_shipping.rb +0 -58
- data/app/models/spree/promotion/rules/first_order.rb +0 -38
- data/app/models/spree/promotion/rules/first_repeat_purchase_since.rb +0 -36
- data/app/models/spree/promotion/rules/item_total.rb +0 -53
- data/app/models/spree/promotion/rules/nth_order.rb +0 -45
- data/app/models/spree/promotion/rules/one_use_per_user.rb +0 -25
- data/app/models/spree/promotion/rules/option_value.rb +0 -50
- data/app/models/spree/promotion/rules/product.rb +0 -74
- data/app/models/spree/promotion/rules/store.rb +0 -22
- data/app/models/spree/promotion/rules/taxon.rb +0 -87
- data/app/models/spree/promotion/rules/user.rb +0 -30
- data/app/models/spree/promotion/rules/user_logged_in.rb +0 -20
- data/app/models/spree/promotion/rules/user_role.rb +0 -45
- data/app/models/spree/promotion.rb +0 -284
- data/app/models/spree/promotion_action.rb +0 -43
- data/app/models/spree/promotion_category.rb +0 -8
- data/app/models/spree/promotion_chooser.rb +0 -34
- data/app/models/spree/promotion_code/batch_builder.rb +0 -64
- data/app/models/spree/promotion_code.rb +0 -50
- data/app/models/spree/promotion_code_batch.rb +0 -27
- data/app/models/spree/promotion_handler/cart.rb +0 -55
- data/app/models/spree/promotion_handler/coupon.rb +0 -123
- data/app/models/spree/promotion_handler/page.rb +0 -26
- data/app/models/spree/promotion_handler/shipping.rb +0 -61
- data/app/models/spree/promotion_rule.rb +0 -55
- data/app/models/spree/promotion_rule_role.rb +0 -8
- data/app/models/spree/promotion_rule_store.rb +0 -10
- data/app/models/spree/promotion_rule_taxon.rb +0 -8
- data/app/models/spree/promotion_rule_user.rb +0 -10
- data/app/models/spree/tax/shipping_rate_taxer.rb +0 -24
- data/app/subscribers/spree/mailer_subscriber.rb +0 -25
- data/app/views/spree/promotion_code_batch_mailer/promotion_code_batch_errored.text.erb +0 -2
- data/app/views/spree/promotion_code_batch_mailer/promotion_code_batch_finished.text.erb +0 -2
- data/db/migrate/20161017102621_create_spree_promotion_code_batch.rb +0 -38
- data/db/migrate/20180202190713_create_promotion_rule_stores.rb +0 -12
- data/db/migrate/20180328172631_add_join_characters_to_promotion_code_batch.rb +0 -11
- data/db/migrate/20190106184413_remove_code_from_spree_promotions.rb +0 -42
- data/lib/generators/solidus/install/templates/vendor/assets/javascripts/spree/frontend/all.js +0 -10
- data/lib/generators/solidus/install/templates/vendor/assets/stylesheets/spree/frontend/all.css +0 -9
- data/lib/generators/spree/dummy/templates/rails/script/rails +0 -6
- data/lib/solidus/migrations/promotions_with_code_handlers.rb +0 -66
- data/lib/spree/event/adapters/active_support_notifications.rb +0 -67
- data/lib/spree/event/configuration.rb +0 -25
- data/lib/spree/event/subscriber.rb +0 -86
- data/lib/spree/event/subscriber_registry.rb +0 -94
- data/lib/spree/event.rb +0 -119
- data/lib/spree/permission_sets/promotion_display.rb +0 -15
- data/lib/spree/permission_sets/promotion_management.rb +0 -15
- data/lib/spree/testing_support/dummy_app/assets/javascripts/spree/frontend/all.js +0 -10
- data/lib/spree/testing_support/dummy_app/assets/stylesheets/spree/frontend/all.css +0 -9
- data/lib/spree/testing_support/dummy_app/views/layouts/application.html.erb +0 -1
- data/lib/spree/testing_support/factories/order_promotion_factory.rb +0 -16
- data/lib/spree/testing_support/factories/promotion_category_factory.rb +0 -12
- data/lib/spree/testing_support/factories/promotion_code_factory.rb +0 -16
- data/lib/spree/testing_support/factories/promotion_factory.rb +0 -92
- data/lib/spree/testing_support/factories.rb +0 -11
- data/lib/spree/testing_support.rb +0 -31
- data/lib/tasks/upgrade.rake +0 -15
@@ -1,51 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
#
|
9
|
-
# for each event the following instance methods are dynamically implemented:
|
10
|
-
# #<event_name>
|
11
|
-
# #<event_name>!
|
12
|
-
# #can_<event_name>?
|
13
|
-
#
|
14
|
-
# for each state the following instance methods are implemented:
|
15
|
-
# #<state_name>?
|
16
|
-
#
|
17
|
-
module AcceptanceStatus
|
18
|
-
extend ActiveSupport::Concern
|
19
|
-
|
20
|
-
included do
|
21
|
-
state_machine :acceptance_status, initial: :pending do
|
22
|
-
event :attempt_accept do
|
23
|
-
transition to: :accepted, from: :accepted
|
24
|
-
transition to: :accepted, from: :pending, if: ->(return_item) { return_item.eligible_for_return? }
|
25
|
-
transition to: :manual_intervention_required, from: :pending, if: ->(return_item) { return_item.requires_manual_intervention? }
|
26
|
-
transition to: :rejected, from: :pending
|
27
|
-
end
|
28
|
-
|
29
|
-
# bypasses eligibility checks
|
30
|
-
event :accept do
|
31
|
-
transition to: :accepted, from: [:accepted, :pending, :manual_intervention_required]
|
32
|
-
end
|
33
|
-
|
34
|
-
# bypasses eligibility checks
|
35
|
-
event :reject do
|
36
|
-
transition to: :rejected, from: [:accepted, :pending, :manual_intervention_required]
|
37
|
-
end
|
38
|
-
|
39
|
-
# bypasses eligibility checks
|
40
|
-
event :require_manual_intervention do
|
41
|
-
transition to: :manual_intervention_required, from: [:accepted, :pending, :manual_intervention_required]
|
42
|
-
end
|
43
|
-
|
44
|
-
after_transition any => any, do: :persist_acceptance_status_errors
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
3
|
+
Spree.deprecator.warn(
|
4
|
+
<<~MSG
|
5
|
+
The file "#{__FILE__}" does not need to be `require`d any longer, it is now autoloaded.
|
6
|
+
MSG
|
7
|
+
)
|
@@ -1,42 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
#
|
9
|
-
# for each event the following instance methods are dynamically implemented:
|
10
|
-
# #<event_name>
|
11
|
-
# #<event_name>!
|
12
|
-
# #can_<event_name>?
|
13
|
-
#
|
14
|
-
# for each state the following instance methods are implemented:
|
15
|
-
# #<state_name>?
|
16
|
-
#
|
17
|
-
module ReceptionStatus
|
18
|
-
extend ActiveSupport::Concern
|
19
|
-
|
20
|
-
included do
|
21
|
-
state_machine :reception_status, initial: :awaiting do
|
22
|
-
after_transition to: ::Spree::ReturnItem::COMPLETED_RECEPTION_STATUSES, do: :attempt_accept, if: :can_attempt_accept?
|
23
|
-
after_transition to: ::Spree::ReturnItem::COMPLETED_RECEPTION_STATUSES, do: :check_unexchange
|
24
|
-
after_transition to: :received, do: :process_inventory_unit!
|
25
|
-
|
26
|
-
event(:cancel) { transition to: :cancelled, from: :awaiting }
|
27
|
-
|
28
|
-
event(:receive) { transition to: :received, from: ::Spree::ReturnItem::INTERMEDIATE_RECEPTION_STATUSES + [:awaiting] }
|
29
|
-
event(:unexchange) { transition to: :unexchanged, from: [:awaiting] }
|
30
|
-
event(:give) { transition to: :given_to_customer, from: :awaiting }
|
31
|
-
event(:lost) { transition to: :lost_in_transit, from: :awaiting }
|
32
|
-
event(:wrong_item_shipped) { transition to: :shipped_wrong_item, from: :awaiting }
|
33
|
-
event(:short_shipped) { transition to: :short_shipped, from: :awaiting }
|
34
|
-
event(:in_transit) { transition to: :in_transit, from: :awaiting }
|
35
|
-
event(:expired) { transition to: :expired, from: :awaiting }
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
3
|
+
Spree.deprecator.warn(
|
4
|
+
<<~MSG
|
5
|
+
The file "#{__FILE__}" does not need to be `require`d any longer, it is now autoloaded.
|
6
|
+
MSG
|
7
|
+
)
|
@@ -1,58 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
# for each event the following instance methods are dynamically implemented:
|
9
|
-
# #<event_name>
|
10
|
-
# #<event_name>!
|
11
|
-
# #can_<event_name>?
|
12
|
-
#
|
13
|
-
# for each state the following instance methods are implemented:
|
14
|
-
# #<state_name>?
|
15
|
-
#
|
16
|
-
module Shipment
|
17
|
-
extend ActiveSupport::Concern
|
18
|
-
|
19
|
-
included do
|
20
|
-
state_machine initial: :pending, use_transactions: false do
|
21
|
-
event :ready do
|
22
|
-
transition from: :pending, to: :shipped, if: :can_transition_from_pending_to_shipped?
|
23
|
-
transition from: :pending, to: :ready, if: :can_transition_from_pending_to_ready?
|
24
|
-
end
|
25
|
-
|
26
|
-
event :pend do
|
27
|
-
transition from: :ready, to: :pending
|
28
|
-
end
|
29
|
-
|
30
|
-
event :ship do
|
31
|
-
transition from: [:ready, :canceled], to: :shipped
|
32
|
-
end
|
33
|
-
after_transition to: :shipped, do: :after_ship
|
34
|
-
|
35
|
-
event :cancel do
|
36
|
-
transition to: :canceled, from: [:pending, :ready]
|
37
|
-
end
|
38
|
-
after_transition to: :canceled, do: :after_cancel
|
39
|
-
|
40
|
-
event :resume do
|
41
|
-
transition from: :canceled, to: :ready, if: :can_transition_from_canceled_to_ready?
|
42
|
-
transition from: :canceled, to: :pending
|
43
|
-
end
|
44
|
-
after_transition from: :canceled, to: [:pending, :ready, :shipped], do: :after_resume
|
45
|
-
|
46
|
-
after_transition do |shipment, transition|
|
47
|
-
shipment.state_changes.create!(
|
48
|
-
previous_state: transition.from,
|
49
|
-
next_state: transition.to,
|
50
|
-
name: 'shipment'
|
51
|
-
)
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
3
|
+
Spree.deprecator.warn(
|
4
|
+
<<~MSG
|
5
|
+
The file "#{__FILE__}" does not need to be `require`d any longer, it is now autoloaded.
|
6
|
+
MSG
|
7
|
+
)
|
@@ -2,87 +2,54 @@
|
|
2
2
|
|
3
3
|
module Spree
|
4
4
|
module Core
|
5
|
-
class StateMachines
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
require 'spree/core/state_machines/inventory_unit'
|
54
|
-
'Spree::Core::StateMachines::InventoryUnit'
|
55
|
-
end
|
56
|
-
|
57
|
-
@inventory_unit.constantize
|
58
|
-
end
|
59
|
-
|
60
|
-
def shipment
|
61
|
-
@shipment ||= begin
|
62
|
-
require 'spree/core/state_machines/shipment'
|
63
|
-
'Spree::Core::StateMachines::Shipment'
|
64
|
-
end
|
65
|
-
|
66
|
-
@shipment.constantize
|
67
|
-
end
|
68
|
-
|
69
|
-
def order
|
70
|
-
@order ||= begin
|
71
|
-
require 'spree/core/state_machines/order'
|
72
|
-
'Spree::Core::StateMachines::Order'
|
73
|
-
end
|
74
|
-
|
75
|
-
@order.constantize
|
76
|
-
end
|
77
|
-
|
78
|
-
def reimbursement
|
79
|
-
@reimbursement ||= begin
|
80
|
-
require 'spree/core/state_machines/reimbursement'
|
81
|
-
'Spree::Core::StateMachines::Reimbursement'
|
82
|
-
end
|
83
|
-
|
84
|
-
@reimbursement.constantize
|
85
|
-
end
|
5
|
+
class StateMachines < Spree::Preferences::Configuration
|
6
|
+
# State Machine module for Reimbursements
|
7
|
+
#
|
8
|
+
# @!attribute [rw] reimbursement
|
9
|
+
# @return [Module] a module that implements the state machine for the `Spree::Reimbursement` model.
|
10
|
+
class_name_attribute :reimbursement, default: "Spree::Core::StateMachines::Reimbursement"
|
11
|
+
|
12
|
+
# State Machine module for Return Authorizations
|
13
|
+
#
|
14
|
+
# @!attribute [rw] return_authorization
|
15
|
+
# @return [Module] a module that implements the state machine for the `Spree::ReturnAuthorization` model.
|
16
|
+
class_name_attribute :return_authorization, default: "Spree::Core::StateMachines::ReturnAuthorization"
|
17
|
+
|
18
|
+
# State Machine module for Return Item Acceptances
|
19
|
+
#
|
20
|
+
# @!attribute [rw] return_item_acceptance
|
21
|
+
# @return [Module] a module that implements the acceptance part of the state machine for the `Spree::ReturnItem` model.
|
22
|
+
class_name_attribute :return_item_acceptance, default: "Spree::Core::StateMachines::ReturnItem::AcceptanceStatus"
|
23
|
+
|
24
|
+
# State Machine module for Return Item Receptions
|
25
|
+
#
|
26
|
+
# @!attribute [rw] return_item_reception
|
27
|
+
# @return [Module] a module that implements the reception part of the state machine for the `Spree::ReturnItem` model.
|
28
|
+
class_name_attribute :return_item_reception, default: "Spree::Core::StateMachines::ReturnItem::ReceptionStatus"
|
29
|
+
|
30
|
+
# State Machine module for Payments
|
31
|
+
#
|
32
|
+
# @!attribute [rw] payment
|
33
|
+
# @return [Module] a module that implements the state machine for the `Spree::Payment` model.
|
34
|
+
class_name_attribute :payment, default: "Spree::Core::StateMachines::Payment"
|
35
|
+
|
36
|
+
# State Machine module for Inventory Units
|
37
|
+
#
|
38
|
+
# @!attribute [rw] inventory_unit
|
39
|
+
# @return [Module] a module that implements the state machine for the `Spree::InventoryUnit` model.
|
40
|
+
class_name_attribute :inventory_unit, default: "Spree::Core::StateMachines::InventoryUnit"
|
41
|
+
|
42
|
+
# State Machine module for Shipments
|
43
|
+
#
|
44
|
+
# @!attribute [rw] shipment
|
45
|
+
# @return [Module] a module that implements the state machine for the `Spree::Shipment` model.
|
46
|
+
class_name_attribute :shipment, default: "Spree::Core::StateMachines::Shipment"
|
47
|
+
|
48
|
+
# State Machine module for Orders
|
49
|
+
#
|
50
|
+
# @!attribute [rw] order
|
51
|
+
# @return [Module] a module that implements the state machine for the `Spree::Order` model.
|
52
|
+
class_name_attribute :order, default: "Spree::Core::StateMachines::Order"
|
86
53
|
end
|
87
54
|
end
|
88
55
|
end
|
@@ -8,6 +8,9 @@ module Spree
|
|
8
8
|
attr_writer :location_filter_class
|
9
9
|
attr_writer :location_sorter_class
|
10
10
|
attr_writer :allocator_class
|
11
|
+
attr_writer :inventory_unit_builder_class
|
12
|
+
attr_writer :availability_validator_class
|
13
|
+
attr_writer :inventory_validator_class
|
11
14
|
|
12
15
|
def coordinator_class
|
13
16
|
@coordinator_class ||= '::Spree::Stock::SimpleCoordinator'
|
@@ -33,6 +36,21 @@ module Spree
|
|
33
36
|
@allocator_class ||= '::Spree::Stock::Allocator::OnHandFirst'
|
34
37
|
@allocator_class.constantize
|
35
38
|
end
|
39
|
+
|
40
|
+
def inventory_unit_builder_class
|
41
|
+
@inventory_unit_builder_class ||= '::Spree::Stock::InventoryUnitBuilder'
|
42
|
+
@inventory_unit_builder_class.constantize
|
43
|
+
end
|
44
|
+
|
45
|
+
def availability_validator_class
|
46
|
+
@availability_validator_class ||= '::Spree::Stock::AvailabilityValidator'
|
47
|
+
@availability_validator_class.constantize
|
48
|
+
end
|
49
|
+
|
50
|
+
def inventory_validator_class
|
51
|
+
@inventory_validator_class ||= '::Spree::Stock::InventoryValidator'
|
52
|
+
@inventory_validator_class.constantize
|
53
|
+
end
|
36
54
|
end
|
37
55
|
end
|
38
56
|
end
|
@@ -12,11 +12,9 @@ module Spree
|
|
12
12
|
# end
|
13
13
|
#
|
14
14
|
class EmailValidator < ActiveModel::EachValidator
|
15
|
-
EMAIL_REGEXP = /\A([^@\.]|[^@\.]([^@\s]*)[^@\.])@([^@\s]+\.)+[^@\s]+\z/
|
16
|
-
|
17
15
|
def validate_each(record, attribute, value)
|
18
|
-
unless
|
19
|
-
record.errors.add(attribute, :invalid, { value:
|
16
|
+
unless Spree::Config.default_email_regexp.match? value
|
17
|
+
record.errors.add(attribute, :invalid, **{ value: }.merge!(options))
|
20
18
|
end
|
21
19
|
end
|
22
20
|
end
|
data/lib/spree/core/version.rb
CHANGED
@@ -1,12 +1,16 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Spree
|
4
|
-
VERSION = "
|
4
|
+
VERSION = "4.5.1"
|
5
5
|
|
6
6
|
def self.solidus_version
|
7
7
|
VERSION
|
8
8
|
end
|
9
9
|
|
10
|
+
def self.previous_solidus_minor_version
|
11
|
+
'4.4'
|
12
|
+
end
|
13
|
+
|
10
14
|
def self.solidus_gem_version
|
11
15
|
Gem::Version.new(solidus_version)
|
12
16
|
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Spree
|
4
|
+
module Core
|
5
|
+
# Wrapper for a value that can be different depending on the Solidus version
|
6
|
+
#
|
7
|
+
# Some configuration defaults can be added or changed when a new Solidus
|
8
|
+
# version is released. This class encapsulates getting the correct value for a
|
9
|
+
# given Solidus version.
|
10
|
+
#
|
11
|
+
# The way it works is you provide an initial value in time, plus the version
|
12
|
+
# boundary where it got changed. Then you can fetch the value providing the
|
13
|
+
# desired Solidus version:
|
14
|
+
#
|
15
|
+
# @example
|
16
|
+
# value = VersionedValue.new(true, "3.0.0" => false)
|
17
|
+
# value.call("2.7.0") # => true
|
18
|
+
# value.call("3.0.0") # => false
|
19
|
+
# value.call("3.1.0") # => false
|
20
|
+
#
|
21
|
+
# Remember that you must provide the exact boundary when a value got changed,
|
22
|
+
# which could easily be during a pre-release:
|
23
|
+
#
|
24
|
+
# @example
|
25
|
+
# value = VersionedValue.new(true, "3.0.0" => false)
|
26
|
+
# value.call("3.0.0.alpha") # => true
|
27
|
+
#
|
28
|
+
# value = VersionedValue.new(true, "3.0.0.alpha" => false)
|
29
|
+
# value.call("3.0.0.alpha") # => false
|
30
|
+
#
|
31
|
+
# Multiple boundaries can also be provided:
|
32
|
+
#
|
33
|
+
# @example
|
34
|
+
# value = VersionedValue.new(0, "2.0.0" => 1, "3.0.0" => 2)
|
35
|
+
# value.call("1.0.0") # => 0
|
36
|
+
# value.call("2.1.0") # => 1
|
37
|
+
# value.call("3.0.0") # => 2
|
38
|
+
class VersionedValue
|
39
|
+
attr_reader :boundaries
|
40
|
+
|
41
|
+
# @param initial_value [Any]
|
42
|
+
# @param boundary [Hash<String, Any>] Map from version number to new value
|
43
|
+
def initialize(initial_value, boundaries = {})
|
44
|
+
@boundaries = Hash[
|
45
|
+
{ '0' => initial_value }
|
46
|
+
.merge(boundaries)
|
47
|
+
.transform_keys { |version| to_gem_version(version) }
|
48
|
+
.sort
|
49
|
+
]
|
50
|
+
end
|
51
|
+
|
52
|
+
# @param solidus_version [String]
|
53
|
+
def call(solidus_version = Spree.solidus_version)
|
54
|
+
solidus_version = to_gem_version(solidus_version)
|
55
|
+
boundaries.fetch(
|
56
|
+
boundaries
|
57
|
+
.keys
|
58
|
+
.reduce do |target, following|
|
59
|
+
if target <= solidus_version && solidus_version < following
|
60
|
+
target
|
61
|
+
else
|
62
|
+
following
|
63
|
+
end
|
64
|
+
end
|
65
|
+
)
|
66
|
+
end
|
67
|
+
|
68
|
+
private
|
69
|
+
|
70
|
+
def to_gem_version(string)
|
71
|
+
Gem::Version.new(string)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
data/lib/spree/core.rb
CHANGED
@@ -9,25 +9,27 @@ require "active_record/railtie"
|
|
9
9
|
require "active_storage/engine"
|
10
10
|
require "sprockets/railtie"
|
11
11
|
|
12
|
+
require 'active_support/deprecation'
|
13
|
+
require 'spree/deprecated_instance_variable_proxy'
|
14
|
+
require 'spree/deprecator'
|
12
15
|
require 'acts_as_list'
|
13
16
|
require 'awesome_nested_set'
|
14
17
|
require 'cancan'
|
15
18
|
require 'friendly_id'
|
16
19
|
require 'kaminari/activerecord'
|
17
|
-
require 'mail'
|
18
20
|
require 'monetize'
|
19
21
|
require 'paperclip'
|
20
22
|
require 'ransack'
|
21
23
|
require 'state_machines-activerecord'
|
22
24
|
|
23
|
-
require 'spree/deprecation'
|
24
|
-
|
25
25
|
# This is required because ActiveModel::Validations#invalid? conflicts with the
|
26
26
|
# invalid state of a Payment. In the future this should be removed.
|
27
27
|
StateMachines::Machine.ignore_method_conflicts = true
|
28
28
|
|
29
29
|
module Spree
|
30
|
-
|
30
|
+
autoload :Deprecation, 'spree/deprecation'
|
31
|
+
|
32
|
+
mattr_accessor :user_class, default: 'Spree::LegacyUser'
|
31
33
|
|
32
34
|
def self.user_class
|
33
35
|
if @@user_class.is_a?(Class)
|
@@ -37,6 +39,20 @@ module Spree
|
|
37
39
|
end
|
38
40
|
end
|
39
41
|
|
42
|
+
def self.user_class_name
|
43
|
+
@@user_class
|
44
|
+
end
|
45
|
+
|
46
|
+
# Load the same version defaults for all available Solidus components
|
47
|
+
#
|
48
|
+
# @see Spree::Preferences::Configuration#load_defaults
|
49
|
+
def self.load_defaults(version)
|
50
|
+
Spree::Config.load_defaults(version)
|
51
|
+
Spree::Frontend::Config.load_defaults(version) if defined?(Spree::Frontend::Config)
|
52
|
+
Spree::Backend::Config.load_defaults(version) if defined?(Spree::Backend::Config)
|
53
|
+
Spree::Api::Config.load_defaults(version) if defined?(Spree::Api::Config)
|
54
|
+
end
|
55
|
+
|
40
56
|
# Used to configure Spree.
|
41
57
|
#
|
42
58
|
# Example:
|
@@ -52,6 +68,24 @@ module Spree
|
|
52
68
|
end
|
53
69
|
|
54
70
|
module Core
|
71
|
+
# @api private
|
72
|
+
def self.has_install_generator_been_run?(rails_paths: Rails.application.paths, initializer_name: 'spree.rb', dummy_app_name: 'DummyApp::Application')
|
73
|
+
does_spree_initializer_exist?(rails_paths, initializer_name) ||
|
74
|
+
running_solidus_test_suite_with_dummy_app?(dummy_app_name)
|
75
|
+
end
|
76
|
+
|
77
|
+
def self.running_solidus_test_suite_with_dummy_app?(dummy_app_name)
|
78
|
+
Rails.env.test? && Rails.application.class.name == dummy_app_name
|
79
|
+
end
|
80
|
+
private_class_method :running_solidus_test_suite_with_dummy_app?
|
81
|
+
|
82
|
+
def self.does_spree_initializer_exist?(rails_paths, initializer_name)
|
83
|
+
rails_paths['config/initializers'].any? do |path|
|
84
|
+
File.exist?(Pathname.new(path).join(initializer_name))
|
85
|
+
end
|
86
|
+
end
|
87
|
+
private_class_method :does_spree_initializer_exist?
|
88
|
+
|
55
89
|
class GatewayError < RuntimeError; end
|
56
90
|
end
|
57
91
|
end
|
@@ -66,31 +100,21 @@ require 'spree/core/environment/promotions'
|
|
66
100
|
require 'spree/core/environment'
|
67
101
|
require 'spree/migrations'
|
68
102
|
require 'spree/migration_helpers'
|
69
|
-
require 'spree/
|
103
|
+
require 'spree/bus'
|
70
104
|
require 'spree/core/engine'
|
71
105
|
|
72
106
|
require 'spree/i18n'
|
73
107
|
require 'spree/localized_number'
|
74
|
-
require 'spree/money'
|
75
108
|
require 'spree/permitted_attributes'
|
76
109
|
|
77
110
|
require 'spree/core/importer'
|
78
111
|
require 'spree/core/permalinks'
|
79
112
|
require 'spree/core/product_duplicator'
|
80
|
-
require 'spree/core/controller_helpers/auth'
|
81
|
-
require 'spree/core/controller_helpers/common'
|
82
|
-
require 'spree/core/controller_helpers/current_host'
|
83
|
-
require 'spree/core/controller_helpers/order'
|
84
|
-
require 'spree/core/controller_helpers/payment_parameters'
|
85
|
-
require 'spree/core/controller_helpers/pricing'
|
86
|
-
require 'spree/core/controller_helpers/search'
|
87
|
-
require 'spree/core/controller_helpers/store'
|
88
|
-
require 'spree/core/controller_helpers/strong_parameters'
|
89
113
|
require 'spree/core/role_configuration'
|
90
114
|
require 'spree/core/state_machines'
|
91
115
|
require 'spree/core/stock_configuration'
|
116
|
+
require 'spree/core/null_promotion_configuration'
|
92
117
|
require 'spree/core/validators/email'
|
93
|
-
require 'spree/permission_sets'
|
94
118
|
require 'spree/user_class_handle'
|
95
119
|
|
96
120
|
require 'spree/preferences/store'
|
@@ -0,0 +1,57 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'active_support/deprecation'
|
4
|
+
|
5
|
+
module Spree
|
6
|
+
# This DeprecatedInstanceVariableProxy transforms instance variable to
|
7
|
+
# deprecated instance variable.
|
8
|
+
#
|
9
|
+
# It differs from ActiveSupport::DeprecatedInstanceVariableProxy since
|
10
|
+
# it allows to define a custom message.
|
11
|
+
#
|
12
|
+
# class Example
|
13
|
+
# def initialize(deprecator)
|
14
|
+
# @request = Spree::DeprecatedInstanceVariableProxy.new(self, :request, :@request, deprecator, "Please, do not use this thing.")
|
15
|
+
# @_request = :a_request
|
16
|
+
# end
|
17
|
+
#
|
18
|
+
# def request
|
19
|
+
# @_request
|
20
|
+
# end
|
21
|
+
#
|
22
|
+
# def old_request
|
23
|
+
# @request
|
24
|
+
# end
|
25
|
+
# end
|
26
|
+
#
|
27
|
+
# When someone execute any method on @request variable this will trigger
|
28
|
+
# +warn+ method on +deprecator_instance+ and will fetch <tt>@_request</tt>
|
29
|
+
# variable via +request+ method and execute the same method on non-proxy
|
30
|
+
# instance variable.
|
31
|
+
#
|
32
|
+
# Default deprecator is <tt>Spree.deprecator</tt>.
|
33
|
+
class DeprecatedInstanceVariableProxy < ActiveSupport::Deprecation::DeprecationProxy
|
34
|
+
def initialize(instance, method_or_var, var = "@#{method}", deprecator = Spree.deprecator, message = nil)
|
35
|
+
@instance = instance
|
36
|
+
@method_or_var = method_or_var
|
37
|
+
@var = var
|
38
|
+
@deprecator = deprecator
|
39
|
+
@message = message
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def target
|
45
|
+
return @instance.instance_variable_get(@method_or_var) if @instance.instance_variable_defined?(@method_or_var)
|
46
|
+
|
47
|
+
@instance.__send__(@method_or_var)
|
48
|
+
end
|
49
|
+
|
50
|
+
def warn(callstack, called, args)
|
51
|
+
message = @message || "#{@var} is deprecated! Call #{@method_or_var}.#{called} instead of #{@var}.#{called}."
|
52
|
+
message = [message, "Args: #{args.inspect}"].join(" ") unless args.empty?
|
53
|
+
|
54
|
+
@deprecator.warn(message, callstack)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
data/lib/spree/deprecation.rb
CHANGED
@@ -1,57 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require '
|
3
|
+
require 'spree/core'
|
4
4
|
|
5
5
|
module Spree
|
6
|
-
Deprecation =
|
6
|
+
Deprecation = Spree.deprecator
|
7
7
|
|
8
|
-
|
9
|
-
# deprecated instance variable.
|
10
|
-
#
|
11
|
-
# It differs from ActiveSupport::DeprecatedInstanceVariableProxy since
|
12
|
-
# it allows to define a custom message.
|
13
|
-
#
|
14
|
-
# class Example
|
15
|
-
# def initialize(deprecator)
|
16
|
-
# @request = Spree::DeprecatedInstanceVariableProxy.new(self, :request, :@request, deprecator, "Please, do not use this thing.")
|
17
|
-
# @_request = :a_request
|
18
|
-
# end
|
19
|
-
#
|
20
|
-
# def request
|
21
|
-
# @_request
|
22
|
-
# end
|
23
|
-
#
|
24
|
-
# def old_request
|
25
|
-
# @request
|
26
|
-
# end
|
27
|
-
# end
|
28
|
-
#
|
29
|
-
# When someone execute any method on @request variable this will trigger
|
30
|
-
# +warn+ method on +deprecator_instance+ and will fetch <tt>@_request</tt>
|
31
|
-
# variable via +request+ method and execute the same method on non-proxy
|
32
|
-
# instance variable.
|
33
|
-
#
|
34
|
-
# Default deprecator is <tt>Spree::Deprecation</tt>.
|
35
|
-
class DeprecatedInstanceVariableProxy < ActiveSupport::Deprecation::DeprecationProxy
|
36
|
-
def initialize(instance, method, var = "@#{method}", deprecator = Spree::Deprecation, message = nil)
|
37
|
-
@instance = instance
|
38
|
-
@method = method
|
39
|
-
@var = var
|
40
|
-
@deprecator = deprecator
|
41
|
-
@message = message
|
42
|
-
end
|
43
|
-
|
44
|
-
private
|
45
|
-
|
46
|
-
def target
|
47
|
-
@instance.__send__(@method)
|
48
|
-
end
|
49
|
-
|
50
|
-
def warn(callstack, called, args)
|
51
|
-
message = @message || "#{@var} is deprecated! Call #{@method}.#{called} instead of #{@var}.#{called}."
|
52
|
-
message = [message, "Args: #{args.inspect}"].join(" ")
|
53
|
-
|
54
|
-
@deprecator.warn(message, callstack)
|
55
|
-
end
|
56
|
-
end
|
8
|
+
Spree.deprecator.warn "Spree::Deprecation is deprecated. Please use Spree.deprecator instead.", caller(2)
|
57
9
|
end
|