marty 2.5.2 → 2.5.4

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.
Files changed (181) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +4 -0
  3. data/.rubocop.yml +7 -0
  4. data/.rubocop_todo.yml +11 -589
  5. data/Gemfile +9 -9
  6. data/Gemfile.lock +1 -1
  7. data/Rakefile +1 -3
  8. data/app/components/marty/api_auth_view.rb +3 -3
  9. data/app/components/marty/api_config_view.rb +8 -8
  10. data/app/components/marty/api_log_view.rb +16 -20
  11. data/app/components/marty/auth_app.rb +6 -6
  12. data/app/components/marty/base_rule_view.rb +27 -19
  13. data/app/components/marty/config_view.rb +12 -9
  14. data/app/components/marty/data_grid_view.rb +26 -26
  15. data/app/components/marty/delorean_rule_view.rb +0 -1
  16. data/app/components/marty/event_view.rb +27 -27
  17. data/app/components/marty/extras/layout.rb +26 -26
  18. data/app/components/marty/extras/misc.rb +2 -2
  19. data/app/components/marty/grid.rb +13 -13
  20. data/app/components/marty/grid_append_only.rb +0 -1
  21. data/app/components/marty/import_type_view.rb +13 -13
  22. data/app/components/marty/import_view.rb +17 -16
  23. data/app/components/marty/log_view.rb +16 -14
  24. data/app/components/marty/main_auth_app.rb +59 -59
  25. data/app/components/marty/main_auth_app/client/main_auth_app.js +3 -3
  26. data/app/components/marty/mcfly_grid_panel.rb +10 -10
  27. data/app/components/marty/new_posting_form.rb +11 -11
  28. data/app/components/marty/new_posting_window.rb +0 -1
  29. data/app/components/marty/posting_grid.rb +12 -13
  30. data/app/components/marty/promise_view.rb +6 -6
  31. data/app/components/marty/report_form.rb +50 -53
  32. data/app/components/marty/report_select.rb +27 -27
  33. data/app/components/marty/reporting.rb +4 -4
  34. data/app/components/marty/script_form.rb +40 -42
  35. data/app/components/marty/script_grid.rb +24 -24
  36. data/app/components/marty/script_tester.rb +40 -42
  37. data/app/components/marty/scripting.rb +25 -27
  38. data/app/components/marty/simple_app.rb +24 -9
  39. data/app/components/marty/tag_grid.rb +12 -13
  40. data/app/components/marty/user_view.rb +35 -35
  41. data/app/controllers/marty/application_controller.rb +3 -4
  42. data/app/controllers/marty/components_controller.rb +1 -1
  43. data/app/controllers/marty/delayed_job_controller.rb +1 -0
  44. data/app/controllers/marty/diagnostic/controller.rb +4 -6
  45. data/app/controllers/marty/job_controller.rb +6 -6
  46. data/app/controllers/marty/report_controller.rb +11 -11
  47. data/app/controllers/marty/rpc_controller.rb +15 -16
  48. data/app/helpers/marty/script_set.rb +4 -4
  49. data/app/models/marty/api_auth.rb +4 -5
  50. data/app/models/marty/api_config.rb +1 -1
  51. data/app/models/marty/base.rb +9 -8
  52. data/app/models/marty/base_rule.rb +18 -13
  53. data/app/models/marty/config.rb +4 -5
  54. data/app/models/marty/data_grid.rb +157 -181
  55. data/app/models/marty/delorean_rule.rb +63 -62
  56. data/app/models/marty/enum.rb +1 -1
  57. data/app/models/marty/event.rb +56 -59
  58. data/app/models/marty/helper.rb +38 -6
  59. data/app/models/marty/import_type.rb +6 -6
  60. data/app/models/marty/log.rb +3 -2
  61. data/app/models/marty/name_validator.rb +3 -2
  62. data/app/models/marty/pg_enum.rb +3 -4
  63. data/app/models/marty/posting.rb +20 -24
  64. data/app/models/marty/promise.rb +28 -30
  65. data/app/models/marty/script.rb +30 -28
  66. data/app/models/marty/tag.rb +8 -8
  67. data/app/models/marty/token.rb +2 -2
  68. data/app/models/marty/user.rb +24 -23
  69. data/app/models/marty/vw_promise.rb +10 -11
  70. data/config/routes.rb +2 -2
  71. data/delorean/blame_report.dl +268 -0
  72. data/{spec/dummy/delorean/fields.dl → delorean/marty_fields.dl} +8 -0
  73. data/delorean/table_report.dl +34 -0
  74. data/docker-compose.dummy.yml +2 -3
  75. data/lib/marty/aws/base.rb +8 -8
  76. data/lib/marty/aws/request.rb +4 -4
  77. data/lib/marty/cache_adapters/mcfly_ruby_cache.rb +1 -0
  78. data/lib/marty/content_handler.rb +25 -25
  79. data/lib/marty/data_change.rb +49 -71
  80. data/lib/marty/data_conversion.rb +20 -28
  81. data/lib/marty/data_exporter.rb +25 -28
  82. data/lib/marty/data_importer.rb +25 -27
  83. data/lib/marty/engine.rb +1 -2
  84. data/lib/marty/json_schema.rb +22 -24
  85. data/lib/marty/logger.rb +6 -9
  86. data/lib/marty/mcfly_model.rb +20 -24
  87. data/lib/marty/migrations.rb +37 -35
  88. data/lib/marty/monkey.rb +33 -33
  89. data/lib/marty/permissions.rb +18 -18
  90. data/lib/marty/promise_job.rb +17 -17
  91. data/lib/marty/promise_proxy.rb +6 -6
  92. data/lib/marty/relation.rb +6 -7
  93. data/lib/marty/rpc_call.rb +13 -12
  94. data/lib/marty/rule_script_set.rb +32 -28
  95. data/lib/marty/schema_helper.rb +37 -51
  96. data/lib/marty/util.rb +25 -24
  97. data/lib/marty/version.rb +1 -1
  98. data/lib/marty/xl.rb +121 -115
  99. data/make-dummy.mk +3 -0
  100. data/marty.gemspec +21 -21
  101. data/other/marty/api/base.rb +34 -35
  102. data/other/marty/diagnostic/aws/ec2_instance.rb +8 -8
  103. data/other/marty/diagnostic/base.rb +13 -14
  104. data/other/marty/diagnostic/collection.rb +2 -1
  105. data/other/marty/diagnostic/connections.rb +8 -6
  106. data/other/marty/diagnostic/database.rb +1 -0
  107. data/other/marty/diagnostic/delayed_job_version.rb +7 -9
  108. data/other/marty/diagnostic/delayed_job_worker_total_count.rb +1 -1
  109. data/other/marty/diagnostic/delayed_job_workers.rb +1 -1
  110. data/other/marty/diagnostic/environment_variables.rb +17 -15
  111. data/other/marty/diagnostic/fatal.rb +1 -1
  112. data/other/marty/diagnostic/node.rb +5 -9
  113. data/other/marty/diagnostic/nodes.rb +7 -5
  114. data/other/marty/diagnostic/packer.rb +7 -7
  115. data/other/marty/diagnostic/reporter.rb +24 -27
  116. data/other/marty/diagnostic/version.rb +3 -5
  117. data/script/rails +2 -1
  118. data/spec/controllers/application_controller_spec.rb +6 -6
  119. data/spec/controllers/delayed_job_controller_spec.rb +4 -4
  120. data/spec/controllers/diagnostic/controller_spec.rb +59 -60
  121. data/spec/controllers/job_controller_spec.rb +68 -69
  122. data/spec/controllers/rpc_controller_spec.rb +353 -359
  123. data/spec/controllers/rpc_import_spec.rb +15 -16
  124. data/spec/dummy/delorean/blame_report.dl +110 -15
  125. data/spec/dummy/delorean/data_report.dl +4 -4
  126. data/spec/dummy/delorean/marty_fields.dl +63 -0
  127. data/spec/dummy/delorean/table_report.dl +34 -0
  128. data/spec/features/auth_app_spec.rb +1 -2
  129. data/spec/features/data_import_spec.rb +2 -3
  130. data/spec/features/enum_spec.rb +42 -46
  131. data/spec/features/jobs_dashboard_spec.rb +14 -8
  132. data/spec/features/log_view_spec.rb +40 -43
  133. data/spec/features/reporting_spec.rb +15 -15
  134. data/spec/features/rule_spec.rb +195 -190
  135. data/spec/features/scripting_spec.rb +17 -20
  136. data/spec/features/scripting_test_spec.rb +32 -33
  137. data/spec/features/user_view_spec.rb +15 -17
  138. data/spec/job_helper.rb +11 -11
  139. data/spec/lib/data_blame_spec.rb +82 -0
  140. data/spec/lib/data_exporter_spec.rb +31 -32
  141. data/spec/lib/data_importer_spec.rb +382 -395
  142. data/spec/lib/delorean_query_spec.rb +117 -119
  143. data/spec/lib/json_schema_spec.rb +382 -392
  144. data/spec/lib/logger_spec.rb +23 -24
  145. data/spec/lib/mcfly_model_spec.rb +112 -109
  146. data/spec/lib/migrations_spec.rb +10 -10
  147. data/spec/lib/struct_compare_spec.rb +6 -6
  148. data/spec/lib/table_report_spec.rb +90 -0
  149. data/spec/lib/xl_spec.rb +63 -65
  150. data/spec/lib/xl_styles_spec.rb +16 -19
  151. data/spec/models/api_auth_spec.rb +30 -30
  152. data/spec/models/config_spec.rb +32 -32
  153. data/spec/models/data_grid_spec.rb +642 -655
  154. data/spec/models/event_spec.rb +96 -88
  155. data/spec/models/import_type_spec.rb +20 -20
  156. data/spec/models/posting_spec.rb +35 -35
  157. data/spec/models/promise_spec.rb +5 -5
  158. data/spec/models/rule_spec.rb +280 -269
  159. data/spec/models/script_spec.rb +27 -18
  160. data/spec/models/user_spec.rb +9 -9
  161. data/spec/other/diagnostic/base_spec.rb +20 -19
  162. data/spec/other/diagnostic/collection_spec.rb +6 -5
  163. data/spec/other/diagnostic/delayed_job_version_spec.rb +1 -1
  164. data/spec/other/diagnostic/delayed_job_workers_spec.rb +8 -8
  165. data/spec/other/diagnostic/reporter_spec.rb +31 -33
  166. data/spec/spec_helper.rb +5 -5
  167. data/spec/support/chromedriver.rb +3 -5
  168. data/spec/support/components/netzke_combobox.rb +1 -1
  169. data/spec/support/components/netzke_grid.rb +17 -17
  170. data/spec/support/custom_matchers.rb +2 -2
  171. data/spec/support/download_helper.rb +1 -1
  172. data/spec/support/helper.rb +1 -2
  173. data/spec/support/netzke.rb +31 -31
  174. data/spec/support/performance_helper.rb +8 -8
  175. data/spec/support/post_run_logger.rb +1 -2
  176. data/spec/support/setup.rb +1 -4
  177. data/spec/support/shared_connection.rb +2 -2
  178. data/spec/support/structure_compare.rb +21 -22
  179. data/spec/support/suite.rb +1 -2
  180. data/spec/support/users.rb +5 -6
  181. metadata +32 -26
@@ -5,18 +5,18 @@ class Marty::ReportSelect < Marty::Form
5
5
  c.klass = Marty::TagGrid
6
6
  c.height = 200
7
7
  c.load_inline_data = false
8
- c.title = I18n.t("script.selection_history")
9
- c.attributes = [:name, :created_dt, :comment]
8
+ c.title = I18n.t('script.selection_history')
9
+ c.attributes = [:name, :created_dt, :comment]
10
10
  c.bbar = []
11
11
  end
12
12
 
13
13
  component :script_grid do |c|
14
14
  c.height = 350
15
15
  c.klass = Marty::ScriptGrid
16
- c.title = I18n.t("script.selection_list")
16
+ c.title = I18n.t('script.selection_list')
17
17
  c.bbar = []
18
- c.attributes = [:name, :tag]
19
- c.scope = lambda { |r|
18
+ c.attributes = [:name, :tag]
19
+ c.scope = lambda { |r|
20
20
  r.where("name like '%Report'")
21
21
  }
22
22
  end
@@ -28,18 +28,18 @@ class Marty::ReportSelect < Marty::Form
28
28
 
29
29
  c.items =
30
30
  [
31
- :tag_grid,
32
- :script_grid,
33
- fieldset(I18n.t("reporting.report_select"),
34
- {
35
- xtype: :netzkeremotecombo,
36
- name: "nodename",
37
- attr_type: :string,
38
- virtual: true,
39
- hide_label: true,
40
- width: 200,
41
- },
42
- {},
31
+ :tag_grid,
32
+ :script_grid,
33
+ fieldset(I18n.t('reporting.report_select'),
34
+ {
35
+ xtype: :netzkeremotecombo,
36
+ name: 'nodename',
37
+ attr_type: :string,
38
+ virtual: true,
39
+ hide_label: true,
40
+ width: 200,
41
+ },
42
+ {},
43
43
  ),
44
44
  ]
45
45
  c.bbar = nil
@@ -51,7 +51,7 @@ class Marty::ReportSelect < Marty::Form
51
51
  end
52
52
 
53
53
  # FIXME: should be in a library
54
- REPORT_ATTR_SET = Set["title", "form", "result", "format"]
54
+ REPORT_ATTR_SET = Set['title', 'form', 'result', 'format']
55
55
 
56
56
  def node_list
57
57
  sset = Marty::ScriptSet.new root_sess[:selected_tag_id]
@@ -59,26 +59,26 @@ class Marty::ReportSelect < Marty::Form
59
59
 
60
60
  return [] unless engine
61
61
 
62
- nodes = engine.enumerate_nodes.select { |n|
62
+ nodes = engine.enumerate_nodes.select do |n|
63
63
  attrs = Set.new(engine.enumerate_attrs_by_node(n))
64
64
  attrs.superset? REPORT_ATTR_SET
65
- }
65
+ end
66
66
 
67
- nodes.map { |node|
68
- roles = engine.evaluate(node, "roles") rescue nil
69
- next if roles && !roles.any?{ |r| Marty::User.has_role(r) }
67
+ nodes.map do |node|
68
+ roles = engine.evaluate(node, 'roles') rescue nil
69
+ next if roles && !roles.any? { |r| Marty::User.has_role(r) }
70
70
 
71
71
  begin
72
- title, format = engine.evaluate(node, ["title", "format"])
72
+ title, format = engine.evaluate(node, ['title', 'format'])
73
73
  format ? [node, "#{title} (#{format})"] : nil
74
- rescue
74
+ rescue StandardError
75
75
  [node, node]
76
76
  end
77
- }.compact.sort{ |a,b| a[1] <=> b[1]}
77
+ end.compact.sort { |a, b| a[1] <=> b[1] }
78
78
  end
79
79
 
80
80
  endpoint :get_combobox_options do |params|
81
- client.data = node_list if params["attr"] == "nodename"
81
+ client.data = node_list if params['attr'] == 'nodename'
82
82
  end
83
83
 
84
84
  ######################################################################
@@ -2,15 +2,15 @@ class Marty::Reporting < Netzke::Base
2
2
  def configure(c)
3
3
  super
4
4
  c.items = [
5
- :report_select,
6
- :report_form,
7
- ]
5
+ :report_select,
6
+ :report_form,
7
+ ]
8
8
  end
9
9
 
10
10
  client_class do |c|
11
11
  c.header = false
12
12
  c.layout = :border
13
- c.defaults = {body_style: 'padding:0px'}
13
+ c.defaults = { body_style: 'padding:0px' }
14
14
 
15
15
  c.include :reporting
16
16
  end
@@ -8,8 +8,7 @@ class Marty::ScriptForm < Marty::Form
8
8
  ######################################################################
9
9
 
10
10
  endpoint :netzke_load do |params|
11
-
12
- return client.netzke_notify("Permission Denied") unless
11
+ return client.netzke_notify('Permission Denied') unless
13
12
  self.class.has_any_perm?
14
13
 
15
14
  script_name = params[:script_name]
@@ -23,9 +22,9 @@ class Marty::ScriptForm < Marty::Form
23
22
 
24
23
  # create an empty record if no script
25
24
  js_data = @record ? js_record_data : {
26
- "body" => "",
27
- "id" => -1,
28
- "meta" => {},
25
+ 'body' => '',
26
+ 'id' => -1,
27
+ 'meta' => {},
29
28
  }
30
29
 
31
30
  client.netzke_set_form_values(js_data)
@@ -46,45 +45,44 @@ class Marty::ScriptForm < Marty::Form
46
45
  ######################################################################
47
46
 
48
47
  action :apply do |a|
49
- a.text = I18n.t("script_form.save")
50
- a.tooltip = I18n.t("script_form.save")
51
- a.icon_cls = "fa fa-save glyph"
48
+ a.text = I18n.t('script_form.save')
49
+ a.tooltip = I18n.t('script_form.save')
50
+ a.icon_cls = 'fa fa-save glyph'
52
51
  a.disabled = true
53
52
  end
54
53
 
55
54
  endpoint :submit do |params|
56
-
57
- return client.netzke_notify("Permission Denied") unless
55
+ return client.netzke_notify('Permission Denied') unless
58
56
  self.class.has_any_perm?
59
57
 
60
58
  # copied from corresponding method in form_panel.services
61
59
  data = ActiveSupport::JSON.decode(params[:data])
62
- data.each_pair do |k,v|
63
- data[k] = nil if v.blank? || v == "null"
60
+ data.each_pair do |k, v|
61
+ data[k] = nil if v.blank? || v == 'null'
64
62
  end
65
63
 
66
- @record = script = Marty::Script.find_by_id(data["id"])
64
+ @record = script = Marty::Script.find_by_id(data['id'])
67
65
 
68
66
  unless script
69
- client.netzke_notify "no record"
67
+ client.netzke_notify 'no record'
70
68
  return
71
69
  end
72
70
 
73
- if script.body == data["body"]
74
- client.netzke_notify "no save needed"
71
+ if script.body == data['body']
72
+ client.netzke_notify 'no save needed'
75
73
  # clear the error line if any
76
74
  client.set_line_error -1
77
75
  return
78
76
  end
79
77
 
80
78
  unless can_save?(script)
81
- client.netzke_notify "Permission denied"
79
+ client.netzke_notify 'Permission denied'
82
80
  return
83
81
  end
84
82
 
85
83
  begin
86
- dev = Marty::Tag.find_by_name("DEV")
87
- Marty::ScriptSet.new(dev).parse_check(script.name, data["body"])
84
+ dev = Marty::Tag.find_by_name('DEV')
85
+ Marty::ScriptSet.new(dev).parse_check(script.name, data['body'])
88
86
  rescue Delorean::ParseError => exc
89
87
  client.netzke_notify exc.message
90
88
  client.netzke_apply_form_errors({})
@@ -92,7 +90,7 @@ class Marty::ScriptForm < Marty::Form
92
90
  return
93
91
  end
94
92
 
95
- script.body = data["body"]
93
+ script.body = data['body']
96
94
 
97
95
  if script.save
98
96
  client.netzke_set_form_values(js_record_data)
@@ -105,12 +103,12 @@ class Marty::ScriptForm < Marty::Form
105
103
  end
106
104
 
107
105
  endpoint :do_print do |script_id|
108
- return client.netzke_notify("Permission Denied") unless
106
+ return client.netzke_notify('Permission Denied') unless
109
107
  self.class.has_any_perm?
110
108
 
111
109
  script = Marty::Script.find_by_id(script_id)
112
110
 
113
- return client.netzke_notify("bad script") unless script
111
+ return client.netzke_notify('bad script') unless script
114
112
 
115
113
  begin
116
114
  rep_params = {
@@ -118,11 +116,11 @@ class Marty::ScriptForm < Marty::Form
118
116
  title: script.name
119
117
  }
120
118
 
121
- path = Marty::Util.gen_report_path("ScriptReport",
122
- "PrettyScript",
119
+ path = Marty::Util.gen_report_path('ScriptReport',
120
+ 'PrettyScript',
123
121
  rep_params)
124
122
  client.get_report(path)
125
- rescue => exc
123
+ rescue StandardError => exc
126
124
  return client.netzke_notify "ERROR: #{exc}"
127
125
  end
128
126
  end
@@ -130,9 +128,9 @@ class Marty::ScriptForm < Marty::Form
130
128
  ######################################################################
131
129
 
132
130
  action :do_print do |a|
133
- a.text = I18n.t("script_form.print")
134
- a.tooltip = I18n.t("script_form.print")
135
- a.icon_cls = "fa fa-print glyph"
131
+ a.text = I18n.t('script_form.print')
132
+ a.tooltip = I18n.t('script_form.print')
133
+ a.icon_cls = 'fa fa-print glyph'
136
134
  end
137
135
 
138
136
  ######################################################################
@@ -149,22 +147,22 @@ class Marty::ScriptForm < Marty::Form
149
147
  def configure(c)
150
148
  super
151
149
 
152
- c.title = "Script Form"
153
- c.model = "Marty::Script"
150
+ c.title = 'Script Form'
151
+ c.model = 'Marty::Script'
154
152
  c.items =
155
153
  [
156
- {
157
- line_numbers: true,
158
- indent_unit: 4,
159
- tab_mode: "shift",
160
- match_brackets: true,
161
- hide_label: true,
162
- xtype: :codemirror,
163
- mode: "text/x-delorean",
164
- name: :body,
165
- empty_text: "No script selected.",
166
- getter: lambda { |r| r.body },
167
- },
154
+ {
155
+ line_numbers: true,
156
+ indent_unit: 4,
157
+ tab_mode: 'shift',
158
+ match_brackets: true,
159
+ hide_label: true,
160
+ xtype: :codemirror,
161
+ mode: 'text/x-delorean',
162
+ name: :body,
163
+ empty_text: 'No script selected.',
164
+ getter: lambda { |r| r.body },
165
+ },
168
166
  ]
169
167
  end
170
168
  end
@@ -1,50 +1,50 @@
1
1
  class Marty::ScriptGrid < Marty::Grid
2
2
  has_marty_permissions \
3
- create: [:dev],
4
- read: :any,
5
- update: [:dev],
6
- delete: [:dev]
3
+ create: [:dev],
4
+ read: :any,
5
+ update: [:dev],
6
+ delete: [:dev]
7
7
 
8
8
  def configure(c)
9
9
  super
10
10
 
11
- c.model = "Marty::Script"
11
+ c.model = 'Marty::Script'
12
12
  c.multi_select = false
13
13
  c.attributes ||= [:name, :created_dt, :tag]
14
- c.title ||= I18n.t('scripts', default: "Scripts")
15
- c.store_config.merge!({sorters: [{property: :name, direction: 'ASC'}]})
14
+ c.title ||= I18n.t('scripts', default: 'Scripts')
15
+ c.store_config.merge!(sorters: [{ property: :name, direction: 'ASC' }])
16
16
  end
17
17
 
18
18
  def get_records(params)
19
19
  begin
20
20
  ts = Marty::Tag.map_to_tag(root_sess[:selected_tag_id]).created_dt
21
21
  ts = Mcfly.normalize_infinity(ts)
22
- rescue
22
+ rescue StandardError
23
23
  # if there are no non-DEV tags we get an exception above
24
24
  ts = 'infinity'
25
25
  end
26
26
 
27
27
  tb = model.table_name
28
28
  model.where("#{tb}.obsoleted_dt >= ? AND #{tb}.created_dt < ?",
29
- ts, ts).scoping do
29
+ ts, ts).scoping do
30
30
  super
31
31
  end
32
32
  end
33
33
 
34
34
  action :delete do |a|
35
- a.text = I18n.t("script_grid.delete")
36
- a.tooltip = I18n.t("script_grid.delete")
37
- a.icon_cls = "fa fa-trash glyph"
35
+ a.text = I18n.t('script_grid.delete')
36
+ a.tooltip = I18n.t('script_grid.delete')
37
+ a.icon_cls = 'fa fa-trash glyph'
38
38
  a.disabled = config[:prohibit_delete]
39
39
  end
40
40
 
41
41
  endpoint :destroy do |params|
42
- return client.netzke_notify("Permission Denied") if
42
+ return client.netzke_notify('Permission Denied') if
43
43
  !config[:permissions][:delete]
44
44
 
45
45
  tag = Marty::Tag.map_to_tag(root_sess[:selected_tag_id])
46
46
 
47
- return client.netzke_notify("Can only delete in DEV tag") unless
47
+ return client.netzke_notify('Can only delete in DEV tag') unless
48
48
  tag && tag.isdev?
49
49
 
50
50
  super(params)
@@ -55,15 +55,15 @@ class Marty::ScriptGrid < Marty::Grid
55
55
  endpoint :add_window__add_form__submit do |params|
56
56
  data = ActiveSupport::JSON.decode(params[:data])
57
57
 
58
- return client.netzke_notify("Permission Denied") if
58
+ return client.netzke_notify('Permission Denied') if
59
59
  !config[:permissions][:create]
60
60
 
61
61
  tag = Marty::Tag.map_to_tag(root_sess[:selected_tag_id])
62
62
 
63
- return client.netzke_notify("Can only add in DEV tag") unless
63
+ return client.netzke_notify('Can only add in DEV tag') unless
64
64
  tag && tag.isdev?
65
65
 
66
- name = data["name"]
66
+ name = data['name']
67
67
  script = Marty::Script.create_script(name, "# Script #{name}")
68
68
 
69
69
  if script.valid?
@@ -75,9 +75,9 @@ class Marty::ScriptGrid < Marty::Grid
75
75
  end
76
76
 
77
77
  action :add_in_form do |a|
78
- a.text = I18n.t("script_grid.new")
79
- a.tooltip = I18n.t("script_grid.new")
80
- a.icon_cls = "fa fa-plus glyph"
78
+ a.text = I18n.t('script_grid.new')
79
+ a.tooltip = I18n.t('script_grid.new')
80
+ a.icon_cls = 'fa fa-plus glyph'
81
81
  a.disabled = !config[:permissions][:create]
82
82
  end
83
83
 
@@ -95,17 +95,17 @@ class Marty::ScriptGrid < Marty::Grid
95
95
 
96
96
  attribute :name do |c|
97
97
  c.flex = 1
98
- c.text = I18n.t("script_grid.name")
98
+ c.text = I18n.t('script_grid.name')
99
99
  end
100
100
 
101
101
  attribute :created_dt do |c|
102
- c.text = I18n.t("script_grid.created_dt")
103
- c.format = "Y-m-d H:i"
102
+ c.text = I18n.t('script_grid.created_dt')
103
+ c.format = 'Y-m-d H:i'
104
104
  c.read_only = true
105
105
  end
106
106
 
107
107
  attribute :tag do |c|
108
- c.text = I18n.t("script_grid.tag")
108
+ c.text = I18n.t('script_grid.tag')
109
109
  c.flex = 1
110
110
  c.getter = lambda { |r| r.find_tag.try(:name) }
111
111
  end
@@ -6,27 +6,27 @@ class Marty::ScriptTester < Marty::Form
6
6
 
7
7
  c.items =
8
8
  [
9
- fieldset(I18n.t("script_tester.attributes"),
10
- {
11
- name: "attrs",
12
- xtype: :textarea,
13
- value: "",
14
- hide_label: true,
15
- min_height: 125,
16
- },
17
- {},
9
+ fieldset(I18n.t('script_tester.attributes'),
10
+ {
11
+ name: 'attrs',
12
+ xtype: :textarea,
13
+ value: '',
14
+ hide_label: true,
15
+ min_height: 125,
16
+ },
17
+ {},
18
18
  ),
19
- fieldset(I18n.t("script_tester.parameters"),
20
- {
21
- name: "params",
22
- xtype: :textarea,
23
- value: "",
24
- hide_label: true,
25
- min_height: 125,
26
- },
27
- {},
19
+ fieldset(I18n.t('script_tester.parameters'),
20
+ {
21
+ name: 'params',
22
+ xtype: :textarea,
23
+ value: '',
24
+ hide_label: true,
25
+ min_height: 125,
26
+ },
27
+ {},
28
28
  ),
29
- :result,
29
+ :result,
30
30
  ]
31
31
  end
32
32
 
@@ -44,65 +44,63 @@ class Marty::ScriptTester < Marty::Form
44
44
  endpoint :submit do |params|
45
45
  data = ActiveSupport::JSON.decode(params[:data])
46
46
 
47
- attrs = data["attrs"].split(';').map(&:strip).reject(&:empty?)
47
+ attrs = data['attrs'].split(';').map(&:strip).reject(&:empty?)
48
48
 
49
- pjson = data["params"].split("\n").map(&:strip).reject(&:empty?).map {
50
- |s| s.sub(/^([a-z0-9_]*)\s*=/, '"\1": ')
51
- }.join(',')
49
+ pjson = data['params'].split("\n").map(&:strip).reject(&:empty?).map do |s|
50
+ s.sub(/^([a-z0-9_]*)\s*=/, '"\1": ')
51
+ end.join(',')
52
52
 
53
53
  begin
54
54
  phash = ActiveSupport::JSON.decode("{ #{pjson} }")
55
55
  rescue MultiJson::DecodeError
56
- client.netzke_notify "Malformed input parameters"
56
+ client.netzke_notify 'Malformed input parameters'
57
57
  return
58
58
  end
59
59
 
60
60
  engine = new_engine
61
61
 
62
62
  begin
63
- result = attrs.map { |a|
63
+ result = attrs.map do |a|
64
64
  node, attr = a.split('.')
65
65
  raise "bad attribute: '#{a}'" if !attr
66
+
66
67
  # Need to clone phash since it's modified by eval. It can
67
68
  # be reused for a given node but not across nodes.
68
69
  res = engine.evaluate(node, attr, phash.clone)
69
70
  q = CGI::escapeHTML(res.to_json)
70
71
  "#{a} = #{q}"
71
- }
72
-
73
- client.netzke_notify "done"
74
- client.set_result result.join("<br/>")
72
+ end
75
73
 
74
+ client.netzke_notify 'done'
75
+ client.set_result result.join('<br/>')
76
76
  rescue SystemStackError
77
- return client.netzke_notify "System Stack Error"
78
-
79
- rescue => exc
77
+ return client.netzke_notify 'System Stack Error'
78
+ rescue StandardError => exc
80
79
  res = Delorean::Engine.grok_runtime_exception(exc)
81
80
 
82
- result = ["Error: #{res['error']}", "Backtrace:"] +
83
- res["backtrace"].map {|m, line, fn| "#{m}:#{line} #{fn}"}
81
+ result = ["Error: #{res['error']}", 'Backtrace:'] +
82
+ res['backtrace'].map { |m, line, fn| "#{m}:#{line} #{fn}" }
84
83
 
85
- client.netzke_notify "failed"
86
- client.set_result '<font color="red">' + result.join("<br/>") + "</font>"
84
+ client.netzke_notify 'failed'
85
+ client.set_result '<font color="red">' + result.join('<br/>') + '</font>'
87
86
  end
88
87
  end
89
88
 
90
89
  action :apply do |a|
91
- a.text = I18n.t("script_tester.compute")
92
- a.tooltip = I18n.t("script_tester.compute")
93
- a.icon_cls = "fa fa-bug glyph"
90
+ a.text = I18n.t('script_tester.compute')
91
+ a.tooltip = I18n.t('script_tester.compute')
92
+ a.icon_cls = 'fa fa-bug glyph'
94
93
  a.disabled = false
95
94
  end
96
95
 
97
96
  component :result do |c|
98
97
  c.klass = Marty::Panel
99
- c.title = I18n.t("script_tester.results")
100
- c.html = ""
98
+ c.title = I18n.t('script_tester.results')
99
+ c.html = ''
101
100
  c.flex = 1
102
101
  c.min_height = 250
103
102
  c.auto_scroll = true
104
103
  end
105
-
106
104
  end
107
105
 
108
106
  ScriptTester = Marty::ScriptTester