spree_core 5.4.0.rc7 → 5.4.0.rc8
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
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e7f093947be22917f630a9dba320707abe88feebd4b9c52ab6cda4bdd466dce3
|
|
4
|
+
data.tar.gz: a3506d0767031f85540001a3619ea350c0ee6099bb138c79e612f5a79369b0ed
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: bde43c704ad11a1ce86595a27d692f71e23fb598d1086bf656c390aacc0754d579ea8d9d99f5b5f8f0a23c57b3ce2f3aa186600151bbe621a54cf8266ea3ef38
|
|
7
|
+
data.tar.gz: 401e1fb164e632bb37f60b1ab6491dad4aa4dc5eb01ca53dd3a3b03a2449807cc31a943edcb43095f04f52c0eee763f5cdea61699a530c7f0ee2121fb1d45ab4
|
|
@@ -4,6 +4,7 @@ module Spree
|
|
|
4
4
|
belongs_to :zoneable, polymorphic: true
|
|
5
5
|
|
|
6
6
|
validates :zone, :zoneable, presence: true
|
|
7
|
+
validates :zoneable_id, uniqueness: { scope: spree_base_uniqueness_scope + [:zone_id, :zoneable_type] }
|
|
7
8
|
|
|
8
9
|
scope :defunct_without_kind, ->(kind) do
|
|
9
10
|
where('zoneable_id IS NULL OR zoneable_type != ?', "Spree::#{kind.classify}")
|
|
@@ -25,7 +25,12 @@ module Spree
|
|
|
25
25
|
|
|
26
26
|
def create_zone_members(zone, country_codes)
|
|
27
27
|
countries_ids = Spree::Country.where(iso: country_codes).ids
|
|
28
|
-
|
|
28
|
+
existing_ids = zone.zone_members.where(zoneable_type: 'Spree::Country', zoneable_id: countries_ids).pluck(:zoneable_id)
|
|
29
|
+
new_ids = countries_ids - existing_ids
|
|
30
|
+
|
|
31
|
+
return if new_ids.empty?
|
|
32
|
+
|
|
33
|
+
zone_members = new_ids.map do |country_id|
|
|
29
34
|
{
|
|
30
35
|
zoneable_id: country_id,
|
|
31
36
|
zoneable_type: 'Spree::Country',
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
class AddUniqueIndexToSpreeZoneMembers < ActiveRecord::Migration[7.2]
|
|
2
|
+
def up
|
|
3
|
+
# Remove duplicate zone members, keeping the oldest record
|
|
4
|
+
# Uses derived table for MySQL compatibility
|
|
5
|
+
execute <<~SQL
|
|
6
|
+
DELETE FROM spree_zone_members
|
|
7
|
+
WHERE id NOT IN (
|
|
8
|
+
SELECT min_id FROM (
|
|
9
|
+
SELECT MIN(id) AS min_id
|
|
10
|
+
FROM spree_zone_members
|
|
11
|
+
GROUP BY zone_id, zoneable_type, zoneable_id
|
|
12
|
+
) AS keeper_ids
|
|
13
|
+
)
|
|
14
|
+
SQL
|
|
15
|
+
|
|
16
|
+
remove_index :spree_zone_members, [:zoneable_id, :zoneable_type],
|
|
17
|
+
name: 'index_spree_zone_members_on_zoneable_id_and_zoneable_type',
|
|
18
|
+
if_exists: true
|
|
19
|
+
|
|
20
|
+
add_index :spree_zone_members, [:zone_id, :zoneable_type, :zoneable_id],
|
|
21
|
+
unique: true,
|
|
22
|
+
name: 'index_spree_zone_members_uniqueness'
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def down
|
|
26
|
+
remove_index :spree_zone_members, name: 'index_spree_zone_members_uniqueness', if_exists: true
|
|
27
|
+
|
|
28
|
+
add_index :spree_zone_members, [:zoneable_id, :zoneable_type],
|
|
29
|
+
name: 'index_spree_zone_members_on_zoneable_id_and_zoneable_type'
|
|
30
|
+
end
|
|
31
|
+
end
|
data/db/sample_data/markets.rb
CHANGED
|
@@ -17,7 +17,7 @@ end
|
|
|
17
17
|
eu_zone = Spree::Zone.find_by(name: 'EU_VAT')
|
|
18
18
|
|
|
19
19
|
if eu_zone
|
|
20
|
-
eu_countries = eu_zone.zone_members.where(zoneable_type: 'Spree::Country').map(&:zoneable)
|
|
20
|
+
eu_countries = eu_zone.zone_members.where(zoneable_type: 'Spree::Country').map(&:zoneable).uniq.compact
|
|
21
21
|
|
|
22
22
|
if eu_countries.any?
|
|
23
23
|
eu_market = store.markets.find_or_initialize_by(name: 'Europe')
|
data/lib/spree/core/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: spree_core
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 5.4.0.
|
|
4
|
+
version: 5.4.0.rc8
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Sean Schofield
|
|
@@ -1502,6 +1502,7 @@ files:
|
|
|
1502
1502
|
- db/migrate/20260402000001_add_kind_to_spree_option_types.rb
|
|
1503
1503
|
- db/migrate/20260402000002_add_color_code_to_spree_option_values.rb
|
|
1504
1504
|
- db/migrate/20260403000000_add_market_to_spree_orders.rb
|
|
1505
|
+
- db/migrate/20260408000001_add_unique_index_to_spree_zone_members.rb
|
|
1505
1506
|
- db/sample_data/customers.csv
|
|
1506
1507
|
- db/sample_data/markets.rb
|
|
1507
1508
|
- db/sample_data/metafield_definitions.rb
|
|
@@ -1732,9 +1733,9 @@ licenses:
|
|
|
1732
1733
|
- BSD-3-Clause
|
|
1733
1734
|
metadata:
|
|
1734
1735
|
bug_tracker_uri: https://github.com/spree/spree/issues
|
|
1735
|
-
changelog_uri: https://github.com/spree/spree/releases/tag/v5.4.0.
|
|
1736
|
+
changelog_uri: https://github.com/spree/spree/releases/tag/v5.4.0.rc8
|
|
1736
1737
|
documentation_uri: https://docs.spreecommerce.org/
|
|
1737
|
-
source_code_uri: https://github.com/spree/spree/tree/v5.4.0.
|
|
1738
|
+
source_code_uri: https://github.com/spree/spree/tree/v5.4.0.rc8
|
|
1738
1739
|
post_install_message:
|
|
1739
1740
|
rdoc_options: []
|
|
1740
1741
|
require_paths:
|