marty 3.1.0 → 4.0.0.rc2

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