spree_core 4.0.0.rc2 → 4.0.0.rc3

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: 60f1421b7468857f6c74fd7ab214f09a14c886b13e42110b53c6a22529691343
4
- data.tar.gz: 5d64b1bb1fa0866edd1778e6e01f79d1af23391633faf8cc08afbead4d519fcc
3
+ metadata.gz: a92eeda37655c24a7921c434a9e7cef57121e16da3457279999d2011f898bea8
4
+ data.tar.gz: 85dc63ab6533ea10eb138804558df376e33f1bfe24e0345d5209665a76c3b724
5
5
  SHA512:
6
- metadata.gz: 0cd4e217e4a314c1aafd05a682bd8e7b98107581e81d16419002b385f40ff633ee4c40ebd6b5a174e80e004c4b6aa0596b8d90bcc3ec5c09ae74da0850c8fd43
7
- data.tar.gz: fee6d187478f871e2b3cccda29eae1410a2b67eb709cd584217c9e8eeaae95dce886f3a2eea8d421de2cf3276f7d4642986d7a2929194025558f24dd432e45e4
6
+ metadata.gz: 368d97922da6dbda108e121097efce68a7393b556a0f3c0d8504db6158be11a42a1177d5a85e77c43d01d29de224f45666928a00ab0e3865274e44c0cb50b4fa
7
+ data.tar.gz: 3298b2b794cae1e7c9b8653c581af1d7bb5077cc8a7b199644657b903597f807ec2c8cf2312f78a5a88f01d1c06905016dcd5948bdab77ec000b38ae7e0b79f0
@@ -4,15 +4,17 @@ module Spree
4
4
  def initialize(scope:, params:, current_currency:)
5
5
  @scope = scope
6
6
 
7
- @ids = String(params.dig(:filter, :ids)).split(',')
8
- @skus = String(params.dig(:filter, :skus)).split(',')
9
- @price = String(params.dig(:filter, :price)).split(',')
10
- @currency = params[:currency] || current_currency
11
- @taxons = String(params.dig(:filter, :taxons)).split(',')
12
- @name = params.dig(:filter, :name)
13
- @options = params.dig(:filter, :options).try(:to_unsafe_hash)
14
- @deleted = params.dig(:filter, :show_deleted)
15
- @discontinued = params.dig(:filter, :show_discontinued)
7
+ @ids = String(params.dig(:filter, :ids)).split(',')
8
+ @skus = String(params.dig(:filter, :skus)).split(',')
9
+ @price = String(params.dig(:filter, :price)).split(',').map(&:to_f)
10
+ @currency = params[:currency] || current_currency
11
+ @taxons = String(params.dig(:filter, :taxons)).split(',')
12
+ @name = params.dig(:filter, :name)
13
+ @options = params.dig(:filter, :options).try(:to_unsafe_hash)
14
+ @option_value_ids = params.dig(:filter, :option_value_ids)
15
+ @sort_by = params.dig(:sort_by)
16
+ @deleted = params.dig(:filter, :show_deleted)
17
+ @discontinued = params.dig(:filter, :show_discontinued)
16
18
  end
17
19
 
18
20
  def execute
@@ -22,15 +24,17 @@ module Spree
22
24
  products = by_taxons(products)
23
25
  products = by_name(products)
24
26
  products = by_options(products)
27
+ products = by_option_value_ids(products)
25
28
  products = include_deleted(products)
26
29
  products = include_discontinued(products)
30
+ products = ordered(products)
27
31
 
28
32
  products
29
33
  end
30
34
 
31
35
  private
32
36
 
33
- attr_reader :ids, :skus, :price, :currency, :taxons, :name, :options, :scope, :deleted, :discontinued
37
+ attr_reader :ids, :skus, :price, :currency, :taxons, :name, :options, :option_value_ids, :scope, :sort_by, :deleted, :discontinued
34
38
 
35
39
  def ids?
36
40
  ids.present?
@@ -56,6 +60,14 @@ module Spree
56
60
  options.present?
57
61
  end
58
62
 
63
+ def option_value_ids?
64
+ option_value_ids.present?
65
+ end
66
+
67
+ def sort_by?
68
+ sort_by.present?
69
+ end
70
+
59
71
  def name_matcher
60
72
  Spree::Product.arel_table[:name].matches("%#{name}%")
61
73
  end
@@ -105,6 +117,27 @@ module Spree
105
117
  end.inject(:&)
106
118
  end
107
119
 
120
+ def by_option_value_ids(products)
121
+ return products unless option_value_ids?
122
+
123
+ products.joins(variants: :option_values).distinct.where(spree_option_values: { id: option_value_ids })
124
+ end
125
+
126
+ def ordered(products)
127
+ return products unless sort_by?
128
+
129
+ case sort_by
130
+ when 'default'
131
+ products
132
+ when 'newest-first'
133
+ products.order(available_on: :desc)
134
+ when 'price-high-to-low'
135
+ products.select('spree_products.*, spree_prices.amount').reorder('').send(:descend_by_master_price)
136
+ when 'price-low-to-high'
137
+ products.select('spree_products.*, spree_prices.amount').reorder('').send(:ascend_by_master_price)
138
+ end
139
+ end
140
+
108
141
  def include_deleted(products)
109
142
  deleted ? products.with_deleted : products.not_deleted
110
143
  end
@@ -3,12 +3,11 @@ module Spree
3
3
  class Find
4
4
  def initialize(scope:, params:)
5
5
  @scope = scope
6
-
7
- @ids = String(params[:ids]).split(',')
8
- @parent = params[:parent_id]
9
- @taxonomy = params[:taxonomy_id]
10
- @name = params[:name]
11
- @roots = params[:roots]
6
+ @ids = String(params.dig(:filter, :ids)).split(',')
7
+ @parent = params.dig(:filter, :parent_id)
8
+ @taxonomy = params.dig(:filter, :taxonomy_id)
9
+ @name = params.dig(:filter, :name)
10
+ @roots = params.dig(:filter, :roots)
12
11
  end
13
12
 
14
13
  def execute
@@ -1,5 +1,5 @@
1
1
  module Spree
2
2
  def self.version
3
- '4.0.0.rc2'
3
+ '4.0.0.rc3'
4
4
  end
5
5
  end
@@ -26,7 +26,7 @@ Gem::Specification.new do |s|
26
26
  s.add_dependency 'carmen', '>= 1.0', '< 1.2'
27
27
  s.add_dependency 'cancancan', '~> 3.0'
28
28
  s.add_dependency 'ffaker', '~> 2.9'
29
- s.add_dependency 'friendly_id', '~> 5.2.1'
29
+ s.add_dependency 'friendly_id', '>= 5.2.1', '< 5.4.0'
30
30
  s.add_dependency 'highline', '~> 2.0.0' # Necessary for the install generator
31
31
  s.add_dependency 'kaminari', '>= 1.0.1', '< 1.2.0'
32
32
  s.add_dependency 'money', '~> 6.13'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spree_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0.rc2
4
+ version: 4.0.0.rc3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean Schofield
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-09-17 00:00:00.000000000 Z
11
+ date: 2019-09-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemerchant
@@ -110,16 +110,22 @@ dependencies:
110
110
  name: friendly_id
111
111
  requirement: !ruby/object:Gem::Requirement
112
112
  requirements:
113
- - - "~>"
113
+ - - ">="
114
114
  - !ruby/object:Gem::Version
115
115
  version: 5.2.1
116
+ - - "<"
117
+ - !ruby/object:Gem::Version
118
+ version: 5.4.0
116
119
  type: :runtime
117
120
  prerelease: false
118
121
  version_requirements: !ruby/object:Gem::Requirement
119
122
  requirements:
120
- - - "~>"
123
+ - - ">="
121
124
  - !ruby/object:Gem::Version
122
125
  version: 5.2.1
126
+ - - "<"
127
+ - !ruby/object:Gem::Version
128
+ version: 5.4.0
123
129
  - !ruby/object:Gem::Dependency
124
130
  name: highline
125
131
  requirement: !ruby/object:Gem::Requirement