solidus_core 3.1.3 → 3.1.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 25d076da4eef33c845f1da39a5bb6e7b6164c98372bc59f1d9cd441fc182576a
4
- data.tar.gz: f4b6369b678db721bd71e67323468e376e6ab59bfb67cb766cbc05927a42cc7c
3
+ metadata.gz: 765367a8eed914a5abca0f078c5ffd7d3e341c504e10311e952d466e10027c32
4
+ data.tar.gz: '08f36210b6b9bbf66d82c5e4bf6fa161c9f1552c003c693d5afd732065c16abc'
5
5
  SHA512:
6
- metadata.gz: 5eec6a669e66e4fb3c2a492844ff0e73c60e06b14b959f9ea868995e2f5e766f1a6493da85ef3494e726e0ddbbc483dc93b524d4a07be31305edde61fe917d24
7
- data.tar.gz: aae29e7ece97dde8df64e368e2bddf5c9bd95cc5118a345d343d8625234355e15b9edf055f9aac7bca2d048235cff6b77de4cfcbd7ae81b544769924d7aa4c89
6
+ metadata.gz: 9b1189c36bd365b71dd7fe4e8ed68402db4c32d1e87ea2571b9c8ae0669ce68a1ffb8a06ec195ccdd06791d942847a10db93248bd71b324d853e724f0b0b7e16
7
+ data.tar.gz: f82f01282ead4f27433e352fb2f7d793187e7efa573fdf9627c37412e944afb312e4d4ef28d4dd550111aa215c0baa47632d9152f09baa1505c2a31186e13e4a
@@ -30,7 +30,9 @@ module Spree
30
30
  size = style_to_size(style)
31
31
  @attachment.variant(
32
32
  resize_to_limit: size,
33
- strip: true
33
+ saver: {
34
+ strip: true
35
+ }
34
36
  ).processed
35
37
  end
36
38
 
@@ -58,7 +60,7 @@ module Spree
58
60
  end
59
61
 
60
62
  def normalize_styles(styles)
61
- styles.transform_values { |v| v.split('x') }
63
+ styles.transform_values { |v| v.split('x').map(&:to_i) }
62
64
  end
63
65
 
64
66
  def style_to_size(style)
@@ -62,18 +62,15 @@ class Spree::OrderShipping
62
62
  end
63
63
 
64
64
  inventory_units.map(&:shipment).uniq.each do |shipment|
65
- # Temporarily propagate the tracking number to the shipment as well
66
- # TODO: Remove tracking numbers from shipments.
67
- shipment.update!(tracking: tracking_number)
68
-
69
- next unless shipment.inventory_units.reload.all? { |iu| iu.shipped? || iu.canceled? }
70
- # TODO: make OrderShipping#ship_shipment call Shipment#ship! rather than
71
- # having Shipment#ship! call OrderShipping#ship_shipment. We only really
72
- # need this `update_columns` for the specs, until we make that change.
73
- shipment.update_columns(state: 'shipped', shipped_at: Time.current)
65
+ if shipment.inventory_units.reload.all? { |iu| iu.shipped? || iu.canceled? }
66
+ shipment.update!(state: "shipped", shipped_at: Time.current, tracking: tracking_number)
67
+ else
68
+ shipment.update!(tracking: tracking_number)
69
+ end
74
70
  end
75
71
 
76
72
  send_shipment_emails(carton) if stock_location.fulfillable? && !suppress_mailer # e.g. digital gift cards that aren't actually shipped
73
+ @order.shipments.reload
77
74
  @order.recalculate
78
75
 
79
76
  carton
@@ -45,6 +45,7 @@ module Spree
45
45
 
46
46
  has_many :variants,
47
47
  -> { where(is_master: false).order(:position) },
48
+ inverse_of: :product,
48
49
  class_name: 'Spree::Variant'
49
50
 
50
51
  has_many :variants_including_master,
@@ -5,12 +5,12 @@ class Spree::PromotionCode < Spree::Base
5
5
  belongs_to :promotion_code_batch, class_name: "Spree::PromotionCodeBatch", optional: true
6
6
  has_many :adjustments
7
7
 
8
+ before_validation :normalize_code
9
+
8
10
  validates :value, presence: true, uniqueness: { allow_blank: true, case_sensitive: true }
9
11
  validates :promotion, presence: true
10
12
  validate :promotion_not_apply_automatically, on: :create
11
13
 
12
- before_save :normalize_code
13
-
14
14
  self.whitelisted_ransackable_attributes = ['value']
15
15
 
16
16
  # Whether the promotion code has exceeded its usage restrictions
@@ -31,6 +31,14 @@ module Spree
31
31
  end
32
32
  end
33
33
 
34
+ # Sets this price's amount to a new value, parsing it if the new value is
35
+ # a string.
36
+ #
37
+ # @param price [String, #to_d] a new amount
38
+ def amount=(price)
39
+ self[:amount] = Spree::LocalizedNumber.parse(price)
40
+ end
41
+
34
42
  def description
35
43
  payment.payment_method.name
36
44
  end
@@ -40,6 +40,14 @@ class Spree::StoreCredit < Spree::PaymentSource
40
40
  extend Spree::DisplayMoney
41
41
  money_methods :amount, :amount_used, :amount_authorized
42
42
 
43
+ # Sets this store credit's amount to a new value,
44
+ # parsing it as a localized number if the new value is a string.
45
+ #
46
+ # @param number [String, #to_d] a new amount
47
+ def amount=(number)
48
+ self[:amount] = Spree::LocalizedNumber.parse(number)
49
+ end
50
+
43
51
  def amount_remaining
44
52
  return 0.0.to_d if invalidated?
45
53
  amount - amount_used - amount_authorized
@@ -12,7 +12,7 @@ module Spree
12
12
  # end
13
13
  #
14
14
  class EmailValidator < ActiveModel::EachValidator
15
- EMAIL_REGEXP = /\A([^@\.]|[^@\.]([^@\s]*)[^@\.])@([^@\s]+\.)+[^@\s]+\z/
15
+ EMAIL_REGEXP = URI::MailTo::EMAIL_REGEXP
16
16
 
17
17
  def validate_each(record, attribute, value)
18
18
  unless EMAIL_REGEXP.match? value
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Spree
4
- VERSION = "3.1.3"
4
+ VERSION = "3.1.6"
5
5
 
6
6
  def self.solidus_version
7
7
  VERSION
@@ -5,7 +5,7 @@ module Spree
5
5
  module BlacklistUrls
6
6
  def setup_url_blacklist(browser)
7
7
  if browser.respond_to?(:url_blacklist)
8
- browser.url_blacklist = ['http://fonts.googleapis.com']
8
+ browser.url_blacklist = ['https://fonts.googleapis.com']
9
9
  end
10
10
  end
11
11
  end
@@ -96,6 +96,7 @@ module DummyApp
96
96
  }
97
97
  }
98
98
  config.active_storage.service = :test
99
+ config.active_storage.variant_processor = ENV.fetch('ACTIVE_STORAGE_VARIANT_PROCESSOR', :mini_magick).to_sym
99
100
  end
100
101
  end
101
102
 
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ namespace :solidus do
4
+ desc 'Prints orders with invalid email (after fix for GHSA-qxmr-qxh6-2cc9)'
5
+ task check_orders_with_invalid_email: :environment do
6
+ matches = Spree::Order.find_each.reduce([]) do |matches, order|
7
+ order.email.nil? || Spree::EmailValidator::EMAIL_REGEXP.match?(order.email) ? matches : matches + [order]
8
+ end
9
+ if matches.any?
10
+ puts 'Email / ID / Number'
11
+ puts(matches.map do |order|
12
+ "#{order.email} / #{order.id} / #{order.number}"
13
+ end.join("\n"))
14
+ else
15
+ puts 'NO MATCHES'
16
+ end
17
+ end
18
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solidus_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.3
4
+ version: 3.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Solidus Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-11-17 00:00:00.000000000 Z
11
+ date: 2022-06-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionmailer
@@ -907,6 +907,7 @@ files:
907
907
  - lib/spree/testing_support/url_helpers.rb
908
908
  - lib/spree/user_class_handle.rb
909
909
  - lib/spree_core.rb
910
+ - lib/tasks/solidus/check_orders_with_invalid_email.rake
910
911
  - lib/tasks/solidus/delete_prices_with_nil_amount.rake
911
912
  - solidus_core.gemspec
912
913
  - vendor/assets/javascripts/jquery.payment.js
@@ -953,7 +954,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
953
954
  - !ruby/object:Gem::Version
954
955
  version: 1.8.23
955
956
  requirements: []
956
- rubygems_version: 3.1.2
957
+ rubygems_version: 3.2.31
957
958
  signing_key:
958
959
  specification_version: 4
959
960
  summary: Essential models, mailers, and classes for the Solidus e-commerce project.