populate-me 0.18.1 → 0.20.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cbde94afb511faf76bbcf73fab4fcb0dba7109ac042df9eb76c2ea128de4b4a9
4
- data.tar.gz: bc404f7572fc3a161942a88a403cab1e4d19a2c7042dcb84c285835b7fc7b30f
3
+ metadata.gz: e3359034df211dd6eef9b9142fd38b7a96db59d0f82bf05efc29ee594dcac332
4
+ data.tar.gz: e13861e7a4ea3b42e6587bf0ea492cd5ec8c0f2f3c38f8617169ad3864768152
5
5
  SHA512:
6
- metadata.gz: 5e582594884b90d45f5a9e9894d73401cce46615818b7720c42f60e1ffb63084c45ddad9bfa53fd5c7e04d421b4da8145bbd1e49eed027e1f2c66fc4a752c7bd
7
- data.tar.gz: 640d6e131ce2b2c8aba0f31669914249a64d1bb29a838e90a08519c5e8cefcbb359ef65f9d2fe3260b4bf19fb2d6e43c513dcd7ad8868f639def86b9d9666b37
6
+ metadata.gz: '08f7a97b54471d59a00f856a33190a44eecc9c0ea6e7191cc9177a52b92858d43f287b7839fcc481be04253ed1d8ccf409e14045f74892968af2cd0fe726b856'
7
+ data.tar.gz: 6cbb05d6aed20c6f8cd277c5944d85c8521fc6fc6371a8f338fb0cad6b180cc8b28365e59fb75a4993d48afafbb89cc079b30a7c160e376dc3fbf347e0a6a511
@@ -92,7 +92,17 @@ module PopulateMe
92
92
 
93
93
  def admin_find o={}
94
94
  o[:query] ||= {}
95
- docs = self.cast{documents}.find_all do |d|
95
+ docs = self.cast do
96
+ if o.key?( :fields )
97
+ documents.map do |h|
98
+ h.select do |k,v|
99
+ o[:fields].map(&:to_s).include?( k )
100
+ end
101
+ end
102
+ else
103
+ documents
104
+ end
105
+ end.find_all do |d|
96
106
  o[:query].inject(true) do |out,(k,v)|
97
107
  out && (d.__send__(k)==v)
98
108
  end
@@ -165,11 +165,19 @@ module PopulateMe
165
165
  end
166
166
  end
167
167
 
168
+ def default_select_fields
169
+ [
170
+ self.id_string_key,
171
+ self.label_field,
172
+ self.admin_image_field,
173
+ ].compact.uniq
174
+ end
175
+
168
176
  def to_select_options o={}
169
177
  proc do
170
178
  items = self.admin_find({
171
- query: (o[:query]||{}),
172
- fields: [self.id_string_key, self.label_field, self.admin_image_field].compact.uniq
179
+ query: ( o[:query] || {} ),
180
+ fields: ( o[:fields] || default_select_fields ),
173
181
  })
174
182
  output = items.sort_by do |i|
175
183
  i.to_s.downcase
@@ -1,4 +1,4 @@
1
1
  module PopulateMe
2
- VERSION = '0.18.1'
2
+ VERSION = '0.20.0'
3
3
  end
4
4
 
data/populate-me.gemspec CHANGED
@@ -18,14 +18,14 @@ Gem::Specification.new do |s|
18
18
  s.require_paths = ['lib']
19
19
 
20
20
  s.add_dependency 'web-utils', '~> 0'
21
- s.add_dependency 'sinatra', '~> 2'
21
+ s.add_dependency 'sinatra', '~> 3'
22
22
  s.add_dependency 'json', '~> 2.1'
23
23
 
24
24
  s.add_development_dependency 'bundler', '>= 2.2.10'
25
25
  s.add_development_dependency 'minitest', '~> 5.8'
26
- s.add_development_dependency 'rack-test', '~> 0.6'
26
+ s.add_development_dependency 'rack-test', '~> 2'
27
27
  s.add_development_dependency 'rack-cerberus', '~> 1.0'
28
- s.add_development_dependency 'mongo', '~> 2.0'
28
+ s.add_development_dependency 'mongo', '~> 2.18'
29
29
  s.add_development_dependency 'rack-grid-serve', '~> 0.0.8'
30
30
  s.add_development_dependency 'aws-sdk-s3', '~> 1'
31
31
  s.add_development_dependency 'racksh', '~> 1.0'
@@ -1,4 +1,5 @@
1
1
  require 'helper'
2
+ require 'web_utils'
2
3
  require 'populate_me/document'
3
4
  require 'populate_me/attachment'
4
5
 
@@ -114,6 +115,14 @@ describe PopulateMe::Document, 'Schema' do
114
115
  ]
115
116
  end
116
117
 
118
+ class SelectWithMoreFields < PopulateMe::Document
119
+ field :name
120
+ field :parent_name
121
+ def to_s
122
+ WebUtils.blank?(self.parent_name) ? self.name : "#{ self.parent_name } / #{ self.name }"
123
+ end
124
+ end
125
+
117
126
  before do
118
127
  Selectoptionable.documents = []
119
128
  Selectoptionable.new(id: '1', name: 'Joe', slug: 'joe').save
@@ -122,10 +131,14 @@ describe PopulateMe::Document, 'Schema' do
122
131
  Selectoptionable.new(id: '4', name: 'Averell', slug: 'averell').save
123
132
  Selectpreviewable.documents = []
124
133
  Selectpreviewable.new(id: '1', name: 'Project', img: 'project.jpg').save
134
+ SelectWithMoreFields.documents = []
135
+ SelectWithMoreFields.new(id: '1', name: 'Product', parent_name: 'Collection').save
125
136
  end
126
137
 
127
138
  after do
128
139
  Selectoptionable.documents = []
140
+ Selectpreviewable.documents = []
141
+ SelectWithMoreFields.documents = []
129
142
  end
130
143
 
131
144
  it 'Formats all items for a select_options' do
@@ -156,6 +169,15 @@ describe PopulateMe::Document, 'Schema' do
156
169
  assert_equal '/attachment/selectpreviewable/project.populate_me_thumb.jpg', output[0][:preview_uri]
157
170
  end
158
171
 
172
+ it 'Adds fields to query if option is passed' do
173
+ output = SelectWithMoreFields.to_select_options.call
174
+ assert_equal 'Product', output[0][:description]
175
+ output = SelectWithMoreFields.to_select_options({
176
+ fields: SelectWithMoreFields.default_select_fields + [:parent_name],
177
+ }).call
178
+ assert_equal 'Collection / Product', output[0][:description]
179
+ end
180
+
159
181
  end
160
182
 
161
183
  describe 'Polymorphism' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: populate-me
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.18.1
4
+ version: 0.20.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mickael Riga
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-03 00:00:00.000000000 Z
11
+ date: 2023-02-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: web-utils
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '2'
33
+ version: '3'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '2'
40
+ version: '3'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: json
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -86,14 +86,14 @@ dependencies:
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '0.6'
89
+ version: '2'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '0.6'
96
+ version: '2'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rack-cerberus
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -114,14 +114,14 @@ dependencies:
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '2.0'
117
+ version: '2.18'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '2.0'
124
+ version: '2.18'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: rack-grid-serve
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -259,7 +259,7 @@ homepage: https://github.com/mig-hub/populate-me
259
259
  licenses:
260
260
  - MIT
261
261
  metadata: {}
262
- post_install_message:
262
+ post_install_message:
263
263
  rdoc_options: []
264
264
  require_paths:
265
265
  - lib
@@ -274,8 +274,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
274
274
  - !ruby/object:Gem::Version
275
275
  version: '0'
276
276
  requirements: []
277
- rubygems_version: 3.2.16
278
- signing_key:
277
+ rubygems_version: 3.3.7
278
+ signing_key:
279
279
  specification_version: 4
280
280
  summary: PopulateMe is an admin system for web applications.
281
281
  test_files: