marty 2.7.1 → 2.7.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +7 -0
- data/.rubocop_todo.yml +0 -81
- data/Gemfile.lock +1 -1
- data/app/components/marty/base_rule_view.rb +5 -6
- data/app/components/marty/main_auth_app.rb +2 -2
- data/app/components/marty/promise_view.rb +1 -1
- data/app/components/marty/simple_app.rb +15 -15
- data/app/models/marty/base_rule.rb +1 -1
- data/app/models/marty/data_grid.rb +19 -8
- data/app/models/marty/delorean_rule.rb +2 -2
- data/app/models/marty/pg_enum.rb +1 -1
- data/app/models/marty/posting.rb +1 -1
- data/app/models/marty/user.rb +1 -1
- data/app/models/marty/vw_promise.rb +1 -1
- data/lib/marty/data_change.rb +3 -3
- data/lib/marty/data_conversion.rb +1 -1
- data/lib/marty/data_importer.rb +1 -1
- data/lib/marty/engine.rb +1 -1
- data/lib/marty/json_schema.rb +1 -1
- data/lib/marty/mcfly_model.rb +3 -3
- data/lib/marty/migrations.rb +4 -4
- data/lib/marty/monkey.rb +1 -1
- data/lib/marty/promise_proxy.rb +1 -1
- data/lib/marty/rule_script_set.rb +2 -2
- data/lib/marty/util.rb +1 -2
- data/lib/marty/version.rb +1 -1
- data/lib/marty/xl.rb +1 -2
- data/other/marty/api/base.rb +2 -2
- data/other/marty/diagnostic/nodes.rb +1 -1
- data/spec/controllers/diagnostic/controller_spec.rb +1 -1
- data/spec/features/reporting_spec.rb +1 -1
- data/spec/features/scripting_spec.rb +2 -2
- data/spec/features/scripting_test_spec.rb +2 -2
- data/spec/features/user_view_spec.rb +5 -5
- data/spec/lib/json_schema_spec.rb +5 -5
- data/spec/lib/xl_spec.rb +1 -1
- data/spec/spec_helper.rb +1 -1
- data/spec/support/components/netzke_grid.rb +2 -2
- data/spec/support/netzke.rb +4 -4
- data/spec/support/shared_connection.rb +2 -2
- data/spec/support/users.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 803d233d1eca573e9cf368dc8592895e9a4f237117842472e59d35dff646f8d5
|
4
|
+
data.tar.gz: 31aa8139cf13387596b37e4e934a59837b9e6dff7ca8eff801ff2b5bdc0dfde2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 82fa093b9db78af2ebe9b47a27673a023b4eafdeb46d2eb5f835113dc142ce12e16486a51098b1cbadf5e93022c28d636457ac01ccbce619fc362ee94832a568
|
7
|
+
data.tar.gz: 0db7610f06f94b2e6c48fcdee37b5c024361a8501659d01983892471677738f1c937c47c65c3eb529aa3399c1dc265072e6b9cc279544782dab58e9cf35a7e9e
|
data/.rubocop.yml
CHANGED
@@ -33,3 +33,10 @@ Style/CaseEquality:
|
|
33
33
|
- 'lib/marty/monkey.rb'
|
34
34
|
- 'other/marty/api/base.rb'
|
35
35
|
- 'spec/lib/mcfly_model_spec.rb'
|
36
|
+
|
37
|
+
Lint/UnusedMethodArgument:
|
38
|
+
AllowUnusedKeywordArguments: true
|
39
|
+
IgnoreEmptyMethods: true
|
40
|
+
|
41
|
+
Style/SymbolArray:
|
42
|
+
EnforcedStyle: brackets
|
data/.rubocop_todo.yml
CHANGED
@@ -272,33 +272,6 @@ Lint/UnderscorePrefixedVariableName:
|
|
272
272
|
- 'lib/marty/monkey.rb'
|
273
273
|
- 'lib/marty/promise_job.rb'
|
274
274
|
|
275
|
-
# Offense count: 36
|
276
|
-
# Cop supports --auto-correct.
|
277
|
-
# Configuration parameters: IgnoreEmptyBlocks, AllowUnusedKeywordArguments.
|
278
|
-
Lint/UnusedBlockArgument:
|
279
|
-
Enabled: false
|
280
|
-
|
281
|
-
# Offense count: 21
|
282
|
-
# Cop supports --auto-correct.
|
283
|
-
# Configuration parameters: AllowUnusedKeywordArguments, IgnoreEmptyMethods.
|
284
|
-
Lint/UnusedMethodArgument:
|
285
|
-
Exclude:
|
286
|
-
- 'app/models/marty/base_rule.rb'
|
287
|
-
- 'app/models/marty/pg_enum.rb'
|
288
|
-
- 'app/models/marty/posting.rb'
|
289
|
-
- 'db/migrate/091_create_marty_promises.rb'
|
290
|
-
- 'db/migrate/201_create_marty_events.rb'
|
291
|
-
- 'lib/marty/cache_adapters/mcfly_ruby_cache.rb'
|
292
|
-
- 'lib/marty/json_schema.rb'
|
293
|
-
- 'lib/marty/monkey.rb'
|
294
|
-
- 'lib/marty/promise_proxy.rb'
|
295
|
-
- 'lib/marty/rule_script_set.rb'
|
296
|
-
- 'other/marty/api/base.rb'
|
297
|
-
- 'spec/lib/json_schema_spec.rb'
|
298
|
-
- 'spec/lib/xl_spec.rb'
|
299
|
-
- 'spec/support/components/netzke_grid.rb'
|
300
|
-
- 'spec/support/netzke.rb'
|
301
|
-
|
302
275
|
# Offense count: 4
|
303
276
|
Lint/UriEscapeUnescape:
|
304
277
|
Exclude:
|
@@ -657,14 +630,6 @@ Style/ConditionalAssignment:
|
|
657
630
|
- 'spec/support/components/netzke_combobox.rb'
|
658
631
|
- 'spec/support/components/netzke_grid.rb'
|
659
632
|
|
660
|
-
# Offense count: 3
|
661
|
-
# Cop supports --auto-correct.
|
662
|
-
Style/DefWithParentheses:
|
663
|
-
Exclude:
|
664
|
-
- 'spec/dummy/db/migrate/20171221095312_create_gemini_my_rules.rb'
|
665
|
-
- 'spec/dummy/db/migrate/20171221095359_create_gemini_xyz_rules.rb'
|
666
|
-
- 'spec/dummy/public/extjs/classic/theme-base/sass/utils.rb'
|
667
|
-
|
668
633
|
# Offense count: 181
|
669
634
|
Style/Documentation:
|
670
635
|
Enabled: false
|
@@ -683,26 +648,6 @@ Style/EachForSimpleLoop:
|
|
683
648
|
Exclude:
|
684
649
|
- 'spec/controllers/rpc_import_spec.rb'
|
685
650
|
|
686
|
-
# Offense count: 2
|
687
|
-
# Cop supports --auto-correct.
|
688
|
-
Style/EachWithObject:
|
689
|
-
Exclude:
|
690
|
-
- 'lib/marty/util.rb'
|
691
|
-
- 'lib/marty/xl.rb'
|
692
|
-
|
693
|
-
# Offense count: 2
|
694
|
-
# Cop supports --auto-correct.
|
695
|
-
Style/EmptyCaseCondition:
|
696
|
-
Exclude:
|
697
|
-
- 'app/components/marty/base_rule_view.rb'
|
698
|
-
- 'app/models/marty/data_grid.rb'
|
699
|
-
|
700
|
-
# Offense count: 2
|
701
|
-
# Cop supports --auto-correct.
|
702
|
-
Style/EmptyLiteral:
|
703
|
-
Exclude:
|
704
|
-
- 'spec/dummy/public/extjs/classic/theme-base/sass/utils.rb'
|
705
|
-
|
706
651
|
# Offense count: 8
|
707
652
|
# Cop supports --auto-correct.
|
708
653
|
# Configuration parameters: EnforcedStyle.
|
@@ -775,25 +720,6 @@ Style/GuardClause:
|
|
775
720
|
- 'spec/lib/json_schema_spec.rb'
|
776
721
|
- 'spec/support/post_run_logger.rb'
|
777
722
|
|
778
|
-
# Offense count: 43
|
779
|
-
# Cop supports --auto-correct.
|
780
|
-
# Configuration parameters: EnforcedStyle, UseHashRocketsWithSymbolValues, PreferHashRocketsForNonAlnumEndingSymbols.
|
781
|
-
# SupportedStyles: ruby19, hash_rockets, no_mixed_keys, ruby19_no_mixed_keys
|
782
|
-
Style/HashSyntax:
|
783
|
-
Exclude:
|
784
|
-
- 'app/components/marty/simple_app.rb'
|
785
|
-
- 'app/models/marty/user.rb'
|
786
|
-
- 'app/models/marty/vw_promise.rb'
|
787
|
-
- 'db/migrate/090_create_delayed_jobs.rb'
|
788
|
-
- 'lib/marty/engine.rb'
|
789
|
-
- 'lib/marty/migrations.rb'
|
790
|
-
- 'spec/features/scripting_spec.rb'
|
791
|
-
- 'spec/features/user_view_spec.rb'
|
792
|
-
- 'spec/lib/json_schema_spec.rb'
|
793
|
-
- 'spec/spec_helper.rb'
|
794
|
-
- 'spec/support/netzke.rb'
|
795
|
-
- 'spec/support/shared_connection.rb'
|
796
|
-
|
797
723
|
# Offense count: 2
|
798
724
|
Style/IdenticalConditionalBranches:
|
799
725
|
Exclude:
|
@@ -1124,13 +1050,6 @@ Style/StructInheritance:
|
|
1124
1050
|
- 'lib/marty/promise_job.rb'
|
1125
1051
|
- 'lib/marty/promise_ruby_job.rb'
|
1126
1052
|
|
1127
|
-
# Offense count: 75
|
1128
|
-
# Cop supports --auto-correct.
|
1129
|
-
# Configuration parameters: MinSize.
|
1130
|
-
# SupportedStyles: percent, brackets
|
1131
|
-
Style/SymbolArray:
|
1132
|
-
EnforcedStyle: brackets
|
1133
|
-
|
1134
1053
|
# Offense count: 7
|
1135
1054
|
# Cop supports --auto-correct.
|
1136
1055
|
# Configuration parameters: EnforcedStyle, AllowSafeAssignment.
|
data/Gemfile.lock
CHANGED
@@ -278,12 +278,11 @@ class Marty::BaseRuleView < Marty::McflyGridPanel
|
|
278
278
|
nullbool = h[:type] == :boolean && (h[:null] == true || !h.include?(:null))
|
279
279
|
attribute name do |c|
|
280
280
|
c.width = h[:width] || 150
|
281
|
-
|
282
|
-
when h[:type] == :datetime
|
281
|
+
if h[:type] == :datetime
|
283
282
|
c.format = 'Y-m-d H:i'
|
284
|
-
|
283
|
+
elsif h[:type] == :date
|
285
284
|
c.format = 'Y-m-d'
|
286
|
-
|
285
|
+
elsif nullbool
|
287
286
|
c.type = :string
|
288
287
|
enum_column(c, ['True', 'False'])
|
289
288
|
else
|
@@ -304,7 +303,7 @@ class Marty::BaseRuleView < Marty::McflyGridPanel
|
|
304
303
|
c.getter = Marty::BaseRuleView.jsonb_field_getter(meth, namestr, nullbool)
|
305
304
|
c.setter = Marty::BaseRuleView.jsonb_field_setter(meth, namestr,
|
306
305
|
h[:type] == :boolean)
|
307
|
-
c.filter_with = lambda do |rel, value,
|
306
|
+
c.filter_with = lambda do |rel, value, _op|
|
308
307
|
v = ActiveRecord::Base.connection.quote(value)[1..-2]
|
309
308
|
rel.where("#{meth}->>'#{namestr}' like '%#{v}%'")
|
310
309
|
end
|
@@ -342,7 +341,7 @@ class Marty::BaseRuleView < Marty::McflyGridPanel
|
|
342
341
|
c.flex = 1
|
343
342
|
c.getter = jsonb_getter(a.to_s)
|
344
343
|
c.sorting_scope = json_sort_scope(a)
|
345
|
-
c.filter_with = lambda do |rel, value,
|
344
|
+
c.filter_with = lambda do |rel, value, _op|
|
346
345
|
v = ActiveRecord::Base.connection.quote(value)[1..-2]
|
347
346
|
rel.where("#{a}::text like '%#{v}%'")
|
348
347
|
end
|
@@ -390,12 +390,12 @@ class Marty::MainAuthApp < Marty::AuthApp
|
|
390
390
|
c.klass = Marty::LogView
|
391
391
|
end
|
392
392
|
|
393
|
-
endpoint :reload_scripts do |
|
393
|
+
endpoint :reload_scripts do |_params|
|
394
394
|
Marty::Script.load_scripts
|
395
395
|
client.netzke_notify 'Scripts have been reloaded'
|
396
396
|
end
|
397
397
|
|
398
|
-
endpoint :load_seed do |
|
398
|
+
endpoint :load_seed do |_params|
|
399
399
|
Rails.application.load_seed
|
400
400
|
client.netzke_notify 'Seeds have been loaded'
|
401
401
|
end
|
@@ -69,33 +69,33 @@ class Marty::SimpleApp < Netzke::Base
|
|
69
69
|
# Config for the main panel, which will contain dynamically loaded components.
|
70
70
|
def main_panel_config(overrides = {})
|
71
71
|
{
|
72
|
-
:
|
73
|
-
:
|
74
|
-
:
|
72
|
+
itemId: 'main_panel',
|
73
|
+
region: 'center',
|
74
|
+
layout: 'fit'
|
75
75
|
}.merge(overrides)
|
76
76
|
end
|
77
77
|
|
78
78
|
# Config for the status bar
|
79
79
|
def status_bar_config(overrides = {})
|
80
80
|
{
|
81
|
-
:
|
82
|
-
:
|
83
|
-
:
|
84
|
-
:
|
85
|
-
:
|
86
|
-
:
|
87
|
-
:
|
81
|
+
itemId: 'status_bar',
|
82
|
+
xtype: 'statusbar',
|
83
|
+
region: 'south',
|
84
|
+
statusAlign: 'right',
|
85
|
+
busyText: 'Busy...',
|
86
|
+
default_text: 'Ready',
|
87
|
+
default_icon_cls: ''
|
88
88
|
}.merge(overrides)
|
89
89
|
end
|
90
90
|
|
91
91
|
# Config for the menu bar
|
92
92
|
def menu_bar_config(overrides = {})
|
93
93
|
{
|
94
|
-
:
|
95
|
-
:
|
96
|
-
:
|
97
|
-
:
|
98
|
-
:
|
94
|
+
itemId: 'menu_bar',
|
95
|
+
layout: { overflow_handler: 'Menu' },
|
96
|
+
xtype: 'toolbar',
|
97
|
+
region: 'north',
|
98
|
+
items: menu
|
99
99
|
}.merge(overrides)
|
100
100
|
end
|
101
101
|
|
@@ -96,7 +96,7 @@ class Marty::BaseRule < Marty::Base
|
|
96
96
|
"(#{field}#{arrow}'#{subfield}')#{fieldcast} #{op} #{value}"
|
97
97
|
end
|
98
98
|
|
99
|
-
def self.get_matches_(
|
99
|
+
def self.get_matches_(_pt, attrs, params)
|
100
100
|
q = select('DISTINCT ON (name) *').where(attrs)
|
101
101
|
|
102
102
|
params.each do |k, vraw|
|
@@ -216,13 +216,25 @@ class Marty::DataGrid < Marty::Base
|
|
216
216
|
res
|
217
217
|
end
|
218
218
|
|
219
|
-
|
219
|
+
# this function is cached through lookup_grid_h_priv
|
220
|
+
delorean_fn :lookup_grid_h, sig: 4 do |pt, dgn, h, distinct|
|
220
221
|
dgh = lookup_h(pt, dgn)
|
221
222
|
raise "#{dgn} grid not found" unless dgh
|
222
223
|
raise "non-hash arg #{h}" unless Hash === h
|
223
224
|
|
224
|
-
|
225
|
-
|
225
|
+
attrs = dgh['metadata'].map { |a| a['attr'] }
|
226
|
+
|
227
|
+
# Narrow hash to needed attrs -- makes the cache work a lot better
|
228
|
+
# in case the hash includes items not in grid attrs.
|
229
|
+
lookup_grid_h_priv(pt, dgh, h.slice(*attrs), distinct)
|
230
|
+
end
|
231
|
+
|
232
|
+
# private method used to cache lookup_grid_distinct_entry_h result
|
233
|
+
cached_delorean_fn :lookup_grid_h_priv,
|
234
|
+
private: true, sig: 4 do |pt, dgh, h, distinct|
|
235
|
+
|
236
|
+
lookup_grid_distinct_entry_h(
|
237
|
+
pt, h, dgh, nil, true, false, distinct)['result']
|
226
238
|
end
|
227
239
|
|
228
240
|
# FIXME: using cached_delorean_fn just for the caching -- this is
|
@@ -261,10 +273,9 @@ class Marty::DataGrid < Marty::Base
|
|
261
273
|
|
262
274
|
res = vhash['result']
|
263
275
|
|
264
|
-
v =
|
265
|
-
when ::Marty::EnumHelper.pg_enum?(klass: res)
|
276
|
+
v = if ::Marty::EnumHelper.pg_enum?(klass: res)
|
266
277
|
c_data_type.find_by_name(res)
|
267
|
-
|
278
|
+
elsif Marty::DataGrid == c_data_type
|
268
279
|
follow ?
|
269
280
|
Marty::DataGrid.lookup_h(pt, res) :
|
270
281
|
Marty::DataGrid.lookup(pt, res)
|
@@ -612,9 +623,9 @@ class Marty::DataGrid < Marty::Base
|
|
612
623
|
end
|
613
624
|
end
|
614
625
|
|
615
|
-
removes.reject! { |
|
626
|
+
removes.reject! { |_dir, set| set.empty? }
|
616
627
|
|
617
|
-
removes.each do |dir,
|
628
|
+
removes.each do |dir, _set|
|
618
629
|
metadata_copy.select { |m| m['dir'] == dir }.each do |meta|
|
619
630
|
meta['keys'] = remove_indices(meta['keys'], removes[dir])
|
620
631
|
end
|
@@ -100,7 +100,7 @@ class Marty::DeloreanRule < Marty::BaseRule
|
|
100
100
|
result.err_section)
|
101
101
|
end
|
102
102
|
result.cg_hash = Hash[result.cg_keys.zip(result.cg_vals)]
|
103
|
-
fails = result.cg_hash.select { |
|
103
|
+
fails = result.cg_hash.select { |_k, v| ![v].flatten.first }
|
104
104
|
return fails if fails.present?
|
105
105
|
end
|
106
106
|
|
@@ -202,7 +202,7 @@ class Marty::DeloreanRule < Marty::BaseRule
|
|
202
202
|
proc do |old, new|
|
203
203
|
klass.where(obsoleted_dt: 'infinity').each do |r|
|
204
204
|
r.grids.each { |k, v| r.grids[k] = new if v == old }
|
205
|
-
r.results.each do |k,
|
205
|
+
r.results.each do |k, _v|
|
206
206
|
r.results[k] = %Q("#{new}") if
|
207
207
|
k.ends_with?('_grid') && r.fixed_results[k] == old
|
208
208
|
end
|
data/app/models/marty/pg_enum.rb
CHANGED
data/app/models/marty/posting.rb
CHANGED
@@ -67,7 +67,7 @@ class Marty::Posting < Marty::Base
|
|
67
67
|
q.order('created_dt DESC').first.attributes
|
68
68
|
end
|
69
69
|
|
70
|
-
def self.get_latest(limit,
|
70
|
+
def self.get_latest(limit, _is_test = nil)
|
71
71
|
# IMPORTANT: is_test arg is ignored (KEEP for backward compat.)
|
72
72
|
|
73
73
|
q = where("created_dt <> 'infinity'").
|
data/app/models/marty/user.rb
CHANGED
@@ -2,7 +2,7 @@ class Marty::User < Marty::Base
|
|
2
2
|
validates_presence_of :login, :firstname, :lastname
|
3
3
|
validates_uniqueness_of :login
|
4
4
|
|
5
|
-
validates_format_of :login, :
|
5
|
+
validates_format_of :login, with: /\A[a-z0-9_\-@\.]*\z/i
|
6
6
|
validates_length_of :login, :firstname, :lastname, maximum: 100
|
7
7
|
|
8
8
|
MARTY_IMPORT_UNIQUENESS = [:login]
|
@@ -66,6 +66,6 @@ class Marty::VwPromise < Marty::Base
|
|
66
66
|
st = "%#{search_text}%"
|
67
67
|
# Convert "Role Name" or "Role name" to "role_name" (underscore is key)
|
68
68
|
st2 = "%#{search_text.titleize.gsub(/\s/, '').underscore}%"
|
69
|
-
joins(:
|
69
|
+
joins(user: :roles).where(query, st, st, st, st2).distinct
|
70
70
|
}
|
71
71
|
end
|
data/lib/marty/data_change.rb
CHANGED
@@ -224,7 +224,7 @@ class Marty::DataChange
|
|
224
224
|
next
|
225
225
|
end
|
226
226
|
|
227
|
-
key_hash = conv.reject { |k,
|
227
|
+
key_hash = conv.reject { |k, _v| !keys.member?(k) }
|
228
228
|
|
229
229
|
source = Marty::DataConversion.find_row(klass, key_hash, ts)
|
230
230
|
|
@@ -236,7 +236,7 @@ class Marty::DataChange
|
|
236
236
|
|
237
237
|
found_sources << source
|
238
238
|
|
239
|
-
non_key_hash = conv.reject { |k,
|
239
|
+
non_key_hash = conv.reject { |k, _v| keys.member?(k) }
|
240
240
|
|
241
241
|
# is source same as converted input?
|
242
242
|
if non_key_hash.all? { |k, v| v == source.send(k) }
|
@@ -281,7 +281,7 @@ class Marty::DataChange
|
|
281
281
|
ts = Mcfly.normalize_infinity(ts)
|
282
282
|
col_types = Marty::DataConversion.col_types(klass)
|
283
283
|
|
284
|
-
mcfly_cols = col_types.map do |
|
284
|
+
mcfly_cols = col_types.map do |_attr, h|
|
285
285
|
Hash === h && Mcfly.has_mcfly?(h[:assoc_class]) && h || nil
|
286
286
|
end.compact
|
287
287
|
|
@@ -152,7 +152,7 @@ class Marty::DataConversion
|
|
152
152
|
|
153
153
|
raise "no key_attrs for #{klass}" unless key_attrs
|
154
154
|
|
155
|
-
find_options = options.select { |k,
|
155
|
+
find_options = options.select { |k, _v| key_attrs.member? k.to_sym }
|
156
156
|
|
157
157
|
raise "no keys for #{klass} -- #{options}" if find_options.empty?
|
158
158
|
|
data/lib/marty/data_importer.rb
CHANGED
data/lib/marty/engine.rb
CHANGED
data/lib/marty/json_schema.rb
CHANGED
@@ -4,7 +4,7 @@ module Marty
|
|
4
4
|
private
|
5
5
|
|
6
6
|
class PgEnumAttribute < JSON::Schema::Attribute
|
7
|
-
def self.validate(curr_schema, data, frag, pro,
|
7
|
+
def self.validate(curr_schema, data, frag, pro, _validator, opt = {})
|
8
8
|
values = nil
|
9
9
|
path = '#/' + frag.join('/')
|
10
10
|
begin
|
data/lib/marty/mcfly_model.rb
CHANGED
@@ -70,7 +70,7 @@ module Mcfly::Model
|
|
70
70
|
end.join(' AND ')
|
71
71
|
|
72
72
|
if Hash === attrs
|
73
|
-
order = attrs.select { |
|
73
|
+
order = attrs.select { |_k, v| v }.keys.reverse.map do |k|
|
74
74
|
k = "#{k}_id" if assoc.member?(k)
|
75
75
|
|
76
76
|
"#{k} NULLS LAST"
|
@@ -82,9 +82,9 @@ module Mcfly::Model
|
|
82
82
|
|
83
83
|
fn = cache ? :cached_delorean_fn : :delorean_fn
|
84
84
|
base_mcfly_lookup(fn, name, options + { sig: attrs.length + 1,
|
85
|
-
mode: mode }) do |
|
85
|
+
mode: mode }) do |_t, *attr_list|
|
86
86
|
|
87
|
-
attr_list_ids = attr_list.each_with_index.map do |
|
87
|
+
attr_list_ids = attr_list.each_with_index.map do |_x, i|
|
88
88
|
assoc.member?(attrs[i]) ?
|
89
89
|
(attr_list[i] && attr_list[i].id) : attr_list[i]
|
90
90
|
end
|
data/lib/marty/migrations.rb
CHANGED
@@ -141,7 +141,7 @@ module Marty::Migrations
|
|
141
141
|
end
|
142
142
|
end
|
143
143
|
elsif !excludes.include?(c)
|
144
|
-
assoc = klass.reflections.find { |(
|
144
|
+
assoc = klass.reflections.find { |(_n, h)| h.foreign_key == c }
|
145
145
|
if assoc && assoc[1].klass.columns_hash['name']
|
146
146
|
table_name = assoc[1].table_name
|
147
147
|
jointabs[table_name] ||= 0
|
@@ -182,8 +182,8 @@ EOSQL
|
|
182
182
|
|
183
183
|
def self.lines_to_crlf(lines)
|
184
184
|
lines.map do |line|
|
185
|
-
line.encode(line.encoding, :
|
186
|
-
encode(line.encoding, :
|
185
|
+
line.encode(line.encoding, universal_newline: true).
|
186
|
+
encode(line.encoding, crlf_newline: true)
|
187
187
|
end
|
188
188
|
end
|
189
189
|
|
@@ -198,7 +198,7 @@ EOSQL
|
|
198
198
|
version: m[2].to_i,
|
199
199
|
raw_sql: "#{md}/sql/#{m[1]}_v#{m[2]}_sql_#{m[3]}.sql"
|
200
200
|
}
|
201
|
-
end.group_by { |a| a[:name] }.each do |
|
201
|
+
end.group_by { |a| a[:name] }.each do |_k, v|
|
202
202
|
v.sort! { |a, b| b[:version] <=> a[:version] }
|
203
203
|
end
|
204
204
|
time_now = Time.now.utc
|
data/lib/marty/monkey.rb
CHANGED
@@ -210,7 +210,7 @@ module Netzke::Basepack::DataAdapters
|
|
210
210
|
predicates[1..-1].inject(predicates.first) { |r, p| r.and(p) }
|
211
211
|
end
|
212
212
|
|
213
|
-
def update_predecate_for_enum(table,
|
213
|
+
def update_predecate_for_enum(table, _op, value)
|
214
214
|
col = Arel::Nodes::NamedFunction.new('CAST', [table.as('TEXT')])
|
215
215
|
col.matches "%#{value}%"
|
216
216
|
end
|
data/lib/marty/promise_proxy.rb
CHANGED
@@ -47,7 +47,7 @@ class Marty::RuleScriptSet < Delorean::AbstractContainer
|
|
47
47
|
dgid.ends_with?('_grid') ? dgid + '_result' : dgid + '_grid_result'
|
48
48
|
end
|
49
49
|
|
50
|
-
def expand_grid_code(h, dgid, dgname, cache,
|
50
|
+
def expand_grid_code(h, dgid, dgname, cache, _extra_params)
|
51
51
|
final_name = self.class.grid_final_name(dgid)
|
52
52
|
if cache[dgname]
|
53
53
|
h[final_name] = (cache[dgname]).to_s
|
@@ -133,7 +133,7 @@ class Marty::RuleScriptSet < Delorean::AbstractContainer
|
|
133
133
|
acc + [acc.last + len]
|
134
134
|
end
|
135
135
|
ranges = oh.keys.zip(ranges0.each_cons(2).to_a)
|
136
|
-
secnm, (st, en) = ranges.detect do |
|
136
|
+
secnm, (st, en) = ranges.detect do |_sec, (st, en)|
|
137
137
|
line.between?(st, en - 1)
|
138
138
|
end
|
139
139
|
[secnm, line - st + 1]
|
data/lib/marty/util.rb
CHANGED
@@ -100,9 +100,8 @@ module Marty::Util
|
|
100
100
|
when Array
|
101
101
|
obj.map { |o| deep_round(o, digits) }
|
102
102
|
when Hash
|
103
|
-
obj.
|
103
|
+
obj.each_with_object({}) do |(key, value), result|
|
104
104
|
result[key] = deep_round(value, digits)
|
105
|
-
result
|
106
105
|
end
|
107
106
|
else
|
108
107
|
obj.is_a?(Float) ? obj.round(digits) : obj
|
data/lib/marty/version.rb
CHANGED
data/lib/marty/xl.rb
CHANGED
@@ -521,10 +521,9 @@ class Marty::Xl
|
|
521
521
|
when Array
|
522
522
|
obj.map { |x| symbolize_keys(x, sym_str) }
|
523
523
|
when Hash
|
524
|
-
obj.
|
524
|
+
obj.each_with_object({}) do |(key, value), result|
|
525
525
|
key = key.to_sym if key.is_a?(String)
|
526
526
|
result[key] = symbolize_keys(value, sym_str)
|
527
|
-
result
|
528
527
|
end
|
529
528
|
when String
|
530
529
|
(sym_str && obj.starts_with?(sym_str)) ? obj[sym_str.length..-1].to_sym : obj
|
data/other/marty/api/base.rb
CHANGED
@@ -50,7 +50,7 @@ class Marty::Api::Base
|
|
50
50
|
).pluck(:app_name).first
|
51
51
|
end
|
52
52
|
|
53
|
-
def self.evaluate params,
|
53
|
+
def self.evaluate params, _request, config
|
54
54
|
# prevent script evaluation from modifying passed in params
|
55
55
|
params = params.deep_dup
|
56
56
|
|
@@ -234,7 +234,7 @@ class Marty::Api::Base
|
|
234
234
|
errs.map { |err| _get_errors(err) }
|
235
235
|
elsif errs.is_a?(Hash)
|
236
236
|
if !errs.include?(:failed_attribute)
|
237
|
-
errs.map { |
|
237
|
+
errs.map { |_k, v| _get_errors(v) }
|
238
238
|
else
|
239
239
|
fa, fragment, message, errors = errs.values_at(:failed_attribute,
|
240
240
|
:fragment,
|
@@ -35,7 +35,7 @@ module Marty::Diagnostic; class Nodes < Base
|
|
35
35
|
'terminated' => error_if(instances.terminated),
|
36
36
|
'stopping' => error_if(instances.stopping),
|
37
37
|
'stopped' => error_if(instances.stopped),
|
38
|
-
}.delete_if { |
|
38
|
+
}.delete_if { |_k, v| v.empty? }
|
39
39
|
rescue StandardError => e
|
40
40
|
error(e.message)
|
41
41
|
end
|
@@ -35,7 +35,7 @@ module Marty::Diagnostic
|
|
35
35
|
|
36
36
|
# generate version data and declare all values consistent
|
37
37
|
versions = Version.generate.each_with_object({}) do |(n, v), h|
|
38
|
-
h[n] = v.each { |
|
38
|
+
h[n] = v.each { |_t, r| r['consistent'] = true }
|
39
39
|
end
|
40
40
|
|
41
41
|
expected = {
|
@@ -85,7 +85,7 @@ feature 'under Applications menu, Scripting workflows', js: true do
|
|
85
85
|
and_by 'select the new script' do
|
86
86
|
wait_for_ajax
|
87
87
|
within(:gridpanel, 'script_grid', match: :first) do
|
88
|
-
expect(script_grid.get_row_vals(6)).to netzke_include(:
|
88
|
+
expect(script_grid.get_row_vals(6)).to netzke_include(name: 'Xyz', tag: 'DEV')
|
89
89
|
script_grid.select_row(6)
|
90
90
|
end
|
91
91
|
end
|
@@ -289,7 +289,7 @@ feature 'under Applications menu, Scripting workflows', js: true do
|
|
289
289
|
wait_for_ajax
|
290
290
|
script_grid.select_row(5)
|
291
291
|
expect(page).to have_content '1 #123 2 #456'
|
292
|
-
expect(tag_grid.get_row_vals(2)).to netzke_include(:
|
292
|
+
expect(tag_grid.get_row_vals(2)).to netzke_include(comment: 'ABCD')
|
293
293
|
end
|
294
294
|
end
|
295
295
|
|
@@ -45,7 +45,7 @@ C:
|
|
45
45
|
a = 456.0 + p0
|
46
46
|
DELOREAN
|
47
47
|
|
48
|
-
with_user('dev1') do |
|
48
|
+
with_user('dev1') do |_u|
|
49
49
|
Marty::Script.
|
50
50
|
load_script_bodies({
|
51
51
|
'M1' => sample_script,
|
@@ -74,7 +74,7 @@ B: A
|
|
74
74
|
p =? 5
|
75
75
|
DELOREAN
|
76
76
|
|
77
|
-
with_user('dev1') do |
|
77
|
+
with_user('dev1') do |_u|
|
78
78
|
Marty::Script.
|
79
79
|
load_script_bodies({
|
80
80
|
'M3' => sample_script2,
|
@@ -78,11 +78,11 @@ feature 'under Sytem menu, User Management worflows', js: true do
|
|
78
78
|
and_by 'check row got edited' do
|
79
79
|
wait_for_ajax
|
80
80
|
expect(user_view.get_row_vals(2)).to netzke_include(
|
81
|
-
:
|
82
|
-
:
|
83
|
-
:
|
84
|
-
:
|
85
|
-
:
|
81
|
+
login: 'new_login',
|
82
|
+
firstname: 'new_fname',
|
83
|
+
lastname: 'new_lname',
|
84
|
+
active: true,
|
85
|
+
roles: 'User Manager,Viewer',
|
86
86
|
)
|
87
87
|
end
|
88
88
|
|
@@ -26,9 +26,9 @@ module Marty
|
|
26
26
|
},
|
27
27
|
}
|
28
28
|
}
|
29
|
-
opt = { :
|
30
|
-
:
|
31
|
-
:
|
29
|
+
opt = { validate_schema: true,
|
30
|
+
errors_as_objects: false,
|
31
|
+
version: Marty::JsonSchema::RAW_URI }
|
32
32
|
|
33
33
|
it 'returns no error on correct simple data' do
|
34
34
|
data = { 'a' => 5 }
|
@@ -625,7 +625,7 @@ module Marty
|
|
625
625
|
### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ###
|
626
626
|
|
627
627
|
class FloorOf8 < JSON::Schema::Attribute
|
628
|
-
def self.validate(curr_schema, data, frag, processor,
|
628
|
+
def self.validate(curr_schema, data, frag, processor, _validator, opt)
|
629
629
|
if data < 8
|
630
630
|
msg = 'Error at FloorOf8: Value is below 8'
|
631
631
|
validation_error(processor,
|
@@ -639,7 +639,7 @@ module Marty
|
|
639
639
|
end
|
640
640
|
|
641
641
|
class CeilingOf20 < JSON::Schema::Attribute
|
642
|
-
def self.validate(curr_schema, data, frag, processor,
|
642
|
+
def self.validate(curr_schema, data, frag, processor, _validator, opt)
|
643
643
|
if data > 20
|
644
644
|
msg = 'Error at CeilingOf20: Value exceeds 20'
|
645
645
|
validation_error(processor,
|
data/spec/lib/xl_spec.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -42,7 +42,7 @@ RSpec.configure do |config|
|
|
42
42
|
marty_whodunnit
|
43
43
|
end
|
44
44
|
|
45
|
-
config.after(:each, :
|
45
|
+
config.after(:each, js: true) do |example|
|
46
46
|
# save a screenshot on js failures for CI server testing
|
47
47
|
if example.exception
|
48
48
|
meta = example.metadata
|
@@ -265,7 +265,7 @@ module Marty; module RSpec; module Components
|
|
265
265
|
res
|
266
266
|
end
|
267
267
|
|
268
|
-
def end_edit(
|
268
|
+
def end_edit(_row, _field)
|
269
269
|
run_js <<-JS
|
270
270
|
#{ext_var(grid, 'grid')}
|
271
271
|
#{ext_var(ext_celleditor, 'editor')}
|
@@ -383,7 +383,7 @@ module Marty; module RSpec; module Components
|
|
383
383
|
JS
|
384
384
|
end
|
385
385
|
|
386
|
-
def end_edit(
|
386
|
+
def end_edit(_row, _field)
|
387
387
|
run_js <<-JS
|
388
388
|
#{ext_var(grid, 'grid')}
|
389
389
|
#{ext_var(ext_celleditor, 'editor')}
|
data/spec/support/netzke.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Marty; module RSpec; module Netzke
|
2
2
|
MAX_WAIT_TIME = 5.0
|
3
3
|
|
4
|
-
def by message,
|
4
|
+
def by message, _level = 0
|
5
5
|
wait_for_ready(10)
|
6
6
|
pending(message) unless block_given?
|
7
7
|
yield
|
@@ -30,8 +30,8 @@ module Marty; module RSpec; module Netzke
|
|
30
30
|
end
|
31
31
|
|
32
32
|
find(:xpath, '//span', text: 'Sign in', match: :first, wait: 5).click
|
33
|
-
fill_in('login', :
|
34
|
-
fill_in('password', :
|
33
|
+
fill_in('login', with: username)
|
34
|
+
fill_in('password', with: password)
|
35
35
|
press('OK')
|
36
36
|
wait_for_ajax
|
37
37
|
end
|
@@ -64,7 +64,7 @@ module Marty; module RSpec; module Netzke
|
|
64
64
|
end
|
65
65
|
end
|
66
66
|
|
67
|
-
def popup
|
67
|
+
def popup _message = ''
|
68
68
|
wait_for_ready
|
69
69
|
yield if block_given?
|
70
70
|
close_window
|
@@ -20,12 +20,12 @@ module Marty; module RSpec; module SharedConnection
|
|
20
20
|
def self.connection
|
21
21
|
EXCL_LAMBDA.call.include?(model_name) ? orig_connection :
|
22
22
|
@@shared_connection ||
|
23
|
-
ConnectionPool::Wrapper.new(:
|
23
|
+
ConnectionPool::Wrapper.new(size: 1) { retrieve_connection }
|
24
24
|
end
|
25
25
|
|
26
26
|
def self.reset_shared_connection
|
27
27
|
@@shared_connection = ConnectionPool::Wrapper.
|
28
|
-
new(:
|
28
|
+
new(size: 1) { retrieve_connection }
|
29
29
|
end
|
30
30
|
end
|
31
31
|
end end end
|
data/spec/support/users.rb
CHANGED
@@ -13,7 +13,7 @@ module Marty; module RSpec; module Users
|
|
13
13
|
|
14
14
|
role = Marty::Role.find_by_name(role_name.to_s)
|
15
15
|
|
16
|
-
|
16
|
+
raise "Oops unknown role: #{role_name}. Was db seeded?" unless role
|
17
17
|
|
18
18
|
user_role = Marty::UserRole.new
|
19
19
|
user_role.user = user
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: marty
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.7.
|
4
|
+
version: 2.7.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arman Bostani
|
@@ -14,7 +14,7 @@ authors:
|
|
14
14
|
autorequire:
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
|
-
date: 2019-06-
|
17
|
+
date: 2019-06-07 00:00:00.000000000 Z
|
18
18
|
dependencies:
|
19
19
|
- !ruby/object:Gem::Dependency
|
20
20
|
name: pg
|