mrpin-sdk 1.0.16 → 1.0.17

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9f5e38ee34a377abb70cef1ffea93db075a0105e
4
- data.tar.gz: e7b0b748aee38d6bf8c091d2f6e0ba6d4bc2b046
3
+ metadata.gz: b5aa20e4453caded89dc21f25559f63f651c5274
4
+ data.tar.gz: 193c2ecfbbb2781b1a765a47862ea53a9ea9b607
5
5
  SHA512:
6
- metadata.gz: 09c752785d7c267e6aeb794be7b963cae20f9617bb85316159fc77ce77eca2e7d08287665c2b3ea60a3e195b7abb6a74c136a3ada602f3879b6b36175b55f4e9
7
- data.tar.gz: 9ec1983dec85f6ee9ed89a3678a0a9745a231c2b3fb4bc0faf023bf2f6a093f0b4f27e8b679509505a4d7b00dd8c37f39f23fbb092025820ac7b2be4cfe892c7
6
+ metadata.gz: 464ca96876a91dddb8fc4ca2a31d8029f1da33c156dca2eae8e9532f6f764eca634dd08e316fa13b4960b8da5fa604d02418f00315bc0ad9196315fc1ef14a2a
7
+ data.tar.gz: 0618302415d8b12db41ac54589550bb769d9942de0a4d58937e9fd9df7a2b013d2afb44192b679fae9b643b8d6596f008bae7320160b6d8176584155f508a978
@@ -0,0 +1,209 @@
1
+ ### More at https://github.com/sferik/rails_admin/wiki/Base-configuration
2
+ class RailsAdminConfiguratorBase
3
+
4
+ #
5
+ # properties
6
+ #
7
+
8
+ attr_accessor :models_order_first
9
+ attr_accessor :models_order_last
10
+
11
+ #
12
+ # methods
13
+ #
14
+
15
+ public
16
+ def initialize
17
+ @models_names = []
18
+ @models_names_sorted = []
19
+
20
+ @models_order_first = []
21
+ @models_order_middle = []
22
+ @models_order_last = []
23
+
24
+ @models_groups = []
25
+
26
+ @config = nil
27
+ end
28
+
29
+ public
30
+ def add_models_names(items)
31
+ @models_names += items
32
+
33
+ nil
34
+ end
35
+
36
+ public
37
+ def configure
38
+ RailsAdmin.config do |config|
39
+ @config = config
40
+
41
+ @config.included_models += @models_names
42
+
43
+ init_model_groups
44
+
45
+ configure_auth
46
+ configure_actions
47
+ configure_models
48
+ configure_view
49
+ end
50
+
51
+ nil
52
+ end
53
+
54
+ private
55
+ def init_model_groups
56
+ # calc models order
57
+ @config.included_models.each do |model_name|
58
+ model_class = get_class_by_name(model_name)
59
+
60
+ group_name = get_group_name(model_class)
61
+
62
+ @models_groups << group_name
63
+ end
64
+
65
+ @models_groups.uniq!
66
+
67
+ @models_order_middle = @models_groups - @models_order_first - @models_order_last
68
+
69
+ @models_order_middle.sort!
70
+
71
+ @models_names_sorted = @models_order_first + @models_order_middle + @models_order_last
72
+
73
+ nil
74
+ end
75
+
76
+ private
77
+ def configure_auth
78
+ # == Devise ==
79
+ @config.authenticate_with do
80
+ warden.authenticate! scope: :admin_user
81
+ end
82
+
83
+ @config.current_user_method(&:current_admin_user)
84
+
85
+ nil
86
+ end
87
+
88
+ private
89
+ def configure_actions
90
+ @config.actions do
91
+ dashboard do
92
+ statistics false
93
+ end
94
+
95
+ index
96
+ new
97
+ # export
98
+ # history_show
99
+ bulk_delete
100
+ show
101
+ edit
102
+ delete
103
+ show_in_app
104
+ end
105
+
106
+ nil
107
+ end
108
+
109
+ private
110
+ def configure_models
111
+ # setup models
112
+ @config.included_models.each do |model|
113
+ model_class = get_class_by_name(model)
114
+ model_class.init_scopes if model_class.respond_to?(:init_scopes)
115
+
116
+
117
+ model_fields = model_class.attribute_names
118
+ model_relations = model_class.relations.keys
119
+
120
+ fields_for_list = model_fields + model_relations
121
+ fields_for_edit = model_fields
122
+ fields_for_show = model_fields + model_relations
123
+
124
+ configure_model(model_class, fields_for_list, fields_for_edit, fields_for_show)
125
+ end
126
+
127
+ nil
128
+ end
129
+
130
+ private
131
+ def configure_view
132
+ @config.show_gravatar = false
133
+ @config.total_columns_width = 1000
134
+ @config.default_items_per_page = 25
135
+ @config.compact_show_view = false
136
+
137
+ nil
138
+ end
139
+
140
+ private
141
+ def configure_model(model_class, fields_for_list, fields_for_edit, fields_for_show)
142
+ models_names_sorted = @models_names_sorted
143
+ model_group = get_group_name(model_class)
144
+
145
+ configurator = self
146
+
147
+ @config.model(model_class.to_s) do
148
+
149
+ if model_class.respond_to?(:need_show_for_admin_user?)
150
+ visible { model_class.need_show_for_admin_user?(bindings[:controller].current_admin_user) }
151
+ end
152
+
153
+ navigation_label(model_group)
154
+ weight models_names_sorted.index(model_group) || 0
155
+
156
+ #configure list
157
+ list do
158
+ model_class.filters_for_admin_list(self) if model_class.respond_to?(:filters_for_admin_list)
159
+ model_class.sort_by_for_admin_list(self) if model_class.respond_to?(:sort_by_for_admin_list)
160
+
161
+ configurator.try_configure_admin_for(self, model_class, fields_for_list, :configure_admin_list)
162
+
163
+ #init scopes
164
+ scopes_list = model_class.scopes.keys.dup
165
+
166
+ scopes_list.delete(:page)
167
+
168
+ if scopes_list.size > 0
169
+ #add scopes 'all' at first tab
170
+ scopes_list = [nil] + scopes_list
171
+
172
+ scopes(scopes_list)
173
+ end
174
+ end
175
+
176
+ edit { configurator.try_configure_admin_for(self, model_class, fields_for_edit, :configure_admin_edit) }
177
+ show { configurator.try_configure_admin_for(self, model_class, fields_for_show, :configure_admin_show) }
178
+
179
+ end
180
+ end
181
+
182
+ private
183
+ def get_group_name(model_class)
184
+ result = ''
185
+
186
+ if model_class.methods.include?(:admin_group)
187
+ result = model_class.admin_group
188
+ else
189
+ result = model_class.to_s.underscore.split('_').first
190
+ end
191
+
192
+ result
193
+ end
194
+
195
+ public
196
+ def try_configure_admin_for(context, model_class, fields, method_name)
197
+ return unless model_class.respond_to?(method_name)
198
+
199
+ fields.each do |model_field|
200
+
201
+ field_name = model_field.to_sym
202
+
203
+ model_class.send(method_name, context, field_name)
204
+ end
205
+
206
+ nil
207
+ end
208
+
209
+ end
@@ -45,4 +45,13 @@ class AppConfigBase < ModelBase
45
45
  # validates
46
46
  #
47
47
 
48
+ private
49
+ def check_uniq
50
+ if AppConfigBase.where(:id.ne => self.id).exists?
51
+ self.errors.add(:base, 'app config already exist')
52
+ end
53
+ end
54
+
55
+ validate :check_uniq
56
+
48
57
  end
@@ -33,6 +33,10 @@ class AppInfoBase
33
33
  end
34
34
 
35
35
  case @state
36
+ when EAppState::EAS_INIT_CONFIG
37
+ init_config
38
+ when EAppState::EAS_INIT_MANAGERS
39
+ init_managers
36
40
  when EAppState::EAS_POST_INIT
37
41
  call_in_all_managers_with_benchmark('[POST_INIT]', 'post_init')
38
42
  when EAppState::EAS_LOAD_INIT_DATA
@@ -186,8 +190,10 @@ class AppInfoBase
186
190
  @aws_uploader = AWSUploader.new
187
191
 
188
192
  begin
189
- init_config
190
- init_managers
193
+
194
+ self.state = EAppState::EAS_INIT_CONFIG
195
+
196
+ self.state = EAppState::EAS_INIT_MANAGERS
191
197
  rescue Exception => e
192
198
  on_server_error(e.to_s, e)
193
199
 
@@ -214,15 +220,13 @@ class AppInfoBase
214
220
 
215
221
  protected
216
222
  def init_config
217
- config = AppConfigBase.first
223
+ @config = @config || AppConfigBase.first
218
224
 
219
- if config.nil?
225
+ if @config.nil?
220
226
  @logger.warn('config is empty')
221
227
  return
222
228
  end
223
229
 
224
- @config = config
225
-
226
230
  if @config.server_on_maintenance
227
231
  self.state = EAppState::EAS_MAINTENANCE
228
232
  end
@@ -232,8 +236,6 @@ class AppInfoBase
232
236
 
233
237
  protected
234
238
  def init_managers
235
- self.state = EAppState::EAS_INIT_MANAGERS
236
-
237
239
  @managers_list = []
238
240
  @managers_with_json_list = []
239
241
  #key - build type, value - manager_bundle
@@ -1,5 +1,6 @@
1
1
  class EAppState < EnumBase
2
2
 
3
+ EAS_INIT_CONFIG = 'init_config'
3
4
  EAS_INIT_MANAGERS = 'init_managers'
4
5
  EAS_POST_INIT = 'post_init'
5
6
  EAS_LOAD_INIT_DATA = 'load_init_data'
@@ -58,7 +58,6 @@ class BundleBase < ModelBase
58
58
  #
59
59
 
60
60
  after_validation :update_version
61
- after_save :callback_after_save
62
61
 
63
62
  #
64
63
  # db
@@ -133,20 +132,6 @@ class BundleBase < ModelBase
133
132
  self.version += 1
134
133
  end
135
134
 
136
- public
137
- def callback_after_save
138
- return unless errors.empty?
139
-
140
- return unless self.changed?
141
-
142
- return unless Rails.env.development?
143
-
144
- manager_bundles = AppInfo.instance.managers_bundles_map[self.build_type]
145
-
146
- manager_bundles.invalidate_cache
147
- manager_bundles.generate_client_json
148
- end
149
-
150
135
  private
151
136
  def check_uniq
152
137
  if BundleBase.where(build_type: self.build_type, name: self.name, :id.ne => self.id).exists?
@@ -1,20 +1,23 @@
1
1
  class ManagerRemoteHttp
2
2
  METHODS = [:post, :get]
3
3
 
4
- DEFAULT_READ_TIMEOUT = 10
5
- DEFAULT_OPEN_TIMEOUT = 10
6
- DEFAULT_REDIRECT_LIMIT = 0
4
+ DEFAULT_TIMEOUT_READ = 10
5
+ DEFAULT_TIMEOUT_OPEN = 10
6
+ DEFAULT_REDIRECT_LIMIT = 10
7
7
 
8
- def initialize(options = {})
8
+ #
9
+ # methods
10
+ #
9
11
 
12
+ def initialize(options = {})
10
13
  url = options.assert_property!(:url)
11
14
 
12
15
  faraday_options =
13
16
  {
14
17
  request:
15
18
  {
16
- timeout: options[:read_timeout] || DEFAULT_READ_TIMEOUT,
17
- open_timeout: options[:open_timeout] || DEFAULT_OPEN_TIMEOUT
19
+ timeout: options[:read_timeout] || DEFAULT_TIMEOUT_READ,
20
+ open_timeout: options[:open_timeout] || DEFAULT_TIMEOUT_OPEN
18
21
  }
19
22
  }
20
23
 
@@ -50,19 +53,22 @@ class ManagerRemoteHttp
50
53
 
51
54
  begin
52
55
 
53
- response = @connection.send method, controller, params
54
-
55
- result = if response.success?
56
- {
57
- status: EResponseType::ERT_OK,
58
- response: response.body
59
- }
60
- else
61
- {
62
- status: EResponseType::ERT_ERROR,
63
- response: [response.status, response.body].join(':')
64
- }
65
- end
56
+ response = @connection.send(method, controller, params)
57
+
58
+ if response.success?
59
+ result =
60
+ {
61
+ status: EResponseType::ERT_OK,
62
+ response: response.body
63
+ }
64
+ else
65
+ result =
66
+ {
67
+ status: EResponseType::ERT_ERROR,
68
+ code: response.status,
69
+ response: response.body
70
+ }
71
+ end
66
72
 
67
73
  rescue Exception => e
68
74
  result = {status: EResponseType::ERT_ERROR, response: e.message}
@@ -88,14 +94,22 @@ class ManagerRemoteHttp
88
94
  req.body = params.to_json
89
95
  end
90
96
 
91
- result = if response.success?
92
- JSON.parse response.body, {symbolize_names: true}
93
- else
94
- {
95
- status: EResponseType::ERT_ERROR,
96
- response: [response.status, response.body].join(':')
97
- }
98
- end
97
+ if response.success?
98
+ response_json = JSON.parse(response.body, {symbolize_names: true})
99
+
100
+ result =
101
+ {
102
+ status: response.body,
103
+ response: response_json
104
+ }
105
+ else
106
+ result =
107
+ {
108
+ status: EResponseType::ERT_ERROR,
109
+ code: response.status,
110
+ response: response.body
111
+ }
112
+ end
99
113
 
100
114
  rescue Exception => e
101
115
  result = {status: EResponseType::ERT_ERROR, response: e.message}
data/lib/mrpin/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Mrpin
2
- VERSION = '1.0.16'
2
+ VERSION = '1.0.17'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mrpin-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.16
4
+ version: 1.0.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gregory
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2017-03-13 00:00:00.000000000 Z
14
+ date: 2017-03-21 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: bundler
@@ -336,6 +336,7 @@ files:
336
336
  - lib/mrpin/config/initializers/01_devise.rb
337
337
  - lib/mrpin/config/initializers/02_mongo.rb
338
338
  - lib/mrpin/config/initializers/03_i18n.rb
339
+ - lib/mrpin/config/initializers/04_rails_admin_configurator.rb
339
340
  - lib/mrpin/config/locales/rails_admin.en.yml
340
341
  - lib/mrpin/controllers/application_controller_base.rb
341
342
  - lib/mrpin/controllers/system_controller_base.rb