solidus_core 2.10.0 → 2.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/assets/javascripts/spree.js.erb +31 -2
- data/app/controllers/spree/base_controller.rb +1 -0
- data/app/mailers/spree/base_mailer.rb +4 -0
- data/app/mailers/spree/order_mailer.rb +1 -1
- data/app/models/concerns/spree/active_storage_adapter/attachment.rb +69 -0
- data/app/models/concerns/spree/active_storage_adapter/normalization.rb +39 -0
- data/app/models/concerns/spree/active_storage_adapter.rb +116 -0
- data/app/models/concerns/spree/default_price.rb +1 -1
- data/app/models/concerns/spree/soft_deletable.rb +18 -0
- data/app/models/concerns/spree/user_address_book.rb +86 -32
- data/app/models/concerns/spree/user_methods.rb +3 -2
- data/app/models/spree/ability.rb +34 -10
- data/app/models/spree/address/name.rb +49 -0
- data/app/models/spree/address/state_validator.rb +71 -0
- data/app/models/spree/address.rb +94 -17
- data/app/models/spree/adjustment.rb +1 -1
- data/app/models/spree/base.rb +1 -0
- data/app/models/spree/calculator/default_tax.rb +1 -1
- data/app/models/spree/calculator/percent_per_item.rb +4 -4
- data/app/models/spree/calculator/price_sack.rb +1 -1
- data/app/models/spree/credit_card.rb +2 -2
- data/app/models/spree/customer_return.rb +4 -2
- data/app/models/spree/exchange.rb +1 -1
- data/app/models/spree/image/active_storage_attachment.rb +21 -0
- data/app/models/spree/inventory_unit.rb +1 -1
- data/app/models/spree/line_item.rb +13 -4
- data/app/models/spree/option_type.rb +1 -1
- data/app/models/spree/option_value.rb +2 -2
- data/app/models/spree/order/checkout.rb +1 -0
- data/app/models/spree/order.rb +91 -20
- data/app/models/spree/order_inventory.rb +16 -4
- data/app/models/spree/order_merger.rb +6 -4
- data/app/models/spree/order_promotion.rb +1 -1
- data/app/models/spree/order_updater.rb +11 -10
- data/app/models/spree/payment/cancellation.rb +3 -3
- data/app/models/spree/payment/processing.rb +54 -30
- data/app/models/spree/payment.rb +3 -3
- data/app/models/spree/payment_method.rb +8 -9
- data/app/models/spree/preference.rb +1 -1
- data/app/models/spree/price.rb +2 -8
- data/app/models/spree/product/scopes.rb +10 -5
- data/app/models/spree/product.rb +19 -14
- data/app/models/spree/promotion/actions/free_shipping.rb +6 -5
- data/app/models/spree/promotion.rb +18 -7
- data/app/models/spree/promotion_action.rb +1 -7
- data/app/models/spree/promotion_code.rb +6 -1
- data/app/models/spree/promotion_code_batch.rb +1 -1
- data/app/models/spree/promotion_handler/coupon.rb +2 -2
- data/app/models/spree/promotion_rule.rb +1 -1
- data/app/models/spree/promotion_rule_role.rb +1 -1
- data/app/models/spree/refund.rb +54 -12
- data/app/models/spree/reimbursement.rb +27 -0
- data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +10 -3
- data/app/models/spree/return_authorization.rb +1 -1
- data/app/models/spree/return_item/exchange_variant_eligibility/same_option_value.rb +1 -1
- data/app/models/spree/return_item.rb +21 -10
- data/app/models/spree/role.rb +1 -1
- data/app/models/spree/shipment.rb +2 -2
- data/app/models/spree/shipping_calculator.rb +1 -1
- data/app/models/spree/shipping_manifest.rb +2 -2
- data/app/models/spree/shipping_method.rb +2 -9
- data/app/models/spree/shipping_rate.rb +1 -1
- data/app/models/spree/shipping_rate_tax.rb +1 -1
- data/app/models/spree/stock/inventory_unit_builder.rb +18 -7
- data/app/models/spree/stock/inventory_units_finalizer.rb +3 -5
- data/app/models/spree/stock/package.rb +1 -1
- data/app/models/spree/stock/simple_coordinator.rb +1 -3
- data/app/models/spree/stock_item.rb +2 -8
- data/app/models/spree/stock_movement.rb +2 -0
- data/app/models/spree/store.rb +1 -1
- data/app/models/spree/store_credit.rb +1 -7
- data/app/models/spree/store_credit_category.rb +30 -3
- data/app/models/spree/store_credit_event.rb +1 -7
- data/app/models/spree/store_credit_reason.rb +0 -4
- data/app/models/spree/tax/tax_helpers.rb +1 -1
- data/app/models/spree/tax_category.rb +2 -8
- data/app/models/spree/tax_rate.rb +7 -7
- data/app/models/spree/taxon/active_storage_attachment.rb +19 -0
- data/app/models/spree/taxon.rb +1 -1
- data/app/models/spree/user_address.rb +8 -2
- data/app/models/spree/variant.rb +7 -13
- data/app/models/spree/variant_property_rule.rb +5 -1
- data/app/models/spree/wallet/add_payment_sources_to_wallet.rb +8 -3
- data/app/models/spree/zone.rb +1 -1
- data/config/locales/en.yml +44 -5
- data/db/default/spree/countries.rb +1 -1
- data/db/default/spree/states.rb +12 -4
- data/db/default/spree/store_credit.rb +2 -2
- data/db/migrate/20180416083007_add_apply_to_all_to_variant_property_rule.rb +12 -0
- data/db/migrate/20200320144521_add_default_billng_flag_to_user_addresses.rb +6 -0
- data/db/migrate/20200530111458_add_bcc_email_to_spree_stores.rb +7 -0
- data/db/migrate/20201008213609_add_discontinue_on_to_spree_products.rb +7 -0
- data/lib/generators/solidus/install/install_generator.rb +253 -0
- data/lib/generators/{spree → solidus}/install/templates/config/initializers/spree.rb.tt +36 -5
- data/lib/generators/spree/install/install_generator.rb +7 -189
- data/lib/solidus/migrations/promotions_with_code_handlers.rb +1 -1
- data/lib/spree/app_configuration.rb +117 -51
- data/lib/spree/awesome_nested_set_override.rb +44 -0
- data/lib/spree/core/controller_helpers/auth.rb +17 -4
- data/lib/spree/core/controller_helpers/current_host.rb +17 -0
- data/lib/spree/core/controller_helpers/order.rb +8 -7
- data/lib/spree/core/controller_helpers/strong_parameters.rb +21 -7
- data/lib/spree/core/engine.rb +39 -2
- data/lib/spree/core/importer/order.rb +26 -11
- data/lib/spree/core/permalinks.rb +1 -3
- data/lib/spree/core/product_filters.rb +6 -5
- data/lib/spree/core/state_machines/order.rb +249 -0
- data/lib/spree/core/state_machines/return_item/reception_status.rb +2 -2
- data/lib/spree/core/state_machines.rb +20 -1
- data/lib/spree/core/version.rb +1 -1
- data/lib/spree/core.rb +5 -11
- data/lib/spree/encryptor.rb +25 -0
- data/lib/spree/event/adapters/active_support_notifications.rb +32 -0
- data/lib/spree/event/configuration.rb +11 -6
- data/lib/spree/event/subscriber.rb +38 -18
- data/lib/spree/event/subscriber_registry.rb +92 -0
- data/lib/spree/event.rb +40 -7
- data/lib/spree/i18n.rb +1 -1
- data/lib/spree/mailer_previews/carton_preview.rb +2 -1
- data/lib/spree/paranoia_deprecations.rb +32 -12
- data/lib/spree/permission_sets/configuration_display.rb +14 -14
- data/lib/spree/permission_sets/default_customer.rb +16 -16
- data/lib/spree/permission_sets/order_display.rb +11 -11
- data/lib/spree/permission_sets/order_management.rb +1 -1
- data/lib/spree/permission_sets/product_display.rb +9 -9
- data/lib/spree/permission_sets/promotion_display.rb +5 -5
- data/lib/spree/permission_sets/restricted_stock_display.rb +2 -2
- data/lib/spree/permission_sets/restricted_stock_management.rb +1 -1
- data/lib/spree/permission_sets/stock_display.rb +2 -2
- data/lib/spree/permission_sets/stock_management.rb +1 -1
- data/lib/spree/permission_sets/user_display.rb +3 -3
- data/lib/spree/permission_sets/user_management.rb +4 -3
- data/lib/spree/permitted_attributes.rb +79 -9
- data/lib/spree/preferences/preferable.rb +4 -3
- data/lib/spree/preferences/preferable_class_methods.rb +22 -3
- data/lib/spree/testing_support/ability_helpers.rb +9 -9
- data/lib/spree/testing_support/authorization_helpers.rb +1 -0
- data/lib/spree/testing_support/blacklist_urls.rb +23 -0
- data/lib/spree/testing_support/capybara_ext.rb +3 -0
- data/lib/spree/testing_support/common_rake.rb +3 -3
- data/lib/spree/testing_support/dummy_app/migrations.rb +5 -6
- data/lib/spree/testing_support/dummy_app/rake_tasks.rb +1 -3
- data/lib/spree/testing_support/dummy_app.rb +44 -23
- data/lib/spree/testing_support/factories/address_factory.rb +1 -2
- data/lib/spree/testing_support/factories/image_factory.rb +1 -1
- data/lib/spree/testing_support/factories/promotion_factory.rb +6 -0
- data/lib/spree/testing_support/factories/refund_factory.rb +1 -0
- data/lib/spree/testing_support/factories/reimbursement_factory.rb +1 -1
- data/lib/spree/testing_support/factories/return_item_factory.rb +0 -1
- data/lib/spree/testing_support/factories/store_credit_category_factory.rb +8 -0
- data/lib/spree/testing_support/factories/store_credit_event_factory.rb +1 -0
- data/lib/spree/testing_support/factories/store_credit_reason_factory.rb +3 -1
- data/lib/spree/testing_support/factories/taxon_factory.rb +4 -0
- data/lib/spree/testing_support/factories/user_factory.rb +4 -1
- data/lib/spree/testing_support/factories/zone_factory.rb +1 -1
- data/lib/spree/testing_support/job_helpers.rb +24 -0
- data/lib/spree/testing_support/precompiled_assets.rb +15 -0
- data/lib/spree/testing_support/preferences.rb +3 -1
- data/lib/spree/testing_support/shared_examples/gallery.rb +1 -1
- data/lib/spree/testing_support/translations.rb +25 -0
- data/solidus_core.gemspec +8 -5
- metadata +81 -359
- data/script/rails +0 -10
- data/spec/fixtures/thinking-cat.jpg +0 -0
- data/spec/helpers/base_helper_spec.rb +0 -168
- data/spec/helpers/products_helper_spec.rb +0 -202
- data/spec/helpers/taxons_helper_spec.rb +0 -43
- data/spec/jobs/promotion_code_batch_job_spec.rb +0 -96
- data/spec/lib/calculated_adjustments_spec.rb +0 -133
- data/spec/lib/i18n_spec.rb +0 -97
- data/spec/lib/search/base_spec.rb +0 -91
- data/spec/lib/search/variant_spec.rb +0 -115
- data/spec/lib/spree/app_configuration_spec.rb +0 -140
- data/spec/lib/spree/core/class_constantizer_spec.rb +0 -91
- data/spec/lib/spree/core/controller_helpers/auth_spec.rb +0 -73
- data/spec/lib/spree/core/controller_helpers/order_spec.rb +0 -126
- data/spec/lib/spree/core/controller_helpers/payment_parameters_spec.rb +0 -195
- data/spec/lib/spree/core/controller_helpers/pricing_spec.rb +0 -94
- data/spec/lib/spree/core/controller_helpers/search_spec.rb +0 -21
- data/spec/lib/spree/core/controller_helpers/store_spec.rb +0 -18
- data/spec/lib/spree/core/controller_helpers/strong_parameters_spec.rb +0 -41
- data/spec/lib/spree/core/current_store_spec.rb +0 -33
- data/spec/lib/spree/core/environment_extension_spec.rb +0 -46
- data/spec/lib/spree/core/importer/order_spec.rb +0 -484
- data/spec/lib/spree/core/role_configuration_spec.rb +0 -155
- data/spec/lib/spree/core/stock_configuration_spec.rb +0 -95
- data/spec/lib/spree/core/testing_support/factories/address_factory_spec.rb +0 -61
- data/spec/lib/spree/core/testing_support/factories/adjustment_factory_spec.rb +0 -20
- data/spec/lib/spree/core/testing_support/factories/adjustment_reason_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/calculator_factory_spec.rb +0 -44
- data/spec/lib/spree/core/testing_support/factories/carton_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/country_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/credit_card_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/customer_return_factory_spec.rb +0 -39
- data/spec/lib/spree/core/testing_support/factories/image_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/inventory_unit_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/line_item_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/option_type_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/option_value_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/order_factory_spec.rb +0 -376
- data/spec/lib/spree/core/testing_support/factories/order_promotion_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/payment_factory_spec.rb +0 -40
- data/spec/lib/spree/core/testing_support/factories/payment_method_factory_spec.rb +0 -32
- data/spec/lib/spree/core/testing_support/factories/price_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/product_factory_spec.rb +0 -32
- data/spec/lib/spree/core/testing_support/factories/product_option_type_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/product_property_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/promotion_category_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/promotion_code_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/promotion_factory_spec.rb +0 -32
- data/spec/lib/spree/core/testing_support/factories/property_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/refund_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/refund_reason_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/reimbursement_factory_spec.rb +0 -20
- data/spec/lib/spree/core/testing_support/factories/reimbursement_type_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/return_authorization_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/return_item_factory_spec.rb +0 -20
- data/spec/lib/spree/core/testing_support/factories/return_reason_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/role_factory_spec.rb +0 -20
- data/spec/lib/spree/core/testing_support/factories/shipment_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/shipping_category_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/shipping_method_factory_spec.rb +0 -44
- data/spec/lib/spree/core/testing_support/factories/shipping_rate_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/state_factory_spec.rb +0 -59
- data/spec/lib/spree/core/testing_support/factories/stock_item_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/stock_location_factory_spec.rb +0 -35
- data/spec/lib/spree/core/testing_support/factories/stock_movement_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/stock_package_factory_spec.rb +0 -28
- data/spec/lib/spree/core/testing_support/factories/store_credit_category_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/store_credit_event_factory_spec.rb +0 -43
- data/spec/lib/spree/core/testing_support/factories/store_credit_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/store_credit_reason_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/store_credit_type_factory_spec.rb +0 -20
- data/spec/lib/spree/core/testing_support/factories/store_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/tax_category_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/tax_rate_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/taxon_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/taxonomy_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/user_factory_spec.rb +0 -24
- data/spec/lib/spree/core/testing_support/factories/variant_factory_spec.rb +0 -56
- data/spec/lib/spree/core/testing_support/factories/variant_property_rule_condition_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/variant_property_rule_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/variant_property_rule_value_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/zone_factory_spec.rb +0 -20
- data/spec/lib/spree/core/testing_support/preferences_spec.rb +0 -61
- data/spec/lib/spree/core/validators/email_spec.rb +0 -53
- data/spec/lib/spree/core/version_spec.rb +0 -19
- data/spec/lib/spree/event/subscriber_spec.rb +0 -85
- data/spec/lib/spree/event_spec.rb +0 -130
- data/spec/lib/spree/localized_number_spec.rb +0 -45
- data/spec/lib/spree/migrations_spec.rb +0 -32
- data/spec/lib/spree/money_spec.rb +0 -298
- data/spec/lib/spree/permission_sets/default_customer_spec.rb +0 -22
- data/spec/lib/spree/promo/environment_spec.rb +0 -53
- data/spec/lib/tasks/dummy_task.rake +0 -12
- data/spec/lib/tasks/dummy_task_spec.rb +0 -30
- data/spec/lib/tasks/migrations/migrate_shipping_rate_taxes_spec.rb +0 -21
- data/spec/mailers/carton_mailer_spec.rb +0 -44
- data/spec/mailers/order_mailer_spec.rb +0 -117
- data/spec/mailers/promotion_code_batch_mailer_spec.rb +0 -47
- data/spec/mailers/reimbursement_mailer_spec.rb +0 -36
- data/spec/mailers/test_mailer_spec.rb +0 -13
- data/spec/models/spree/ability_spec.rb +0 -279
- data/spec/models/spree/address_spec.rb +0 -399
- data/spec/models/spree/adjustment_reason_spec.rb +0 -11
- data/spec/models/spree/adjustment_spec.rb +0 -339
- data/spec/models/spree/asset_spec.rb +0 -25
- data/spec/models/spree/calculator/default_tax_spec.rb +0 -260
- data/spec/models/spree/calculator/distributed_amount_spec.rb +0 -82
- data/spec/models/spree/calculator/flat_percent_item_total_spec.rb +0 -39
- data/spec/models/spree/calculator/flat_rate_spec.rb +0 -52
- data/spec/models/spree/calculator/flexi_rate_spec.rb +0 -158
- data/spec/models/spree/calculator/free_shipping_spec.rb +0 -8
- data/spec/models/spree/calculator/percent_on_line_item_spec.rb +0 -20
- data/spec/models/spree/calculator/percent_per_item_spec.rb +0 -12
- data/spec/models/spree/calculator/price_sack_spec.rb +0 -35
- data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +0 -70
- data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +0 -44
- data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +0 -18
- data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +0 -56
- data/spec/models/spree/calculator/shipping/per_item_spec.rb +0 -25
- data/spec/models/spree/calculator/shipping/price_sack_spec.rb +0 -44
- data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +0 -99
- data/spec/models/spree/calculator/tiered_percent_spec.rb +0 -197
- data/spec/models/spree/calculator_spec.rb +0 -43
- data/spec/models/spree/carton_spec.rb +0 -145
- data/spec/models/spree/classification_spec.rb +0 -126
- data/spec/models/spree/concerns/display_money_spec.rb +0 -44
- data/spec/models/spree/concerns/ordered_property_value_list_spec.rb +0 -52
- data/spec/models/spree/concerns/user_address_book_spec.rb +0 -358
- data/spec/models/spree/concerns/user_methods_spec.rb +0 -122
- data/spec/models/spree/country_spec.rb +0 -154
- data/spec/models/spree/credit_card_spec.rb +0 -373
- data/spec/models/spree/customer_return_spec.rb +0 -294
- data/spec/models/spree/distributed_amounts_handler_spec.rb +0 -83
- data/spec/models/spree/exchange_spec.rb +0 -76
- data/spec/models/spree/fulfilment_changer_spec.rb +0 -340
- data/spec/models/spree/gallery/product_gallery_spec.rb +0 -21
- data/spec/models/spree/gallery/variant_gallery_spec.rb +0 -21
- data/spec/models/spree/gateway/bogus_simple.rb +0 -14
- data/spec/models/spree/gateway/bogus_spec.rb +0 -14
- data/spec/models/spree/gateway_spec.rb +0 -14
- data/spec/models/spree/image_spec.rb +0 -25
- data/spec/models/spree/inventory_unit_spec.rb +0 -309
- data/spec/models/spree/line_item_spec.rb +0 -240
- data/spec/models/spree/option_type_spec.rb +0 -16
- data/spec/models/spree/option_value_spec.rb +0 -52
- data/spec/models/spree/order/address_spec.rb +0 -52
- data/spec/models/spree/order/adjustments_spec.rb +0 -29
- data/spec/models/spree/order/callbacks_spec.rb +0 -44
- data/spec/models/spree/order/checkout_spec.rb +0 -740
- data/spec/models/spree/order/finalizing_spec.rb +0 -92
- data/spec/models/spree/order/number_generator_spec.rb +0 -47
- data/spec/models/spree/order/outstanding_balance_integration_spec.rb +0 -138
- data/spec/models/spree/order/payment_spec.rb +0 -280
- data/spec/models/spree/order/risk_assessment_spec.rb +0 -70
- data/spec/models/spree/order/state_machine_spec.rb +0 -122
- data/spec/models/spree/order/totals_spec.rb +0 -26
- data/spec/models/spree/order/validations_spec.rb +0 -17
- data/spec/models/spree/order_cancellations_spec.rb +0 -233
- data/spec/models/spree/order_capturing_spec.rb +0 -16
- data/spec/models/spree/order_contents_spec.rb +0 -362
- data/spec/models/spree/order_inventory_spec.rb +0 -285
- data/spec/models/spree/order_merger_spec.rb +0 -162
- data/spec/models/spree/order_mutex_spec.rb +0 -89
- data/spec/models/spree/order_promotion_spec.rb +0 -33
- data/spec/models/spree/order_shipping_spec.rb +0 -247
- data/spec/models/spree/order_spec.rb +0 -1687
- data/spec/models/spree/order_taxation_spec.rb +0 -128
- data/spec/models/spree/order_update_attributes_spec.rb +0 -49
- data/spec/models/spree/order_updater_spec.rb +0 -556
- data/spec/models/spree/payment/cancellation_spec.rb +0 -84
- data/spec/models/spree/payment_create_spec.rb +0 -195
- data/spec/models/spree/payment_method/bogus_credit_card_spec.rb +0 -10
- data/spec/models/spree/payment_method/check_spec.rb +0 -80
- data/spec/models/spree/payment_method/credit_card_spec.rb +0 -68
- data/spec/models/spree/payment_method/simple_bogus_credit_card_spec.rb +0 -20
- data/spec/models/spree/payment_method/store_credit_spec.rb +0 -325
- data/spec/models/spree/payment_method_spec.rb +0 -408
- data/spec/models/spree/payment_spec.rb +0 -1270
- data/spec/models/spree/permission_sets/base_spec.rb +0 -14
- data/spec/models/spree/permission_sets/configuration_display.rb +0 -79
- data/spec/models/spree/permission_sets/configuration_management_spec.rb +0 -49
- data/spec/models/spree/permission_sets/dashboard_display_spec.rb +0 -23
- data/spec/models/spree/permission_sets/order_display_spec.rb +0 -56
- data/spec/models/spree/permission_sets/order_management_spec.rb +0 -43
- data/spec/models/spree/permission_sets/product_display_spec.rb +0 -57
- data/spec/models/spree/permission_sets/product_management_spec.rb +0 -39
- data/spec/models/spree/permission_sets/promotion_display_spec.rb +0 -41
- data/spec/models/spree/permission_sets/promotion_management_spec.rb +0 -29
- data/spec/models/spree/permission_sets/restricted_stock_display_spec.rb +0 -42
- data/spec/models/spree/permission_sets/restricted_stock_management_spec.rb +0 -42
- data/spec/models/spree/permission_sets/stock_display_spec.rb +0 -25
- data/spec/models/spree/permission_sets/stock_management_spec.rb +0 -23
- data/spec/models/spree/permission_sets/user_display_spec.rb +0 -39
- data/spec/models/spree/permission_sets/user_management_spec.rb +0 -58
- data/spec/models/spree/preference_spec.rb +0 -79
- data/spec/models/spree/preferences/configuration_spec.rb +0 -27
- data/spec/models/spree/preferences/preferable_spec.rb +0 -334
- data/spec/models/spree/preferences/scoped_store_spec.rb +0 -62
- data/spec/models/spree/preferences/static_model_preferences_spec.rb +0 -79
- data/spec/models/spree/preferences/statically_configurable_spec.rb +0 -67
- data/spec/models/spree/preferences/store_spec.rb +0 -40
- data/spec/models/spree/price_spec.rb +0 -150
- data/spec/models/spree/product/scopes_spec.rb +0 -164
- data/spec/models/spree/product_duplicator_spec.rb +0 -92
- data/spec/models/spree/product_filter_spec.rb +0 -28
- data/spec/models/spree/product_property_spec.rb +0 -20
- data/spec/models/spree/product_spec.rb +0 -584
- data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +0 -126
- data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +0 -198
- data/spec/models/spree/promotion/actions/create_quantity_adjustments_spec.rb +0 -298
- data/spec/models/spree/promotion/actions/free_shipping_spec.rb +0 -61
- data/spec/models/spree/promotion/rules/first_order_spec.rb +0 -87
- data/spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb +0 -71
- data/spec/models/spree/promotion/rules/item_total_spec.rb +0 -128
- data/spec/models/spree/promotion/rules/nth_order_spec.rb +0 -72
- data/spec/models/spree/promotion/rules/one_use_per_user_spec.rb +0 -54
- data/spec/models/spree/promotion/rules/option_value_spec.rb +0 -96
- data/spec/models/spree/promotion/rules/product_spec.rb +0 -193
- data/spec/models/spree/promotion/rules/store_spec.rb +0 -35
- data/spec/models/spree/promotion/rules/taxon_spec.rb +0 -226
- data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +0 -33
- data/spec/models/spree/promotion/rules/user_role_spec.rb +0 -88
- data/spec/models/spree/promotion/rules/user_spec.rb +0 -39
- data/spec/models/spree/promotion_action_spec.rb +0 -44
- data/spec/models/spree/promotion_category_spec.rb +0 -19
- data/spec/models/spree/promotion_code/batch_builder_spec.rb +0 -107
- data/spec/models/spree/promotion_code_batch_spec.rb +0 -54
- data/spec/models/spree/promotion_code_spec.rb +0 -206
- data/spec/models/spree/promotion_handler/cart_spec.rb +0 -132
- data/spec/models/spree/promotion_handler/coupon_spec.rb +0 -419
- data/spec/models/spree/promotion_handler/page_spec.rb +0 -45
- data/spec/models/spree/promotion_handler/shipping_spec.rb +0 -96
- data/spec/models/spree/promotion_rule_spec.rb +0 -34
- data/spec/models/spree/promotion_spec.rb +0 -945
- data/spec/models/spree/refund_spec.rb +0 -200
- data/spec/models/spree/reimbursement/credit_spec.rb +0 -38
- data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +0 -144
- data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +0 -85
- data/spec/models/spree/reimbursement_performer_spec.rb +0 -33
- data/spec/models/spree/reimbursement_spec.rb +0 -278
- data/spec/models/spree/reimbursement_tax_calculator_spec.rb +0 -52
- data/spec/models/spree/reimbursement_type/credit_spec.rb +0 -56
- data/spec/models/spree/reimbursement_type/exchange_spec.rb +0 -48
- data/spec/models/spree/reimbursement_type/original_payment_spec.rb +0 -110
- data/spec/models/spree/reimbursement_type/store_credit_spec.rb +0 -111
- data/spec/models/spree/return_authorization_spec.rb +0 -226
- data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +0 -79
- data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +0 -59
- data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +0 -86
- data/spec/models/spree/return_item/eligibility_validator/order_completed_spec.rb +0 -35
- data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +0 -31
- data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +0 -42
- data/spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb +0 -66
- data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +0 -43
- data/spec/models/spree/return_item_spec.rb +0 -785
- data/spec/models/spree/returns_calculator_spec.rb +0 -16
- data/spec/models/spree/shipment_spec.rb +0 -914
- data/spec/models/spree/shipping_calculator_spec.rb +0 -45
- data/spec/models/spree/shipping_manifest_spec.rb +0 -110
- data/spec/models/spree/shipping_method_spec.rb +0 -292
- data/spec/models/spree/shipping_rate_spec.rb +0 -154
- data/spec/models/spree/shipping_rate_tax_spec.rb +0 -79
- data/spec/models/spree/state_spec.rb +0 -43
- data/spec/models/spree/stock/allocator/on_hand_first_spec.rb +0 -146
- data/spec/models/spree/stock/availability_spec.rb +0 -143
- data/spec/models/spree/stock/availability_validator_spec.rb +0 -140
- data/spec/models/spree/stock/content_item_spec.rb +0 -70
- data/spec/models/spree/stock/differentiator_spec.rb +0 -41
- data/spec/models/spree/stock/estimator_spec.rb +0 -241
- data/spec/models/spree/stock/inventory_unit_builder_spec.rb +0 -34
- data/spec/models/spree/stock/inventory_units_finalizer_spec.rb +0 -58
- data/spec/models/spree/stock/location_filter/active_spec.rb +0 -22
- data/spec/models/spree/stock/location_sorter/default_first_spec.rb +0 -22
- data/spec/models/spree/stock/location_sorter/unsorted_spec.rb +0 -21
- data/spec/models/spree/stock/package_spec.rb +0 -182
- data/spec/models/spree/stock/quantifier_spec.rb +0 -113
- data/spec/models/spree/stock/shipping_rate_selector_spec.rb +0 -18
- data/spec/models/spree/stock/shipping_rate_sorter_spec.rb +0 -18
- data/spec/models/spree/stock/simple_coordinator_spec.rb +0 -264
- data/spec/models/spree/stock/splitter/backordered_spec.rb +0 -31
- data/spec/models/spree/stock/splitter/base_spec.rb +0 -22
- data/spec/models/spree/stock/splitter/shipping_category_spec.rb +0 -48
- data/spec/models/spree/stock/splitter/weight_spec.rb +0 -31
- data/spec/models/spree/stock/splitter_chain_spec.rb +0 -66
- data/spec/models/spree/stock_item_spec.rb +0 -348
- data/spec/models/spree/stock_location_spec.rb +0 -288
- data/spec/models/spree/stock_movement_spec.rb +0 -58
- data/spec/models/spree/stock_quantities_spec.rb +0 -249
- data/spec/models/spree/store_credit_category_spec.rb +0 -19
- data/spec/models/spree/store_credit_event_spec.rb +0 -328
- data/spec/models/spree/store_credit_spec.rb +0 -900
- data/spec/models/spree/store_selector/by_server_name_spec.rb +0 -28
- data/spec/models/spree/store_selector/legacy_spec.rb +0 -46
- data/spec/models/spree/store_spec.rb +0 -156
- data/spec/models/spree/tax/order_adjuster_spec.rb +0 -35
- data/spec/models/spree/tax/shipping_rate_taxer_spec.rb +0 -59
- data/spec/models/spree/tax/tax_location_spec.rb +0 -79
- data/spec/models/spree/tax/taxation_integration_spec.rb +0 -815
- data/spec/models/spree/tax_calculator/default_spec.rb +0 -56
- data/spec/models/spree/tax_category_spec.rb +0 -50
- data/spec/models/spree/tax_rate_spec.rb +0 -317
- data/spec/models/spree/taxon_spec.rb +0 -197
- data/spec/models/spree/taxonomy_spec.rb +0 -15
- data/spec/models/spree/taxons/paperclip_attachment_spec.rb +0 -29
- data/spec/models/spree/unit_cancel_spec.rb +0 -126
- data/spec/models/spree/user_last_url_storer/rules/authentication_rule_spec.rb +0 -31
- data/spec/models/spree/user_last_url_storer_spec.rb +0 -60
- data/spec/models/spree/user_spec.rb +0 -247
- data/spec/models/spree/validations/db_maximum_length_validator_spec.rb +0 -33
- data/spec/models/spree/variant/price_selector_spec.rb +0 -90
- data/spec/models/spree/variant/pricing_options_spec.rb +0 -204
- data/spec/models/spree/variant/scopes_spec.rb +0 -94
- data/spec/models/spree/variant/vat_price_generator_spec.rb +0 -77
- data/spec/models/spree/variant_property_rule_condition_spec.rb +0 -17
- data/spec/models/spree/variant_property_rule_spec.rb +0 -85
- data/spec/models/spree/variant_property_rule_value_spec.rb +0 -20
- data/spec/models/spree/variant_spec.rb +0 -862
- data/spec/models/spree/wallet_payment_source_spec.rb +0 -77
- data/spec/models/spree/wallet_spec.rb +0 -155
- data/spec/models/spree/zone_spec.rb +0 -248
- data/spec/rails_helper.rb +0 -46
- data/spec/shared_examples/calculator_shared_examples.rb +0 -10
- data/spec/spec_helper.rb +0 -36
- data/spec/support/big_decimal.rb +0 -7
- data/spec/support/concerns/default_price.rb +0 -44
- data/spec/support/concerns/payment_source.rb +0 -66
- data/spec/support/concerns/working_factories.rb +0 -15
- data/spec/support/dummy_ability.rb +0 -7
- /data/lib/generators/{spree → solidus}/install/templates/vendor/assets/javascripts/spree/backend/all.js +0 -0
- /data/lib/generators/{spree → solidus}/install/templates/vendor/assets/javascripts/spree/frontend/all.js +0 -0
- /data/lib/generators/{spree → solidus}/install/templates/vendor/assets/stylesheets/spree/backend/all.css +0 -0
- /data/lib/generators/{spree → solidus}/install/templates/vendor/assets/stylesheets/spree/frontend/all.css +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 67f52a65e6e81c1ce08998d4e78697917ec11a458b2186407c8787e5f720f438
|
|
4
|
+
data.tar.gz: 744a81976801433d6db59d9b91838b5f726a5760248d5d35bf5479d10b6548c8
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 656ba324a01abefe949d50477b37f1414176ebc8ae025e6875d61d505fd71255243ef3814cf5c3283a32910c4275c434883e445257be8d3e0c98c42b256858d0
|
|
7
|
+
data.tar.gz: 4efde61091581ff5c04c56363b070278be880cf797ac5d0c494667842486c6896b20c5feb5342e565e891e7dd2b8f3c52c350956258210d6b074cb8664452099
|
|
@@ -51,12 +51,41 @@ Spree.ajax = function(url, options) {
|
|
|
51
51
|
return $.ajax(url, options);
|
|
52
52
|
};
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
/**
|
|
55
|
+
* @deprecated Spree.routes will be removed in a future release. Please use Spree.pathFor instead.
|
|
56
|
+
* See: https://github.com/solidusio/solidus/issues/3405
|
|
57
|
+
*/
|
|
58
|
+
Spree.routesDeprecationProxy = {
|
|
59
|
+
get: function(obj, prop) {
|
|
60
|
+
<% if Rails.env != "production" %>
|
|
61
|
+
console.log("Spree.routes is deprecated, please use pathFor instead. See: https://github.com/solidusio/solidus/issues/3405");
|
|
62
|
+
<% end %>
|
|
63
|
+
|
|
64
|
+
return obj[prop]
|
|
65
|
+
},
|
|
66
|
+
|
|
67
|
+
set: function(obj, prop, value) {
|
|
68
|
+
<% if Rails.env != "production" %>
|
|
69
|
+
console.log("Spree.routes is deprecated, please use pathFor instead. See: https://github.com/solidusio/solidus/issues/3405");
|
|
70
|
+
<% end %>
|
|
71
|
+
|
|
72
|
+
obj[prop] = value
|
|
73
|
+
return value;
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
var frontend_routes = {
|
|
55
78
|
states_search: Spree.pathFor('api/states'),
|
|
56
79
|
apply_coupon_code: function(order_id) {
|
|
57
80
|
return Spree.pathFor("api/orders/" + order_id + "/coupon_codes");
|
|
58
81
|
}
|
|
59
|
-
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
if(typeof Proxy == "function") {
|
|
85
|
+
Spree.routes = new Proxy(frontend_routes, Spree.routesDeprecationProxy);
|
|
86
|
+
} else {
|
|
87
|
+
Spree.routes = frontend_routes
|
|
88
|
+
}
|
|
60
89
|
|
|
61
90
|
Spree.getJSON = function(url, data, success) {
|
|
62
91
|
if (typeof data === 'function') {
|
|
@@ -4,6 +4,7 @@ require 'cancan'
|
|
|
4
4
|
require_dependency 'spree/core/controller_helpers/strong_parameters'
|
|
5
5
|
|
|
6
6
|
class Spree::BaseController < ApplicationController
|
|
7
|
+
include Spree::Core::ControllerHelpers::CurrentHost
|
|
7
8
|
include Spree::Core::ControllerHelpers::Auth
|
|
8
9
|
include Spree::Core::ControllerHelpers::Common
|
|
9
10
|
include Spree::Core::ControllerHelpers::PaymentParameters
|
|
@@ -7,7 +7,7 @@ module Spree
|
|
|
7
7
|
@store = @order.store
|
|
8
8
|
subject = build_subject(t('.subject'), resend)
|
|
9
9
|
|
|
10
|
-
mail(to: @order.email, from: from_address(@store), subject: subject)
|
|
10
|
+
mail(to: @order.email, bcc: bcc_address(@store), from: from_address(@store), subject: subject)
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
def cancel_email(order, resend = false)
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'mini_magick'
|
|
4
|
+
|
|
5
|
+
module Spree
|
|
6
|
+
module ActiveStorageAdapter
|
|
7
|
+
# Decorares AtiveStorage attachment to add methods exptected by Solidus'
|
|
8
|
+
# Paperclip-oriented attachment support.
|
|
9
|
+
class Attachment
|
|
10
|
+
delegate_missing_to :@attachment
|
|
11
|
+
|
|
12
|
+
DEFAULT_SIZE = '100%'
|
|
13
|
+
|
|
14
|
+
def initialize(attachment, styles: {})
|
|
15
|
+
@attachment = attachment
|
|
16
|
+
@styles = styles
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def exists?
|
|
20
|
+
attached?
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def filename
|
|
24
|
+
blob.filename.to_s
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def url(style = nil)
|
|
28
|
+
variant(style).url
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def variant(style = nil)
|
|
32
|
+
size = style_to_size(style&.to_sym)
|
|
33
|
+
@attachment.variant(
|
|
34
|
+
resize: size,
|
|
35
|
+
strip: true,
|
|
36
|
+
'auto-orient': true,
|
|
37
|
+
colorspace: 'sRGB',
|
|
38
|
+
).processed
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def height
|
|
42
|
+
metadata[:height]
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def width
|
|
46
|
+
metadata[:width]
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def destroy
|
|
50
|
+
return false unless attached?
|
|
51
|
+
|
|
52
|
+
purge
|
|
53
|
+
true
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
private
|
|
57
|
+
|
|
58
|
+
def metadata
|
|
59
|
+
analyze unless analyzed?
|
|
60
|
+
|
|
61
|
+
@attachment.metadata
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def style_to_size(style)
|
|
65
|
+
@styles.fetch(style) { DEFAULT_SIZE }
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Spree
|
|
4
|
+
module ActiveStorageAdapter
|
|
5
|
+
# Contains normalization methods to make objects compliant with
|
|
6
|
+
# ActiveStorage API.
|
|
7
|
+
module Normalization
|
|
8
|
+
# Normalizes an attachable
|
|
9
|
+
def normalize_attachable(attachable)
|
|
10
|
+
case attachable
|
|
11
|
+
when ActiveStorage::Blob, ActionDispatch::Http::UploadedFile,
|
|
12
|
+
Rack::Test::UploadedFile, Hash, String
|
|
13
|
+
attachable
|
|
14
|
+
when Attachment, ActiveStorage::Attached
|
|
15
|
+
attachable_blob(attachable)
|
|
16
|
+
else # assume it's an IO
|
|
17
|
+
attachable_io(attachable)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
def attachable_blob(attachable)
|
|
24
|
+
attachable.blob
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def attachable_io(attachable)
|
|
28
|
+
filename = if attachable.respond_to?(:to_path)
|
|
29
|
+
attachable.to_path
|
|
30
|
+
else
|
|
31
|
+
SecureRandom.uuid
|
|
32
|
+
end
|
|
33
|
+
attachable.rewind
|
|
34
|
+
|
|
35
|
+
{ io: attachable, filename: filename }
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Spree
|
|
4
|
+
# Adapts ActiveStorage interface to make it compliant with Solidus'
|
|
5
|
+
# Paperclip-oriented attachment support.
|
|
6
|
+
module ActiveStorageAdapter
|
|
7
|
+
extend ActiveSupport::Concern
|
|
8
|
+
include Spree::ActiveStorageAdapter::Normalization
|
|
9
|
+
|
|
10
|
+
included do
|
|
11
|
+
next if Rails.gem_version >= Gem::Version.new('6.1.0.alpha')
|
|
12
|
+
|
|
13
|
+
abort <<~MESSAGE
|
|
14
|
+
Configuration Error: Solidus ActiveStorage attachment adpater requires Rails >= 6.1.0.
|
|
15
|
+
|
|
16
|
+
Spree::Config.image_attachment_module preference is set to #{Spree::Config.image_attachment_module}
|
|
17
|
+
Spree::Config.taxon_attachment_module preference is set to #{Spree::Config.taxon_attachment_module}
|
|
18
|
+
Rails version is #{Rails.gem_version}
|
|
19
|
+
|
|
20
|
+
To solve the problem you can upgrade to a Rails version greater than or equal to 6.1.0
|
|
21
|
+
or use legacy Paperclip attachment adapter by editing `config/initialiers/spree/rb`:
|
|
22
|
+
config.image_attachment_module = 'Spree::Image::PaperclipAttachment'
|
|
23
|
+
config.taxon_attachment_module = 'Spree::Taxon::PaperclipAttachment'
|
|
24
|
+
MESSAGE
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
class_methods do
|
|
28
|
+
attr_reader :attachment_name
|
|
29
|
+
attr_reader :attachment_definition
|
|
30
|
+
|
|
31
|
+
# Specifies the relation between a single attachment and the model
|
|
32
|
+
def has_attachment(name, definition)
|
|
33
|
+
@attachment_name = name.to_sym
|
|
34
|
+
@attachment_definition = definition
|
|
35
|
+
|
|
36
|
+
has_one_attached attachment_name
|
|
37
|
+
|
|
38
|
+
override_reader
|
|
39
|
+
override_writer
|
|
40
|
+
define_image_validation
|
|
41
|
+
define_presence_reader
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def attachment_definitions
|
|
45
|
+
{ attachment_name => attachment_definition }
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
private
|
|
49
|
+
|
|
50
|
+
def override_reader
|
|
51
|
+
method_name = attachment_name
|
|
52
|
+
override = Module.new do
|
|
53
|
+
define_method method_name do |*args|
|
|
54
|
+
attachment = Attachment.new(super(), styles: styles)
|
|
55
|
+
if args.empty?
|
|
56
|
+
attachment
|
|
57
|
+
else
|
|
58
|
+
style = args.first || default_style
|
|
59
|
+
attachment.url(style)
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
prepend override
|
|
64
|
+
|
|
65
|
+
alias_method :attachment, method_name if method_name != :attachment
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def override_writer
|
|
69
|
+
method_name = :"#{attachment_name}="
|
|
70
|
+
override = Module.new do
|
|
71
|
+
define_method method_name do |attachable|
|
|
72
|
+
no_other_changes = persisted? && !changed?
|
|
73
|
+
super(normalize_attachable(attachable))
|
|
74
|
+
save if no_other_changes
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
prepend override
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def define_image_validation
|
|
81
|
+
define_method :"#{attachment_name}_is_an_image" do
|
|
82
|
+
return unless attachment.attached?
|
|
83
|
+
return if attachment.image?
|
|
84
|
+
|
|
85
|
+
errors.add(self.class.attachment_name, 'is not an image')
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def define_presence_reader
|
|
90
|
+
define_method :"#{attachment_name}_present?" do
|
|
91
|
+
attachment.attached?
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def styles
|
|
97
|
+
self.class.attachment_definition[:styles]
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def default_style
|
|
101
|
+
self.class.attachment_definition[:default_style]
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def filename
|
|
105
|
+
attachment.filename
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def url(style = default_style)
|
|
109
|
+
attachment.url(style)
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def destroy_attachment(_name)
|
|
113
|
+
attachment.destroy
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'discard'
|
|
4
|
+
|
|
5
|
+
module Spree
|
|
6
|
+
module SoftDeletable
|
|
7
|
+
extend ActiveSupport::Concern
|
|
8
|
+
|
|
9
|
+
included do
|
|
10
|
+
acts_as_paranoid
|
|
11
|
+
include Spree::ParanoiaDeprecations::InstanceMethods
|
|
12
|
+
extend Spree::ParanoiaDeprecations::ClassMethods
|
|
13
|
+
|
|
14
|
+
include Discard::Model
|
|
15
|
+
self.discard_column = :deleted_at
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -5,62 +5,92 @@ module Spree
|
|
|
5
5
|
extend ActiveSupport::Concern
|
|
6
6
|
|
|
7
7
|
included do
|
|
8
|
-
has_many :user_addresses, -> { active },
|
|
8
|
+
has_many :user_addresses, -> { active }, foreign_key: "user_id", class_name: "Spree::UserAddress" do
|
|
9
9
|
def find_first_by_address_values(address_attrs)
|
|
10
10
|
detect { |ua| ua.address == Spree::Address.new(address_attrs) }
|
|
11
11
|
end
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
# the checks of persisted? allow us to build a User and associate Addresses at once
|
|
13
|
+
def mark_default(user_address, address_type: :shipping)
|
|
14
|
+
column_for_default = address_type == :shipping ? :default : :default_billing
|
|
16
15
|
ActiveRecord::Base.transaction do
|
|
17
|
-
(self - [user_address]).each do |
|
|
18
|
-
|
|
16
|
+
(self - [user_address]).each do |address| # update_all would be nice, but it bypasses ActiveRecord callbacks
|
|
17
|
+
if address.persisted?
|
|
18
|
+
address.update!(column_for_default => false)
|
|
19
|
+
else
|
|
20
|
+
address.write_attribute(column_for_default, false)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
if user_address.persisted?
|
|
25
|
+
user_address.update!(column_for_default => true, archived: false)
|
|
26
|
+
else
|
|
27
|
+
user_address.write_attribute(column_for_default, true)
|
|
19
28
|
end
|
|
20
|
-
user_address.persisted? ? user_address.update!(default: true, archived: false) : user_address.default = true
|
|
21
29
|
end
|
|
22
30
|
end
|
|
23
31
|
end
|
|
24
32
|
|
|
25
33
|
has_many :addresses, through: :user_addresses
|
|
26
34
|
|
|
27
|
-
|
|
28
|
-
|
|
35
|
+
has_one :default_user_bill_address, ->{ default_billing }, class_name: 'Spree::UserAddress', foreign_key: 'user_id'
|
|
36
|
+
has_one :bill_address, through: :default_user_bill_address, source: :address
|
|
29
37
|
|
|
30
|
-
has_one :
|
|
31
|
-
has_one :
|
|
32
|
-
alias_method :ship_address, :default_address
|
|
38
|
+
has_one :default_user_ship_address, ->{ default_shipping }, class_name: 'Spree::UserAddress', foreign_key: 'user_id'
|
|
39
|
+
has_one :ship_address, through: :default_user_ship_address, source: :address
|
|
33
40
|
end
|
|
34
41
|
|
|
35
|
-
def
|
|
36
|
-
#
|
|
37
|
-
|
|
38
|
-
super(address)
|
|
42
|
+
def default_address
|
|
43
|
+
Spree::Deprecation.warn "#default_address is deprecated. Please start using #ship_address."
|
|
44
|
+
ship_address
|
|
39
45
|
end
|
|
40
46
|
|
|
41
|
-
def
|
|
42
|
-
|
|
47
|
+
def default_user_address
|
|
48
|
+
Spree::Deprecation.warn "#default_user_address is deprecated. Please start using #default_user_ship_address."
|
|
49
|
+
default_user_ship_address
|
|
43
50
|
end
|
|
44
51
|
|
|
45
52
|
def default_address=(address)
|
|
46
|
-
|
|
53
|
+
Spree::Deprecation.warn(
|
|
54
|
+
"#default_address= does not take Spree::Config.automatic_default_address into account and is deprecated. " \
|
|
55
|
+
"Please use #ship_address=."
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
self.ship_address = address if address
|
|
47
59
|
end
|
|
48
60
|
|
|
49
61
|
def default_address_attributes=(attributes)
|
|
50
62
|
# see "Nested Attributes Examples" section of http://apidock.com/rails/ActionView/Helpers/FormHelper/fields_for
|
|
51
63
|
# this #{fieldname}_attributes= method works with fields_for in the views
|
|
52
64
|
# even without declaring accepts_nested_attributes_for
|
|
53
|
-
|
|
54
|
-
end
|
|
65
|
+
Spree::Deprecation.warn "#default_address_attributes= is deprecated. Please use #ship_address_attributes=."
|
|
55
66
|
|
|
56
|
-
|
|
67
|
+
self.default_address = Spree::Address.immutable_merge(ship_address, attributes)
|
|
68
|
+
end
|
|
57
69
|
|
|
58
70
|
# saves address in address book
|
|
59
71
|
# sets address to the default if automatic_default_address is set to true
|
|
60
72
|
# if address is nil, does nothing and returns nil
|
|
61
73
|
def ship_address=(address)
|
|
62
|
-
|
|
63
|
-
|
|
74
|
+
if address
|
|
75
|
+
save_in_address_book(address.attributes,
|
|
76
|
+
Spree::Config.automatic_default_address)
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def ship_address_attributes=(attributes)
|
|
81
|
+
self.ship_address = Spree::Address.immutable_merge(ship_address, attributes)
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def bill_address=(address)
|
|
85
|
+
if address
|
|
86
|
+
save_in_address_book(address.attributes,
|
|
87
|
+
Spree::Config.automatic_default_address,
|
|
88
|
+
:billing)
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def bill_address_attributes=(attributes)
|
|
93
|
+
self.bill_address = Spree::Address.immutable_merge(bill_address, attributes)
|
|
64
94
|
end
|
|
65
95
|
|
|
66
96
|
# saves order.ship_address and order.bill_address in address book
|
|
@@ -73,15 +103,16 @@ module Spree
|
|
|
73
103
|
order.ship_address.attributes,
|
|
74
104
|
Spree::Config.automatic_default_address
|
|
75
105
|
)
|
|
76
|
-
self.ship_address_id = address.id if address
|
|
106
|
+
self.ship_address_id = address.id if address&.persisted?
|
|
77
107
|
end
|
|
78
108
|
|
|
79
109
|
if order.bill_address
|
|
80
110
|
address = save_in_address_book(
|
|
81
111
|
order.bill_address.attributes,
|
|
82
|
-
|
|
112
|
+
Spree::Config.automatic_default_address,
|
|
113
|
+
:billing
|
|
83
114
|
)
|
|
84
|
-
self.bill_address_id = address.id if address
|
|
115
|
+
self.bill_address_id = address.id if address&.persisted?
|
|
85
116
|
end
|
|
86
117
|
|
|
87
118
|
save! # In case the ship_address_id or bill_address_id was set
|
|
@@ -92,8 +123,9 @@ module Spree
|
|
|
92
123
|
# treated as value equality to de-dup among existing Addresses
|
|
93
124
|
# @param default set whether or not this address will show up from
|
|
94
125
|
# #default_address or not
|
|
95
|
-
def save_in_address_book(address_attributes, default = false)
|
|
96
|
-
return nil
|
|
126
|
+
def save_in_address_book(address_attributes, default = false, address_type = :shipping)
|
|
127
|
+
return nil if address_attributes.blank?
|
|
128
|
+
|
|
97
129
|
address_attributes = address_attributes.to_h.with_indifferent_access
|
|
98
130
|
|
|
99
131
|
new_address = Spree::Address.factory(address_attributes)
|
|
@@ -106,7 +138,7 @@ module Spree
|
|
|
106
138
|
end
|
|
107
139
|
|
|
108
140
|
user_address = prepare_user_address(new_address)
|
|
109
|
-
user_addresses.mark_default(user_address) if default || first_one
|
|
141
|
+
user_addresses.mark_default(user_address, address_type: address_type) if default || first_one
|
|
110
142
|
|
|
111
143
|
if persisted?
|
|
112
144
|
user_address.save!
|
|
@@ -116,20 +148,36 @@ module Spree
|
|
|
116
148
|
# user_addresses need to be reset to get the new ordering based on any changes
|
|
117
149
|
# {default_,}user_address needs to be reset as its result is likely to have changed.
|
|
118
150
|
user_addresses.reset
|
|
119
|
-
association(:
|
|
120
|
-
association(:
|
|
151
|
+
association(:default_user_ship_address).reset
|
|
152
|
+
association(:ship_address).reset
|
|
153
|
+
association(:default_user_bill_address).reset
|
|
154
|
+
association(:bill_address).reset
|
|
121
155
|
end
|
|
122
156
|
|
|
123
157
|
user_address.address
|
|
124
158
|
end
|
|
125
159
|
|
|
126
160
|
def mark_default_address(address)
|
|
161
|
+
Spree::Deprecation.warn(
|
|
162
|
+
"#mark_default_address is deprecated and it sets the ship_address only. " \
|
|
163
|
+
"Please use #mark_default_ship_address."
|
|
164
|
+
)
|
|
165
|
+
|
|
166
|
+
mark_default_ship_address(address)
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
def mark_default_ship_address(address)
|
|
127
170
|
user_addresses.mark_default(user_addresses.find_by(address: address))
|
|
128
171
|
end
|
|
129
172
|
|
|
173
|
+
def mark_default_bill_address(address)
|
|
174
|
+
user_addresses.mark_default(user_addresses.find_by(address: address), address_type: :billing)
|
|
175
|
+
end
|
|
176
|
+
|
|
130
177
|
def remove_from_address_book(address_id)
|
|
131
178
|
user_address = user_addresses.find_by(address_id: address_id)
|
|
132
179
|
if user_address
|
|
180
|
+
remove_user_address_reference(address_id)
|
|
133
181
|
user_address.update(archived: true, default: false)
|
|
134
182
|
else
|
|
135
183
|
false
|
|
@@ -145,5 +193,11 @@ module Spree
|
|
|
145
193
|
user_address.archived = false
|
|
146
194
|
user_address
|
|
147
195
|
end
|
|
196
|
+
|
|
197
|
+
def remove_user_address_reference(address_id)
|
|
198
|
+
self.bill_address_id = bill_address_id == address_id.to_i ? nil : bill_address_id
|
|
199
|
+
self.ship_address_id = ship_address_id == address_id.to_i ? nil : ship_address_id
|
|
200
|
+
save if changed?
|
|
201
|
+
end
|
|
148
202
|
end
|
|
149
203
|
end
|
|
@@ -34,12 +34,13 @@ module Spree
|
|
|
34
34
|
|
|
35
35
|
include Spree::RansackableAttributes unless included_modules.include?(Spree::RansackableAttributes)
|
|
36
36
|
|
|
37
|
+
ransack_alias :firstname_or_lastname, :addresses_firstname_or_addresses_lastname
|
|
37
38
|
self.whitelisted_ransackable_associations = %w[addresses spree_roles]
|
|
38
|
-
self.whitelisted_ransackable_attributes = %w[id email created_at]
|
|
39
|
+
self.whitelisted_ransackable_attributes = %w[firstname_or_lastname id email created_at]
|
|
39
40
|
end
|
|
40
41
|
|
|
41
42
|
def wallet
|
|
42
|
-
Spree::Wallet.new(self)
|
|
43
|
+
@wallet ||= Spree::Wallet.new(self)
|
|
43
44
|
end
|
|
44
45
|
|
|
45
46
|
# has_spree_role? simply needs to return true or false whether a user has a role or not.
|
data/app/models/spree/ability.rb
CHANGED
|
@@ -14,6 +14,13 @@ module Spree
|
|
|
14
14
|
|
|
15
15
|
attr_reader :user
|
|
16
16
|
|
|
17
|
+
CUSTOM_ALIASES_MAP = {
|
|
18
|
+
delete: :destroy,
|
|
19
|
+
display: :read,
|
|
20
|
+
new_action: :create,
|
|
21
|
+
read: :show
|
|
22
|
+
}.freeze
|
|
23
|
+
|
|
17
24
|
# Allows us to go beyond the standard cancan initialize method which makes it difficult for engines to
|
|
18
25
|
# modify the default +Ability+ of an application. The +ability+ argument must be a class that includes
|
|
19
26
|
# the +CanCan::Ability+ module. The registered ability should behave properly as a stand-alone class
|
|
@@ -29,23 +36,40 @@ module Spree
|
|
|
29
36
|
def initialize(current_user)
|
|
30
37
|
@user = current_user || Spree.user_class.new
|
|
31
38
|
|
|
32
|
-
alias_actions
|
|
33
39
|
activate_permission_sets
|
|
34
40
|
register_extension_abilities
|
|
35
41
|
end
|
|
36
42
|
|
|
43
|
+
def can?(action, *args)
|
|
44
|
+
super(normalize_action(action), *args)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def model_adapter(model_class, action)
|
|
48
|
+
super(model_class, normalize_action(action))
|
|
49
|
+
end
|
|
50
|
+
|
|
37
51
|
private
|
|
38
52
|
|
|
39
|
-
def
|
|
40
|
-
|
|
53
|
+
def normalize_action(action)
|
|
54
|
+
return action unless Spree::Config.use_custom_cancancan_actions
|
|
55
|
+
|
|
56
|
+
normalized_action = CUSTOM_ALIASES_MAP.fetch(action, action)
|
|
57
|
+
|
|
58
|
+
if action == :read
|
|
59
|
+
Spree::Deprecation.warn <<~WARN, caller(3)
|
|
60
|
+
The behavior of CanCanCan `:read` action alias will be changing in Solidus 3.0.
|
|
61
|
+
The current alias is: `:show, :to => :read`,
|
|
62
|
+
the new alias will be compliant with CanCanCan's default: `index, :show, :to => :read`
|
|
63
|
+
WARN
|
|
64
|
+
elsif CUSTOM_ALIASES_MAP.key? action
|
|
65
|
+
Spree::Deprecation.warn <<~WARN, caller(3)
|
|
66
|
+
Calling CanCanCan alias action #{action.inspect} is deprecated.
|
|
67
|
+
In Solidus 3.0 non-standard CanCanCan action aliases will be replaced with default ones,
|
|
68
|
+
please replace with #{normalized_action.inspect}.
|
|
69
|
+
WARN
|
|
70
|
+
end
|
|
41
71
|
|
|
42
|
-
|
|
43
|
-
alias_action :delete, to: :destroy
|
|
44
|
-
alias_action :edit, to: :update
|
|
45
|
-
alias_action :new, to: :create
|
|
46
|
-
alias_action :new_action, to: :create
|
|
47
|
-
alias_action :show, to: :read
|
|
48
|
-
alias_action :index, :read, to: :display
|
|
72
|
+
normalized_action
|
|
49
73
|
end
|
|
50
74
|
|
|
51
75
|
# Before, this was the only way to extend this ability. Permission sets have been added since.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Spree
|
|
4
|
+
class Address
|
|
5
|
+
# Provides a value object to help transitioning from legacy
|
|
6
|
+
# firstname and lastname fields to a unified name field.
|
|
7
|
+
class Name
|
|
8
|
+
attr_reader :first_name, :last_name, :value
|
|
9
|
+
|
|
10
|
+
# Creates an instance of Spree::Address::Name parsing input attributes.
|
|
11
|
+
# @param attributes [Hash] an hash possibly containing name-related
|
|
12
|
+
# attributes (name, firstname, lastname, first_name, last_name)
|
|
13
|
+
# @return [Spree::Address::Name] the object created
|
|
14
|
+
def self.from_attributes(attributes)
|
|
15
|
+
params = attributes.with_indifferent_access
|
|
16
|
+
|
|
17
|
+
if params[:name].present?
|
|
18
|
+
Spree::Address::Name.new(params[:name])
|
|
19
|
+
elsif params[:firstname].present?
|
|
20
|
+
Spree::Address::Name.new(params[:firstname], params[:lastname])
|
|
21
|
+
elsif params[:first_name].present?
|
|
22
|
+
Spree::Address::Name.new(params[:first_name], params[:last_name])
|
|
23
|
+
else
|
|
24
|
+
Spree::Address::Name.new
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def initialize(*components)
|
|
29
|
+
@value = components.join(' ').strip
|
|
30
|
+
initialize_name_components(components)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def to_s
|
|
34
|
+
@value
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
private
|
|
38
|
+
|
|
39
|
+
def initialize_name_components(components)
|
|
40
|
+
if components.size == 2
|
|
41
|
+
@first_name = components[0].to_s
|
|
42
|
+
@last_name = components[1].to_s
|
|
43
|
+
else
|
|
44
|
+
@first_name, @last_name = @value.split(/[[:space:]]/, 2)
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|