workarea-core 3.4.20 → 3.4.21
Sign up to get free protection for your applications and to get access to all the features.
- 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
|