motor-admin 0.4.21 → 0.4.23

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
  SHA256:
3
- metadata.gz: 41dcc579edfa90d944799b97938fff85baf55fa1a8ccab574767666b54312696
4
- data.tar.gz: a5206810014e3dde9824f4bf57ffb98516b8beec3e2b1d8066042b0fee9a1cfa
3
+ metadata.gz: fa8f8bf8e08d5de91571f6ccd67b723a0f5fc131f8447de20e71087879f9eb5c
4
+ data.tar.gz: 80d865f7f20b76f1a15dad48e241de65f174a24bbb35fcd70a0a7c93d8c0bbbc
5
5
  SHA512:
6
- metadata.gz: 552ac69045c32753f632b90c7f03b4bee1132d5aee0a5b0fecce574faf712fa97665fd20b19ff0a8592a093249f0df56a07a51025dfae28829b8f0f26f6c6d1d
7
- data.tar.gz: 0b644839ddd4c09a8f2efae29c70293a05bda6b1c48fe460bf16c8eabf711dad7a24c24f70566df4b99fead036dd2e7963d89affdeac645baec3614b4fd043fa
6
+ metadata.gz: d5f9f50c225d0a12840dbbc2f65e0c99ba5f147cdf8cbc9e5f8f1f9c2aaf253eb11562fdc6d23ba04904d22bf51adc857b626b06530330a381e65fb6cbab0d40
7
+ data.tar.gz: 1b2ffb087aa375a5e57355d2b332b1efbc5dc04e982e3f8bdfd48c9b3ea88282654b8c77590121fa594ddb332b8dca49bf58356d6a3328523ff2426267178193
data/README.md CHANGED
@@ -39,6 +39,7 @@ $ rails motor:install && rake db:migrate
39
39
  * [Dashboards](#dashboards)
40
40
  * [Email alerts](#email-alerts)
41
41
  * [Authorization](#authorization)
42
+ * [Active Storage](#active-storage)
42
43
  * [Intelligence search](#intelligence-search)
43
44
  * [I18n](#i18n)
44
45
  * [Optimized for mobile](#optimized-for-mobile)
@@ -134,6 +135,16 @@ Intelligence search can be opened via the top right corner button or using <kbd>
134
135
 
135
136
  Motor Admin allows to set row-level and column-level permissions via [cancan](https://github.com/CanCanCommunity/cancancan) gem. Admin UI permissions should be defined in `app/models/motor/ability.rb` file in `Motor::Ability` class. See [Motor Admin guide](https://github.com/motor-admin/motor-admin-rails/blob/master/guides/defining_permissions.md) and [CanCan documentation](https://github.com/CanCanCommunity/cancancan/blob/develop/docs/Defining-Abilities.md) to learn how to define user permissions.
136
137
 
138
+ ### Active Storage
139
+
140
+ Motor Admin is configured by default to perform uploads to the provider you configured in your `storage.yml` file for Active Storage. If you are using large uploads within Motor Admin you will need to enable direct uploads by setting the following ENV variable.
141
+
142
+ ```sh
143
+ MOTOR_ACTIVE_STORAGE_DIRECT_UPLOADS_ENABLED=true
144
+ ```
145
+
146
+ _Note: At the moment, this will enable direct uploads globally_
147
+
137
148
  ### I18n
138
149
 
139
150
  Motor Admin can use Rails ActiveRecord i18n keys to render resource translations:
@@ -16,6 +16,7 @@ module Motor
16
16
 
17
17
  private
18
18
 
19
+ # rubocop:disable Metrics/AbcSize
19
20
  def respond_with_result
20
21
  response = Motor::ApiConfigs.run(find_or_initialize_api_config,
21
22
  method: request_params[:method],
@@ -23,12 +24,16 @@ module Motor
23
24
  body: request_params[:body],
24
25
  params: request_params[:params],
25
26
  headers: { 'Authorization' => "Bearer #{current_user_jwt}" })
27
+ response.to_hash.each do |key, (value)|
28
+ next if key.casecmp('transfer-encoding').zero?
26
29
 
27
- response.to_hash.each { |key, (value)| headers[key] = value }
30
+ headers[key] = value
31
+ end
28
32
 
29
33
  self.response_body = response.body
30
34
  self.status = response.code.to_i
31
35
  end
36
+ # rubocop:enable Metrics/AbcSize
32
37
 
33
38
  def find_or_initialize_api_config
34
39
  Motor::ApiConfig.find_by(name: request_params[:api_config_name]) ||
@@ -17,8 +17,11 @@ module Motor
17
17
  query: request_params[:query],
18
18
  variables: request_params[:variables],
19
19
  headers: { 'Authorization' => "Bearer #{current_user_jwt}" })
20
+ response.to_hash.each do |key, (value)|
21
+ next if key.casecmp('transfer-encoding').zero?
20
22
 
21
- response.to_hash.each { |key, (value)| headers[key] = value }
23
+ headers[key] = value
24
+ end
22
25
 
23
26
  self.response_body = response.body
24
27
  self.status = response.code.to_i
@@ -12,7 +12,12 @@ module Motor
12
12
  has_many :tags, through: :taggable_tags, class_name: 'Motor::Tag'
13
13
 
14
14
  attribute :preferences, default: -> { ActiveSupport::HashWithIndifferentAccess.new }
15
- serialize :preferences, HashSerializer
15
+
16
+ if Rails.version.to_f >= 7.1
17
+ serialize :preferences, coder: HashSerializer
18
+ else
19
+ serialize :preferences, HashSerializer
20
+ end
16
21
 
17
22
  scope :active, -> { where(deleted_at: nil) }
18
23
  scope :enabled, -> { where(is_enabled: true) }
@@ -8,7 +8,12 @@ module Motor
8
8
  attribute :credentials, default: -> { ActiveSupport::HashWithIndifferentAccess.new }
9
9
 
10
10
  serialize :credentials, Motor::HashSerializer
11
- serialize :preferences, Motor::HashSerializer
11
+
12
+ if Rails.version.to_f >= 7.1
13
+ serialize :preferences, coder: Motor::HashSerializer
14
+ else
15
+ serialize :preferences, Motor::HashSerializer
16
+ end
12
17
 
13
18
  has_one :form, dependent: nil, foreign_key: :api_config_name, primary_key: :name, inverse_of: :api_config
14
19
 
@@ -4,6 +4,10 @@ module Motor
4
4
  class Audit < Audited::Audit
5
5
  self.table_name = 'motor_audits'
6
6
 
7
- serialize :audited_changes, HashSerializer
7
+ if Rails.version.to_f >= 7.1
8
+ serialize :audited_changes, coder: HashSerializer
9
+ else
10
+ serialize :audited_changes, HashSerializer
11
+ end
8
12
  end
9
13
  end
@@ -4,6 +4,10 @@ module Motor
4
4
  class Config < ::Motor::ApplicationRecord
5
5
  audited
6
6
 
7
- serialize :value, HashSerializer
7
+ if Rails.version.to_f >= 7.1
8
+ serialize :value, coder: HashSerializer
9
+ else
10
+ serialize :value, HashSerializer
11
+ end
8
12
  end
9
13
  end
@@ -10,7 +10,12 @@ module Motor
10
10
  has_many :tags, through: :taggable_tags, class_name: 'Motor::Tag'
11
11
 
12
12
  attribute :preferences, default: -> { ActiveSupport::HashWithIndifferentAccess.new }
13
- serialize :preferences, HashSerializer
13
+
14
+ if Rails.version.to_f >= 7.1
15
+ serialize :preferences, coder: HashSerializer
16
+ else
17
+ serialize :preferences, HashSerializer
18
+ end
14
19
 
15
20
  scope :active, -> { where(deleted_at: nil) }
16
21
 
@@ -11,7 +11,12 @@ module Motor
11
11
  has_many :tags, through: :taggable_tags, class_name: 'Motor::Tag'
12
12
 
13
13
  attribute :preferences, default: -> { ActiveSupport::HashWithIndifferentAccess.new }
14
- serialize :preferences, HashSerializer
14
+
15
+ if Rails.version.to_f >= 7.1
16
+ serialize :preferences, coder: HashSerializer
17
+ else
18
+ serialize :preferences, HashSerializer
19
+ end
15
20
 
16
21
  scope :active, -> { where(deleted_at: nil) }
17
22
  end
@@ -11,7 +11,12 @@ module Motor
11
11
  has_many :alerts, dependent: :destroy
12
12
 
13
13
  attribute :preferences, default: -> { ActiveSupport::HashWithIndifferentAccess.new }
14
- serialize :preferences, HashSerializer
14
+
15
+ if Rails.version.to_f >= 7.1
16
+ serialize :preferences, coder: HashSerializer
17
+ else
18
+ serialize :preferences, HashSerializer
19
+ end
15
20
 
16
21
  scope :active, -> { where(deleted_at: nil) }
17
22
 
@@ -5,6 +5,11 @@ module Motor
5
5
  audited
6
6
 
7
7
  attribute :preferences, default: -> { ActiveSupport::HashWithIndifferentAccess.new }
8
- serialize :preferences, HashSerializer
8
+
9
+ if Rails.version.to_f >= 7.1
10
+ serialize :preferences, coder: HashSerializer
11
+ else
12
+ serialize :preferences, HashSerializer
13
+ end
9
14
  end
10
15
  end
@@ -6,7 +6,7 @@ module Motor
6
6
  def next_migration_number(dirname)
7
7
  next_migration_number = current_migration_number(dirname) + 1
8
8
 
9
- if ::ActiveRecord::Base.timestamped_migrations
9
+ if ::ActiveRecord::Base.try(:timestamped_migrations) || ::ActiveRecord.try(:timestamped_migrations)
10
10
  [Time.now.utc.strftime('%Y%m%d%H%M%S'), format('%.14d', next_migration_number)].max
11
11
  else
12
12
  format('%.3d', next_migration_number)
data/lib/motor/admin.rb CHANGED
@@ -4,6 +4,8 @@ module Motor
4
4
  class Admin < ::Rails::Engine
5
5
  config.custom_html = ''
6
6
 
7
+ ActiveSupport.cache_format_version = Rails.version.to_f
8
+
7
9
  if !Motor.development? && Rails.env.development?
8
10
  config.eager_load_paths.delete(File.expand_path('../../app/controllers', __dir__))
9
11
  config.eager_load_paths.delete(File.expand_path('../../app/controllers/concerns', __dir__))
@@ -34,6 +34,7 @@ module Motor
34
34
  end
35
35
 
36
36
  # rubocop:disable Metrics/AbcSize
37
+ # rubocop:disable Metrics/MethodLength
37
38
  # @return [Hash]
38
39
  def build_data(cache_keys = {}, current_user = nil, current_ability = nil)
39
40
  configs_cache_key = cache_keys[:configs]
@@ -46,6 +47,7 @@ module Motor
46
47
  base_path: Motor::Admin.routes.url_helpers.motor_path,
47
48
  cable_path: Motor::Admin.routes.url_helpers.try(:motor_cable_path),
48
49
  admin_settings_path: Rails.application.routes.url_helpers.try(:admin_settings_general_path),
50
+ active_storage_direct_uploads_enabled: ENV['MOTOR_ACTIVE_STORAGE_DIRECT_UPLOADS_ENABLED'].present?,
49
51
  schema: Motor::BuildSchema.call(cache_keys, current_ability),
50
52
  header_links: header_links_data_hash(current_user, current_ability, configs_cache_key),
51
53
  homepage_layout: homepage_layout_data_hash(configs_cache_key),
@@ -59,6 +61,7 @@ module Motor
59
61
  forms: forms_data_hash(build_cache_key(cache_keys, :forms, current_user, current_ability), current_ability) }
60
62
  end
61
63
  # rubocop:enable Metrics/AbcSize
64
+ # rubocop:enable Metrics/MethodLength
62
65
 
63
66
  def i18n_data
64
67
  I18n.t('motor', default: I18n.t('motor', locale: :en))
data/lib/motor/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Motor
4
- VERSION = '0.4.21'
4
+ VERSION = '0.4.23'
5
5
  end
@@ -3964,9 +3964,9 @@
3964
3964
  "images/layers-2x.png": "images/layers-2x.png",
3965
3965
  "images/layers.png": "images/layers.png",
3966
3966
  "images/marker-icon.png": "images/marker-icon.png",
3967
- "main-3d067b5a5d0ea3475112.css.gz": "main-3d067b5a5d0ea3475112.css.gz",
3968
- "main-3d067b5a5d0ea3475112.js.LICENSE.txt": "main-3d067b5a5d0ea3475112.js.LICENSE.txt",
3969
- "main-3d067b5a5d0ea3475112.js.gz": "main-3d067b5a5d0ea3475112.js.gz",
3970
- "main.css": "main-3d067b5a5d0ea3475112.css",
3971
- "main.js": "main-3d067b5a5d0ea3475112.js"
3967
+ "main-3b866105d1b5846018e0.css.gz": "main-3b866105d1b5846018e0.css.gz",
3968
+ "main-3b866105d1b5846018e0.js.LICENSE.txt": "main-3b866105d1b5846018e0.js.LICENSE.txt",
3969
+ "main-3b866105d1b5846018e0.js.gz": "main-3b866105d1b5846018e0.js.gz",
3970
+ "main.css": "main-3b866105d1b5846018e0.css",
3971
+ "main.js": "main-3b866105d1b5846018e0.js"
3972
3972
  }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: motor-admin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.21
4
+ version: 0.4.23
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pete Matsyburka
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-09-09 00:00:00.000000000 Z
11
+ date: 2023-12-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ar_lazy_preload
@@ -2235,8 +2235,8 @@ files:
2235
2235
  - ui/dist/images/layers-2x.png
2236
2236
  - ui/dist/images/layers.png
2237
2237
  - ui/dist/images/marker-icon.png
2238
- - ui/dist/main-3d067b5a5d0ea3475112.css.gz
2239
- - ui/dist/main-3d067b5a5d0ea3475112.js.gz
2238
+ - ui/dist/main-3b866105d1b5846018e0.css.gz
2239
+ - ui/dist/main-3b866105d1b5846018e0.js.gz
2240
2240
  - ui/dist/manifest.json
2241
2241
  homepage:
2242
2242
  licenses: