mrpin-sdk 1.0.16 → 1.0.17

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.
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