workarea-core 3.4.20 → 3.4.21
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/models/workarea/data_file/csv_fields.rb +29 -0
- data/app/models/workarea/metrics/search_by_day.rb +2 -0
- data/lib/tasks/services.rake +1 -1
- data/lib/workarea/version.rb +1 -1
- data/test/models/workarea/data_file/csv_fields_test.rb +96 -0
- data/workarea-core.gemspec +2 -3
- metadata +7 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 43fdd50f2d9a692430643d0df84315a29540ffccb3d4f3bdf822555280a154be
|
4
|
+
data.tar.gz: 4fe3d5c333e3400b5855c63eeb83c92ca2d861a6b5dddd9ce9a5e13046ab8f34
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8e86f64b2bdc446737cb257a6414bbdfc7788b66f354e6220c4a27edb26b279c7aa095117ea187ef121626f64d91f38e8c2a20f5dcb29bab8881a8c35de2e2f0
|
7
|
+
data.tar.gz: dbb29d99e58f970a2a6e85da982379d6675079c39bc61db6185b5aa9cad94272bc36b85494006bb04b7ec491ea019c2f4e5dc955b9cd0ea02f267d13718f623e
|
@@ -66,8 +66,37 @@ module Workarea
|
|
66
66
|
serialize_hash(result, name, flatten_hash(value.as_json))
|
67
67
|
end
|
68
68
|
|
69
|
+
def deserialize_time(hash, name, model)
|
70
|
+
return unless parsable_timestamp?(hash[name])
|
71
|
+
Time.parse(hash[name])
|
72
|
+
end
|
73
|
+
|
74
|
+
def deserialize_datetime(hash, name, model)
|
75
|
+
return unless parsable_timestamp?(hash[name])
|
76
|
+
DateTime.parse(hash[name])
|
77
|
+
end
|
78
|
+
|
79
|
+
def deserialize_date(hash, name, model)
|
80
|
+
return unless parsable_timestamp?(hash[name])
|
81
|
+
Date.parse(hash[name])
|
82
|
+
end
|
83
|
+
|
69
84
|
private
|
70
85
|
|
86
|
+
# Mongoid uses ActiveSupport::TimeWithZone to mongoize strings into
|
87
|
+
# times and dates. TimeWithZone uses Date.parse, just as this method does,
|
88
|
+
# which can cause unpadded years to be returned. When parsing a CSV we
|
89
|
+
# can make sure the year is above a sensible threshold of 1970 to ensure
|
90
|
+
# marshalling data from mongoid models to elasticsearch does not cause
|
91
|
+
# errors.
|
92
|
+
#
|
93
|
+
def parsable_timestamp?(value)
|
94
|
+
return unless value.present?
|
95
|
+
Date.parse(value, false).year >= 1970
|
96
|
+
rescue ArgumentError
|
97
|
+
false
|
98
|
+
end
|
99
|
+
|
71
100
|
def flatten_hash(hash, key = nil)
|
72
101
|
return { key => hash } unless hash.is_a?(Hash)
|
73
102
|
|
@@ -17,6 +17,8 @@ module Workarea
|
|
17
17
|
field :revenue, type: Float, default: 0.0
|
18
18
|
|
19
19
|
index(reporting_on: 1, total_results: 1)
|
20
|
+
index(query_id: 1)
|
21
|
+
|
20
22
|
scope :by_query_id, ->(id) { where(query_id: id) }
|
21
23
|
|
22
24
|
def self.save_search(query_string, total_results, at: Time.current)
|
data/lib/tasks/services.rake
CHANGED
@@ -15,7 +15,7 @@ See https://docs.docker.com/compose/install/ for how to install.
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def compose_file_path
|
18
|
-
File.join(
|
18
|
+
File.join(Gem::Specification.find_by_name('workarea').gem_dir, 'docker-compose.yml')
|
19
19
|
end
|
20
20
|
|
21
21
|
def compose_env
|
data/lib/workarea/version.rb
CHANGED
@@ -0,0 +1,96 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Workarea
|
4
|
+
module DataFile
|
5
|
+
class CsvFieldsTest < TestCase
|
6
|
+
class FooModel
|
7
|
+
include Mongoid::Document
|
8
|
+
|
9
|
+
field :test_time, type: Time
|
10
|
+
field :test_datetime, type: DateTime
|
11
|
+
field :test_date, type: Date
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_deserialize_time
|
15
|
+
field = FooModel.fields['test_time']
|
16
|
+
model = FooModel.new
|
17
|
+
|
18
|
+
date = '10/10/2020 15:30:00'
|
19
|
+
assert(
|
20
|
+
Time.parse(date),
|
21
|
+
CsvFields.deserialize_from({ 'test_time' => date }, field: field, model: model)
|
22
|
+
)
|
23
|
+
|
24
|
+
date = '2020/10/30 15:30:00'
|
25
|
+
assert(
|
26
|
+
Time.parse(date),
|
27
|
+
CsvFields.deserialize_from({ 'test_time' => date }, field: field, model: model)
|
28
|
+
)
|
29
|
+
|
30
|
+
date = '10/30/2020 15:30:00'
|
31
|
+
assert_nil(
|
32
|
+
CsvFields.deserialize_from({ 'test_time' => date }, field: field, model: model)
|
33
|
+
)
|
34
|
+
|
35
|
+
date = '10/10/20 15:30:00'
|
36
|
+
assert_nil(
|
37
|
+
CsvFields.deserialize_from({ 'test_time' => date }, field: field, model: model)
|
38
|
+
)
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_deserialize_datetime
|
42
|
+
field = FooModel.fields['test_datetime']
|
43
|
+
model = FooModel.new
|
44
|
+
|
45
|
+
date = '10/10/2020 15:30:00'
|
46
|
+
assert(
|
47
|
+
Time.parse(date),
|
48
|
+
CsvFields.deserialize_from({ 'test_datetime' => date }, field: field, model: model)
|
49
|
+
)
|
50
|
+
|
51
|
+
date = '2020/10/30 15:30:00'
|
52
|
+
assert(
|
53
|
+
Time.parse(date),
|
54
|
+
CsvFields.deserialize_from({ 'test_datetime' => date }, field: field, model: model)
|
55
|
+
)
|
56
|
+
|
57
|
+
date = '10/30/2020 15:30:00'
|
58
|
+
assert_nil(
|
59
|
+
CsvFields.deserialize_from({ 'test_datetime' => date }, field: field, model: model)
|
60
|
+
)
|
61
|
+
|
62
|
+
date = '10/10/20 15:30:00'
|
63
|
+
assert_nil(
|
64
|
+
CsvFields.deserialize_from({ 'test_datetime' => date }, field: field, model: model)
|
65
|
+
)
|
66
|
+
end
|
67
|
+
|
68
|
+
def test_deserialize_date
|
69
|
+
field = FooModel.fields['test_date']
|
70
|
+
model = FooModel.new
|
71
|
+
|
72
|
+
date = '10/10/2020 15:30:00'
|
73
|
+
assert(
|
74
|
+
Time.parse(date),
|
75
|
+
CsvFields.deserialize_from({ 'test_date' => date }, field: field, model: model)
|
76
|
+
)
|
77
|
+
|
78
|
+
date = '2020/10/30 15:30:00'
|
79
|
+
assert(
|
80
|
+
Time.parse(date),
|
81
|
+
CsvFields.deserialize_from({ 'test_date' => date }, field: field, model: model)
|
82
|
+
)
|
83
|
+
|
84
|
+
date = '10/30/2020 15:30:00'
|
85
|
+
assert_nil(
|
86
|
+
CsvFields.deserialize_from({ 'test_date' => date }, field: field, model: model)
|
87
|
+
)
|
88
|
+
|
89
|
+
date = '10/10/20 15:30:00'
|
90
|
+
assert_nil(
|
91
|
+
CsvFields.deserialize_from({ 'test_date' => date }, field: field, model: model)
|
92
|
+
)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
data/workarea-core.gemspec
CHANGED
@@ -17,7 +17,6 @@ Gem::Specification.new do |s|
|
|
17
17
|
s.add_dependency 'bundler', '>= 1.8.0' # 1.8.0 added env variable for secrets
|
18
18
|
s.add_dependency 'rails', '~> 5.2.0'
|
19
19
|
s.add_dependency 'mongoid', '~> 6.4.0'
|
20
|
-
s.add_dependency 'bson', '~> 4.3.0'
|
21
20
|
s.add_dependency 'bcrypt', '~> 3.1.10'
|
22
21
|
s.add_dependency 'money-rails', '~> 1.12.0'
|
23
22
|
s.add_dependency 'mongoid-audit_log', '>= 0.5.0'
|
@@ -35,7 +34,7 @@ Gem::Specification.new do |s|
|
|
35
34
|
s.add_dependency 'sidekiq-throttled', '~> 0.8.2'
|
36
35
|
s.add_dependency 'geocoder', '~> 1.4.4'
|
37
36
|
s.add_dependency 'redis-rails', '~> 5.0.0'
|
38
|
-
s.add_dependency 'redis-rack-cache', '~> 2.0
|
37
|
+
s.add_dependency 'redis-rack-cache', '~> 2.2.0'
|
39
38
|
s.add_dependency 'easymon', '~> 1.4.0'
|
40
39
|
s.add_dependency 'image_optim', '~> 0.26.0'
|
41
40
|
s.add_dependency 'image_optim_pack', '0.5.0.20171101'
|
@@ -91,7 +90,7 @@ Gem::Specification.new do |s|
|
|
91
90
|
s.add_dependency 'referer-parser', '~> 0.3.0'
|
92
91
|
s.add_dependency 'serviceworker-rails', '~> 0.5.5'
|
93
92
|
s.add_dependency 'logstasher', '~> 1.2.2'
|
94
|
-
s.add_dependency 'chartkick', '~> 3.
|
93
|
+
s.add_dependency 'chartkick', '~> 3.3.0'
|
95
94
|
s.add_dependency 'puma', '~> 4.0'
|
96
95
|
|
97
96
|
# HACK for vendoring active_shipping
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: workarea-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.4.
|
4
|
+
version: 3.4.21
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Crouse
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-11-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -52,20 +52,6 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 6.4.0
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: bson
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: 4.3.0
|
62
|
-
type: :runtime
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: 4.3.0
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
56
|
name: bcrypt
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -310,14 +296,14 @@ dependencies:
|
|
310
296
|
requirements:
|
311
297
|
- - "~>"
|
312
298
|
- !ruby/object:Gem::Version
|
313
|
-
version: 2.0
|
299
|
+
version: 2.2.0
|
314
300
|
type: :runtime
|
315
301
|
prerelease: false
|
316
302
|
version_requirements: !ruby/object:Gem::Requirement
|
317
303
|
requirements:
|
318
304
|
- - "~>"
|
319
305
|
- !ruby/object:Gem::Version
|
320
|
-
version: 2.0
|
306
|
+
version: 2.2.0
|
321
307
|
- !ruby/object:Gem::Dependency
|
322
308
|
name: easymon
|
323
309
|
requirement: !ruby/object:Gem::Requirement
|
@@ -1100,14 +1086,14 @@ dependencies:
|
|
1100
1086
|
requirements:
|
1101
1087
|
- - "~>"
|
1102
1088
|
- !ruby/object:Gem::Version
|
1103
|
-
version: 3.
|
1089
|
+
version: 3.3.0
|
1104
1090
|
type: :runtime
|
1105
1091
|
prerelease: false
|
1106
1092
|
version_requirements: !ruby/object:Gem::Requirement
|
1107
1093
|
requirements:
|
1108
1094
|
- - "~>"
|
1109
1095
|
- !ruby/object:Gem::Version
|
1110
|
-
version: 3.
|
1096
|
+
version: 3.3.0
|
1111
1097
|
- !ruby/object:Gem::Dependency
|
1112
1098
|
name: puma
|
1113
1099
|
requirement: !ruby/object:Gem::Requirement
|
@@ -2068,6 +2054,7 @@ files:
|
|
2068
2054
|
- test/models/workarea/content/fields/products_test.rb
|
2069
2055
|
- test/models/workarea/content/page_test.rb
|
2070
2056
|
- test/models/workarea/content_test.rb
|
2057
|
+
- test/models/workarea/data_file/csv_fields_test.rb
|
2071
2058
|
- test/models/workarea/data_file/csv_test.rb
|
2072
2059
|
- test/models/workarea/data_file/export_test.rb
|
2073
2060
|
- test/models/workarea/data_file/format_test.rb
|