marty 3.1.0 → 4.0.0.rc2

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 (58) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +0 -7
  3. data/.rubocop.yml +0 -1
  4. data/.rubocop_todo.yml +15 -2
  5. data/Dockerfile.dummy +0 -3
  6. data/Gemfile +15 -21
  7. data/Gemfile.lock +289 -0
  8. data/app/components/marty/data_grid_view.rb +18 -68
  9. data/app/components/marty/extras/layout.rb +1 -1
  10. data/app/components/marty/grid.rb +1 -1
  11. data/app/components/marty/import_view.rb +3 -3
  12. data/app/components/marty/main_auth_app.rb +1 -11
  13. data/app/components/marty/report_form.rb +6 -6
  14. data/app/components/marty/script_form.rb +5 -5
  15. data/app/components/marty/script_tester.rb +2 -2
  16. data/app/components/marty/user_view.rb +9 -3
  17. data/app/models/marty/data_grid.rb +11 -16
  18. data/app/models/marty/event.rb +2 -2
  19. data/app/models/marty/promise.rb +4 -4
  20. data/app/models/marty/role_type.rb +1 -14
  21. data/app/services/marty/data_grid_view/save_grid.rb +2 -2
  22. data/app/services/marty/promises/delorean/create.rb +2 -2
  23. data/app/services/marty/promises/ruby/create.rb +2 -2
  24. data/config/locales/en.yml +2 -11
  25. data/docker-compose.dummy.yml +0 -1
  26. data/lib/marty/content_handler.rb +2 -2
  27. data/lib/marty/data_change.rb +1 -1
  28. data/lib/marty/data_conversion.rb +4 -3
  29. data/lib/marty/data_importer.rb +4 -4
  30. data/lib/marty/mcfly_model.rb +10 -7
  31. data/lib/marty/migrations.rb +1 -1
  32. data/lib/marty/monkey.rb +2 -2
  33. data/lib/marty/promise_job.rb +5 -5
  34. data/lib/marty/promise_proxy.rb +2 -2
  35. data/lib/marty/promise_ruby_job.rb +4 -4
  36. data/lib/marty/version.rb +1 -1
  37. data/marty.gemspec +18 -13
  38. data/other/marty/diagnostic/aws/ec2_instance.rb +2 -17
  39. data/other/marty/diagnostic/database.rb +2 -2
  40. data/other/marty/diagnostic/delayed_job_version.rb +1 -0
  41. data/spec/dummy/app/models/gemini/fannie_bup.rb +20 -13
  42. data/spec/dummy/config/application.rb +0 -1
  43. data/spec/dummy/config/initializers/secret_token.rb +1 -1
  44. data/spec/features/data_grid_spec.rb +46 -109
  45. data/spec/features/reporting_spec.rb +4 -4
  46. data/spec/features/rule_spec.rb +1 -1
  47. data/spec/features/scripting_spec.rb +3 -3
  48. data/spec/features/user_view_spec.rb +8 -17
  49. data/spec/lib/data_importer_spec.rb +8 -8
  50. data/spec/lib/mcfly_model_spec.rb +6 -6
  51. data/spec/models/data_grid_spec.rb +4 -19
  52. data/spec/spec_helper.rb +2 -2
  53. data/spec/support/netzke.rb +3 -4
  54. metadata +53 -50
  55. data/.ssh-docker/.keep +0 -0
  56. data/app/components/marty/data_grid_user_view.rb +0 -39
  57. data/db/migrate/108_add_data_grid_perms.rb +0 -16
  58. data/other/marty/diagnostic/aws/error.rb +0 -8
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: acc8f6db12c19c31f0689c9490ac58111dd10bb74f464a3dc911148646a71d0f
4
- data.tar.gz: cc6ba69d0f2cdad1d64b81fc500b595ba3752ab357528efe28a9e78fa53c526f
3
+ metadata.gz: 2e88119aa409a4b6e0b108e44f821c9ae6f3c402bde7a0b5982aaac317f8c0c0
4
+ data.tar.gz: f0e0a25f744a13ed98e647aa379c2421a54edc1dd8bf01e84262e4f952ce7ae2
5
5
  SHA512:
6
- metadata.gz: 440d3cac5ac80a0664ccea8250c890fe9899dbc45f3850bf9e8ddf2f5f9c5025414ea7a0ff6e5a44aecde547c15bfbaba8786c6a855eaf8f84a289e2b037d721
7
- data.tar.gz: 86e9790e0d676b7a05244332199c70b8176648abce3496a05d7652ce1b5493872c192d0dbf1753f8dcedc63f641d77d74810ce8e85cc4535f374026f566da2bf
6
+ metadata.gz: cbfd7f8b4c3fcc8f7060f7913bd2330635517a52710acae731638d6190f05726174fddfca0447bc0400d06770e10c72dd371e24e0da4f9e2699495473041a3eb
7
+ data.tar.gz: e17fa1789a98f3f67fa324b2b67e7bcc1a98c48101d62088a1c1196e9d148f9275b8c3a1134a03ed7b6022d7757cfc737b2598bfc071cfd22df215ce62876293
data/.gitignore CHANGED
@@ -31,10 +31,3 @@ spec/dummy/.sass-cache
31
31
  # Files with command history for docker
32
32
  .bash_history.docker
33
33
  .pry_history.docker
34
-
35
- # Keep empty for for ssh keys in docker
36
- /.ssh-docker/*
37
- !/.ssh-docker/.keep
38
-
39
- # Ignore Gemfile.lock
40
- Gemfile.lock
@@ -1,5 +1,4 @@
1
1
  inherit_from: .rubocop_todo.yml
2
- require: rubocop-performance
3
2
 
4
3
  AllCops:
5
4
  TargetRubyVersion: 2.3.3
@@ -48,7 +48,7 @@ Layout/ExtraSpacing:
48
48
  # Cop supports --auto-correct.
49
49
  # Configuration parameters: EnforcedStyle, IndentationWidth.
50
50
  # SupportedStyles: special_inside_parentheses, consistent, align_braces
51
- Layout/IndentFirstHashElement:
51
+ Layout/IndentHash:
52
52
  Exclude:
53
53
  - 'app/components/marty/extras/layout.rb'
54
54
  - 'lib/marty/data_change.rb'
@@ -508,7 +508,7 @@ Performance/TimesMap:
508
508
 
509
509
  # Offense count: 1
510
510
  # Cop supports --auto-correct.
511
- Style/UnneededSort:
511
+ Performance/UnneededSort:
512
512
  Exclude:
513
513
  - 'app/models/marty/event.rb'
514
514
 
@@ -934,6 +934,19 @@ Style/Next:
934
934
  Style/NumericLiterals:
935
935
  MinDigits: 15
936
936
 
937
+ # Offense count: 10
938
+ # Cop supports --auto-correct.
939
+ # Configuration parameters: AutoCorrect, EnforcedStyle, IgnoredMethods.
940
+ # SupportedStyles: predicate, comparison
941
+ Style/NumericPredicate:
942
+ Exclude:
943
+ - 'spec/**/*'
944
+ - 'app/components/marty/main_auth_app.rb'
945
+ - 'lib/marty/content_handler.rb'
946
+ - 'lib/marty/data_change.rb'
947
+ - 'lib/marty/data_importer.rb'
948
+ - 'lib/marty/xl.rb'
949
+
937
950
  # Offense count: 42
938
951
  # Cop supports --auto-correct.
939
952
  Style/ParallelAssignment:
@@ -24,9 +24,6 @@ RUN curl -L -o google-chrome.deb https://dl.google.com/linux/direct/google-chrom
24
24
  && sed -i 's|HERE/chrome\"|HERE/chrome\" --disable-setuid-sandbox|g' /opt/google/chrome/google-chrome \
25
25
  && rm google-chrome.deb
26
26
 
27
- # Install additional tools
28
- RUN apt-get install -qq -y --no-install-recommends netcat-openbsd vim
29
-
30
27
  RUN gem install bundler
31
28
 
32
29
  ENV BUNDLE_PATH /bundle_box/bundle
data/Gemfile CHANGED
@@ -5,39 +5,33 @@ source 'http://rubygems.org'
5
5
  # development dependencies will be added by default to the :development group.
6
6
  gemspec
7
7
 
8
- group :default do
9
- gem 'daemons'
10
- gem 'delayed_job_active_record'
11
- gem 'pg'
12
- gem 'rails'
13
- end
14
-
15
- group :default, :cmit do
16
- gem 'delorean_lang'
17
- gem 'marty_rspec'
18
- gem 'mcfly'
19
- # gem 'delorean_lang', path: File.expand_path('../../delorean', __FILE__)
20
- # gem 'marty_rspec', path: File.expand_path('../../marty_rspec', __FILE__)
21
- # gem 'mcfly', path: File.expand_path('../../mcfly', __FILE__)
22
- end
8
+ gem 'daemons'
9
+ gem 'delayed_job_active_record'
10
+ gem 'pg'
11
+ gem 'rails', '~> 5.1.4'
12
+ gem 'sqlite3'
23
13
 
24
14
  group :development, :test do
25
- gem 'capybara'
15
+ gem 'capybara', '~> 2.18.0'
26
16
  gem 'connection_pool'
27
17
  gem 'database_cleaner'
28
- gem 'fuubar', require: false
29
- gem 'netzke', '6.5.0.0'
30
18
  gem 'pry-byebug'
31
19
  gem 'pry-rails'
32
- gem 'puma'
33
20
  gem 'rails-controller-testing'
34
21
  gem 'rspec-instafail', require: false
35
22
  gem 'rspec-rails'
36
23
  gem 'rspec-retry'
37
24
  gem 'rubocop', require: false
38
- gem 'rubocop-performance', require: false
39
- gem 'rubocop-rails', require: false
40
25
  gem 'selenium-webdriver'
41
26
  gem 'timecop'
42
27
  gem 'webdrivers'
28
+
29
+ # gem 'mcfly', path: File.expand_path('../../mcfly', __FILE__)
30
+ gem 'mcfly'
31
+ gem 'netzke', '6.5.0.0'
32
+
33
+ # gem 'delorean_lang', path: File.expand_path('../../delorean', __FILE__)
34
+
35
+ # gem 'marty_rspec', path: File.expand_path('../../marty_rspec', __FILE__)
36
+ gem 'marty_rspec'
43
37
  end
@@ -0,0 +1,289 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ marty (2.10.0)
5
+ aws-sigv4 (~> 1.0, >= 1.0.2)
6
+ axlsx (= 3.0.0pre)
7
+ coderay
8
+ daemons (~> 1.3.1)
9
+ delayed_cron_job
10
+ delayed_job_active_record
11
+ delorean_lang (~> 1.0)
12
+ json-schema
13
+ mcfly (~> 0.0.20)
14
+ net-ldap (~> 0.16.1)
15
+ netzke (= 6.5.0.0)
16
+ pg (~> 0.21)
17
+ rubyzip
18
+ sqlite3
19
+
20
+ GEM
21
+ remote: http://rubygems.org/
22
+ specs:
23
+ actioncable (5.1.6.1)
24
+ actionpack (= 5.1.6.1)
25
+ nio4r (~> 2.0)
26
+ websocket-driver (~> 0.6.1)
27
+ actionmailer (5.1.6.1)
28
+ actionpack (= 5.1.6.1)
29
+ actionview (= 5.1.6.1)
30
+ activejob (= 5.1.6.1)
31
+ mail (~> 2.5, >= 2.5.4)
32
+ rails-dom-testing (~> 2.0)
33
+ actionpack (5.1.6.1)
34
+ actionview (= 5.1.6.1)
35
+ activesupport (= 5.1.6.1)
36
+ rack (~> 2.0)
37
+ rack-test (>= 0.6.3)
38
+ rails-dom-testing (~> 2.0)
39
+ rails-html-sanitizer (~> 1.0, >= 1.0.2)
40
+ actionview (5.1.6.1)
41
+ activesupport (= 5.1.6.1)
42
+ builder (~> 3.1)
43
+ erubi (~> 1.4)
44
+ rails-dom-testing (~> 2.0)
45
+ rails-html-sanitizer (~> 1.0, >= 1.0.3)
46
+ activejob (5.1.6.1)
47
+ activesupport (= 5.1.6.1)
48
+ globalid (>= 0.3.6)
49
+ activemodel (5.1.6.1)
50
+ activesupport (= 5.1.6.1)
51
+ activerecord (5.1.6.1)
52
+ activemodel (= 5.1.6.1)
53
+ activesupport (= 5.1.6.1)
54
+ arel (~> 8.0)
55
+ activesupport (5.1.6.1)
56
+ concurrent-ruby (~> 1.0, >= 1.0.2)
57
+ i18n (>= 0.7, < 2)
58
+ minitest (~> 5.1)
59
+ tzinfo (~> 1.1)
60
+ addressable (2.6.0)
61
+ public_suffix (>= 2.0.2, < 4.0)
62
+ arel (8.0.0)
63
+ ast (2.4.0)
64
+ aws-eventstream (1.0.3)
65
+ aws-sigv4 (1.1.0)
66
+ aws-eventstream (~> 1.0, >= 1.0.2)
67
+ axlsx (3.0.0.pre)
68
+ htmlentities (~> 4.3, >= 4.3.4)
69
+ mimemagic (~> 0.3)
70
+ nokogiri (~> 1.8, >= 1.8.2)
71
+ rubyzip (~> 1.2, >= 1.2.1)
72
+ builder (3.2.3)
73
+ byebug (11.0.0)
74
+ capybara (2.18.0)
75
+ addressable
76
+ mini_mime (>= 0.1.3)
77
+ nokogiri (>= 1.3.3)
78
+ rack (>= 1.0.0)
79
+ rack-test (>= 0.5.4)
80
+ xpath (>= 2.0, < 4.0)
81
+ childprocess (0.9.0)
82
+ ffi (~> 1.0, >= 1.0.11)
83
+ coderay (1.1.2)
84
+ coffee-script (2.4.1)
85
+ coffee-script-source
86
+ execjs
87
+ coffee-script-source (1.12.2)
88
+ concurrent-ruby (1.1.5)
89
+ connection_pool (2.2.2)
90
+ crass (1.0.4)
91
+ daemons (1.3.1)
92
+ database_cleaner (1.7.0)
93
+ delayed_cron_job (0.7.2)
94
+ delayed_job (>= 4.1)
95
+ delayed_job (4.1.5)
96
+ activesupport (>= 3.0, < 5.3)
97
+ delayed_job_active_record (4.1.3)
98
+ activerecord (>= 3.0, < 5.3)
99
+ delayed_job (>= 3.0, < 5)
100
+ delorean_lang (1.0.0)
101
+ activerecord
102
+ treetop
103
+ diff-lcs (1.3)
104
+ erubi (1.8.0)
105
+ execjs (2.7.0)
106
+ ffi (1.10.0)
107
+ globalid (0.4.2)
108
+ activesupport (>= 4.2.0)
109
+ htmlentities (4.3.4)
110
+ i18n (1.6.0)
111
+ concurrent-ruby (~> 1.0)
112
+ jaro_winkler (1.5.2)
113
+ json-schema (2.8.1)
114
+ addressable (>= 2.4)
115
+ loofah (2.2.3)
116
+ crass (~> 1.0.2)
117
+ nokogiri (>= 1.5.9)
118
+ mail (2.7.1)
119
+ mini_mime (>= 0.1.1)
120
+ marty_rspec (0.1)
121
+ rspec-by
122
+ mcfly (0.0.22)
123
+ delorean_lang
124
+ pg (~> 0.17)
125
+ method_source (0.9.2)
126
+ mime-types (2.99.3)
127
+ mimemagic (0.3.3)
128
+ mini_mime (1.0.1)
129
+ mini_portile2 (2.4.0)
130
+ minitest (5.11.3)
131
+ net-ldap (0.16.1)
132
+ netzke (6.5.0.0)
133
+ netzke-basepack (= 6.5.0.0)
134
+ netzke-core (= 6.5.0.0)
135
+ netzke-testing (= 6.5.0.0)
136
+ netzke-basepack (6.5.0.0)
137
+ netzke-core (6.5.0.0)
138
+ execjs
139
+ mime-types (< 3)
140
+ uglifier
141
+ netzke-testing (6.5.0.0)
142
+ coffee-script
143
+ nio4r (2.3.1)
144
+ nokogiri (1.10.1)
145
+ mini_portile2 (~> 2.4.0)
146
+ parallel (1.13.0)
147
+ parser (2.6.0.0)
148
+ ast (~> 2.4.0)
149
+ pg (0.21.0)
150
+ polyglot (0.3.5)
151
+ powerpack (0.1.2)
152
+ pry (0.12.2)
153
+ coderay (~> 1.1.0)
154
+ method_source (~> 0.9.0)
155
+ pry-byebug (3.7.0)
156
+ byebug (~> 11.0)
157
+ pry (~> 0.10)
158
+ pry-rails (0.3.9)
159
+ pry (>= 0.10.4)
160
+ public_suffix (3.0.3)
161
+ rack (2.0.6)
162
+ rack-test (1.1.0)
163
+ rack (>= 1.0, < 3)
164
+ rails (5.1.6.1)
165
+ actioncable (= 5.1.6.1)
166
+ actionmailer (= 5.1.6.1)
167
+ actionpack (= 5.1.6.1)
168
+ actionview (= 5.1.6.1)
169
+ activejob (= 5.1.6.1)
170
+ activemodel (= 5.1.6.1)
171
+ activerecord (= 5.1.6.1)
172
+ activesupport (= 5.1.6.1)
173
+ bundler (>= 1.3.0)
174
+ railties (= 5.1.6.1)
175
+ sprockets-rails (>= 2.0.0)
176
+ rails-controller-testing (1.0.4)
177
+ actionpack (>= 5.0.1.x)
178
+ actionview (>= 5.0.1.x)
179
+ activesupport (>= 5.0.1.x)
180
+ rails-dom-testing (2.0.3)
181
+ activesupport (>= 4.2.0)
182
+ nokogiri (>= 1.6)
183
+ rails-html-sanitizer (1.0.4)
184
+ loofah (~> 2.2, >= 2.2.2)
185
+ railties (5.1.6.1)
186
+ actionpack (= 5.1.6.1)
187
+ activesupport (= 5.1.6.1)
188
+ method_source
189
+ rake (>= 0.8.7)
190
+ thor (>= 0.18.1, < 2.0)
191
+ rainbow (3.0.0)
192
+ rake (12.3.2)
193
+ rspec (3.8.0)
194
+ rspec-core (~> 3.8.0)
195
+ rspec-expectations (~> 3.8.0)
196
+ rspec-mocks (~> 3.8.0)
197
+ rspec-by (0.0.7)
198
+ rspec-core (>= 3)
199
+ rspec-core (3.8.0)
200
+ rspec-support (~> 3.8.0)
201
+ rspec-expectations (3.8.2)
202
+ diff-lcs (>= 1.2.0, < 2.0)
203
+ rspec-support (~> 3.8.0)
204
+ rspec-instafail (1.0.0)
205
+ rspec
206
+ rspec-mocks (3.8.0)
207
+ diff-lcs (>= 1.2.0, < 2.0)
208
+ rspec-support (~> 3.8.0)
209
+ rspec-rails (3.8.2)
210
+ actionpack (>= 3.0)
211
+ activesupport (>= 3.0)
212
+ railties (>= 3.0)
213
+ rspec-core (~> 3.8.0)
214
+ rspec-expectations (~> 3.8.0)
215
+ rspec-mocks (~> 3.8.0)
216
+ rspec-support (~> 3.8.0)
217
+ rspec-retry (0.6.1)
218
+ rspec-core (> 3.3)
219
+ rspec-support (3.8.0)
220
+ rubocop (0.64.0)
221
+ jaro_winkler (~> 1.5.1)
222
+ parallel (~> 1.10)
223
+ parser (>= 2.5, != 2.5.1.1)
224
+ powerpack (~> 0.1)
225
+ rainbow (>= 2.2.2, < 4.0)
226
+ ruby-progressbar (~> 1.7)
227
+ unicode-display_width (~> 1.4.0)
228
+ ruby-progressbar (1.10.0)
229
+ rubyzip (1.2.2)
230
+ selenium-webdriver (3.141.0)
231
+ childprocess (~> 0.5)
232
+ rubyzip (~> 1.2, >= 1.2.2)
233
+ sprockets (3.7.2)
234
+ concurrent-ruby (~> 1.0)
235
+ rack (> 1, < 3)
236
+ sprockets-rails (3.2.1)
237
+ actionpack (>= 4.0)
238
+ activesupport (>= 4.0)
239
+ sprockets (>= 3.0.0)
240
+ sqlite3 (1.4.0)
241
+ thor (0.20.3)
242
+ thread_safe (0.3.6)
243
+ timecop (0.9.1)
244
+ treetop (1.6.10)
245
+ polyglot (~> 0.3)
246
+ tzinfo (1.2.5)
247
+ thread_safe (~> 0.1)
248
+ uglifier (4.1.20)
249
+ execjs (>= 0.3.0, < 3)
250
+ unicode-display_width (1.4.1)
251
+ webdrivers (3.9.4)
252
+ nokogiri (~> 1.6)
253
+ rubyzip (~> 1.0)
254
+ selenium-webdriver (~> 3.0)
255
+ websocket-driver (0.6.5)
256
+ websocket-extensions (>= 0.1.0)
257
+ websocket-extensions (0.1.3)
258
+ xpath (3.2.0)
259
+ nokogiri (~> 1.8)
260
+
261
+ PLATFORMS
262
+ ruby
263
+
264
+ DEPENDENCIES
265
+ capybara (~> 2.18.0)
266
+ connection_pool
267
+ daemons
268
+ database_cleaner
269
+ delayed_job_active_record
270
+ marty!
271
+ marty_rspec
272
+ mcfly
273
+ netzke (= 6.5.0.0)
274
+ pg
275
+ pry-byebug
276
+ pry-rails
277
+ rails (~> 5.1.4)
278
+ rails-controller-testing
279
+ rspec-instafail
280
+ rspec-rails
281
+ rspec-retry
282
+ rubocop
283
+ selenium-webdriver
284
+ sqlite3
285
+ timecop
286
+ webdrivers
287
+
288
+ BUNDLED WITH
289
+ 2.0.1
@@ -98,9 +98,6 @@ module Marty; class DataGridView < McflyGridPanel
98
98
  :lenient,
99
99
  :data_type,
100
100
  :constraint,
101
- :perm_view,
102
- :perm_edit_data,
103
- :perm_edit_all,
104
101
  :created_dt,
105
102
  ]
106
103
 
@@ -110,19 +107,6 @@ module Marty; class DataGridView < McflyGridPanel
110
107
  c.multi_select = false
111
108
  end
112
109
 
113
- def set_perms(dg, data)
114
- permstrs = %w[perm_view perm_edit_data perm_edit_all]
115
- view, edit_data, edit_all = data.values_at(*permstrs).map do |plist|
116
- Marty::RoleType.from_nice_names(plist)
117
- end
118
- dg.permissions = {
119
- view: view.present? ? view : [],
120
- edit_data: edit_data.present? ? edit_data : [],
121
- edit_all: edit_all.present? ? edit_all : [],
122
- }
123
- dg.save!
124
- end
125
-
126
110
  endpoint :add_window__add_form__submit do |params|
127
111
  data = ActiveSupport::JSON.decode(params[:data])
128
112
 
@@ -130,12 +114,11 @@ module Marty; class DataGridView < McflyGridPanel
130
114
  !config[:permissions][:create]
131
115
 
132
116
  begin
133
- dg = DataGrid.create_from_import(data['name'], data['export'])
134
- set_perms(dg, data)
117
+ DataGrid.create_from_import(data['name'], data['export'])
135
118
  client.success = true
136
119
  client.netzke_on_submit_success
137
- rescue StandardError => e
138
- client.netzke_notify(e.to_s)
120
+ rescue StandardError => exc
121
+ client.netzke_notify(exc.to_s)
139
122
  end
140
123
  end
141
124
 
@@ -146,11 +129,10 @@ module Marty; class DataGridView < McflyGridPanel
146
129
 
147
130
  begin
148
131
  dg.update_from_import(data['name'], data['export'])
149
- set_perms(dg, data)
150
132
  client.success = true
151
133
  client.netzke_on_submit_success
152
- rescue StandardError => e
153
- client.netzke_notify(e.to_s)
134
+ rescue StandardError => exc
135
+ client.netzke_notify(exc.to_s)
154
136
  end
155
137
  end
156
138
 
@@ -186,8 +168,14 @@ module Marty; class DataGridView < McflyGridPanel
186
168
  client.netzke_client_show_grid maxcount, res, 'Data Grid'
187
169
  end
188
170
 
189
- def self.get_edit_permission(_permissions)
190
- 'edit_all'
171
+ # placeholders for grid editing permission logic.
172
+ # for now, this allows the rspec to control the permission
173
+ def self.get_edit_edit_permission
174
+ Marty::Config['grid_edit_edit_perm'] || 'edit_all'
175
+ end
176
+
177
+ def self.get_edit_save_permission
178
+ Marty::Config['grid_edit_save_perm'] || 'edit_all'
191
179
  end
192
180
 
193
181
  endpoint :edit_grid do |params|
@@ -205,21 +193,9 @@ module Marty; class DataGridView < McflyGridPanel
205
193
  vdim = md.map { |m| m['dir'] == 'v' && m['attr'] }.select { |v| v }
206
194
  hdim_en = hdim.map { |d| I18n.t('attributes.' + d, default: d) }
207
195
  vdim_en = vdim.map { |d| I18n.t('attributes.' + d, default: d) }
208
- perm = self.class.get_edit_permission(dg.permissions)
209
- # should never happen
210
- return client.netzke_notify('No permission to edit/view grid.') unless perm
211
-
212
- doing = case perm
213
- when 'view'
214
- 'Viewing'
215
- when 'edit_all'
216
- 'Editing (all)'
217
- when 'edit_data'
218
- 'Editing (data only)'
219
- end
220
- name = "#{doing} Data Grid '#{dg.name}'"
221
-
222
- client.edit_grid(record_id, hdim_en, vdim_en, res, name, perm)
196
+ name = "Editing Data Grid '#{dg.name}'"
197
+ permission = Marty::DataGridView.get_edit_edit_permission
198
+ client.edit_grid(record_id, hdim_en, vdim_en, res, name, permission)
223
199
  end
224
200
 
225
201
  endpoint :save_grid do |params|
@@ -237,36 +213,10 @@ module Marty; class DataGridView < McflyGridPanel
237
213
  def default_form_items
238
214
  [
239
215
  :name,
240
- :perm_view, :perm_edit_data, :perm_edit_all,
241
216
  textarea_field(:export, height: 300, hide_label: true),
242
217
  ]
243
218
  end
244
219
 
245
- ['view', 'edit_data', 'edit_all'].each do |p|
246
- s = ('perm_' + p).to_s
247
- attribute s do |c|
248
- c.width = 100
249
- c.flex = 1
250
- c.label = I18n.t("data_grid_view_perms.#{s}")
251
- c.type = :string
252
- c.getter = lambda do |r|
253
- Marty::RoleType.to_nice_names(r.permissions[p].sort)
254
- end
255
- store = Marty::RoleType.to_nice_names(::Marty::RoleType.get_all.sort.map)
256
-
257
- # edit does not work without this dummy setter
258
- c.setter = ->(r, v) {}
259
-
260
- c.editor_config = {
261
- multi_select: true,
262
- empty_text: I18n.t('user_grid.select_roles'),
263
- store: store,
264
- type: :string,
265
- xtype: :combo,
266
- }
267
- end
268
- end
269
-
270
220
  component :edit_window do |c|
271
221
  super(c)
272
222
  c.width = 700
@@ -278,11 +228,11 @@ module Marty; class DataGridView < McflyGridPanel
278
228
  end
279
229
 
280
230
  attribute :name do |c|
281
- c.width = 400
231
+ c.width = 120
282
232
  end
283
233
 
284
234
  attribute :constraint do |c|
285
- c.width = 150
235
+ c.width = 100
286
236
  end
287
237
 
288
238
  attribute :hcols do |c|