motor-admin 0.2.7 → 0.2.11

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
  SHA256:
3
- metadata.gz: df47d07159a23d82ea4c5b2806ba9458acf28716d68a8a0b69a0c3788a0865f5
4
- data.tar.gz: 112179163150a05ed240128622a77a07c6779281645b212e42aa187bd25d7b73
3
+ metadata.gz: 3a5b90096b26ecbc08a8db9eab674f5eb73968cbd3e67fef43c476142f75543e
4
+ data.tar.gz: fba671589698de0216d59280c9935f940705d12c837808beed32e5de64dec443
5
5
  SHA512:
6
- metadata.gz: ae3708b9bbe101d3c137c11990941895be2ed7ed9a7f531c4d39f7adff07849c51d552794953a3a1393516bf0d15383f03c05f5a4fa8c35ff02ccf230319a057
7
- data.tar.gz: 26538902eb92d66322018d4b6b52a2e92a42f6fdad84445b5dfda56e9374e2c690d253d3d21a2a13e9143737b164bd6da4c67b0a5f2bb39a8c8bbcd28aa42007
6
+ metadata.gz: 64046834ea3379dc2e79b1261b985fff168c5c52d19cd2540b6e951d0d669816a78fa21ac544a9cf4b82f81425f73917db39430e42b04d12db66279a3c159a62
7
+ data.tar.gz: 22c5025d749429478eb6f2d2d74a2264cbe5153a42b32b6cb2986ed1d694714cfce007a8751cea224748e7521ee5efe40f1ff06531d185e475b8e2a0fe58dce6
@@ -18,6 +18,16 @@ module Motor
18
18
 
19
19
  render json: { errors: [e.message] }, status: :internal_server_error
20
20
  end
21
+
22
+ rescue_from CanCan::AccessDenied do |e|
23
+ Rails.logger.error(e)
24
+
25
+ if params[:action].in?(%w[create update destroy])
26
+ render json: { errors: [I18n.t('motor.not_authorized_to_perform_action')] }, status: :forbidden
27
+ else
28
+ render json: { errors: [e.message] }, status: :forbidden
29
+ end
30
+ end
21
31
  end
22
32
  end
23
33
  end
@@ -2,13 +2,19 @@
2
2
 
3
3
  module Motor
4
4
  class AlertsMailer < ApplicationMailer
5
+ SenderAddressNotSet = Class.new(StandardError)
6
+ SENDER_NOT_SET_ERROR_MESSAGE =
7
+ 'Please specify your sender address via MOTOR_ALERTS_FROM_ADDRESS environment variable'
8
+
5
9
  def alert_email(alert)
6
10
  @alert = alert
7
11
  @query_result = Queries::RunQuery.call(alert.query)
8
12
 
9
13
  return if @alert.preferences[:send_empty].blank? && @query_result.data.blank?
10
14
 
11
- attachments["#{alert.name.presence || 'data'}.csv"] = generate_csv(@query_result)
15
+ assign_attachment(@alert, @query_result)
16
+
17
+ raise SenderAddressNotSet, SENDER_NOT_SET_ERROR_MESSAGE unless from_address
12
18
 
13
19
  mail(
14
20
  from: from_address,
@@ -19,6 +25,10 @@ module Motor
19
25
 
20
26
  private
21
27
 
28
+ def assign_attachment(alert, query_result)
29
+ attachments["#{alert.name.presence || 'data'}.csv"] = generate_csv(query_result)
30
+ end
31
+
22
32
  def generate_csv(_query_result)
23
33
  rows = [@query_result.columns.pluck(:name)] + @query_result.data
24
34
 
@@ -32,7 +42,9 @@ module Motor
32
42
  from ||= mailer_config_from_address
33
43
  from ||= "reports@#{ENV['HOST'].delete_prefix('www.')}" if ENV['HOST'].present?
34
44
 
35
- from || 'reports@example.com'
45
+ from ||= 'reports@example.com' if Rails.env.development?
46
+
47
+ from
36
48
  end
37
49
 
38
50
  def application_mailer_default_from
@@ -264,3 +264,5 @@ en:
264
264
  add_database: Add Database
265
265
  audio: Audio
266
266
  video: Video
267
+ display_column: Display column
268
+ not_authorized_to_perform_action: You are not authorized to perform this action.
@@ -264,6 +264,8 @@ es:
264
264
  add_database: Añadir base de datos
265
265
  audio: Audio
266
266
  video: Video
267
+ display_column: Columna de visualización
268
+ not_authorized_to_perform_action: No está autorizado a realizar esta acción.
267
269
  i:
268
270
  locale: es
269
271
  select:
@@ -260,6 +260,8 @@ pt:
260
260
  write_only: "Somente gravação"
261
261
  audio: Áudio
262
262
  video: Vídeo
263
+ display_column: Coluna de exibição
264
+ not_authorized_to_perform_action: Não está autorizado a realizar esta acção.
263
265
  i:
264
266
  locale: pt
265
267
  select:
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ if Rails::VERSION::MAJOR == 7
4
+ module ArLazyPreload
5
+ module Relation
6
+ def preload_associations(records)
7
+ preload = preload_values
8
+ preload += includes_values unless eager_loading?
9
+ scope = strict_loading_value ? ActiveRecord::Relation::StrictLoadingScope : nil
10
+ preload.each do |associations|
11
+ preloader_associations = ActiveRecord::Associations::Preloader.new(records: records,
12
+ associations: associations,
13
+ scope: scope).call
14
+
15
+ preloader_associations.each do |preloader_association|
16
+ handle_preloaded_records(preloader_association.preloaded_records)
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -23,3 +23,4 @@ require_relative './active_record_utils/active_storage_blob_patch'
23
23
  require_relative './active_record_utils/active_record_filter_patch'
24
24
  require_relative './active_record_utils/active_record_connection_column_patch'
25
25
  require_relative './active_record_utils/action_text_attribute_patch'
26
+ require_relative './active_record_utils/ar_lazy_preload_patch'
@@ -45,9 +45,7 @@ module Motor
45
45
 
46
46
  def select_columns(columns)
47
47
  selected_columns =
48
- columns.select do |name|
49
- BuildSchema::FindDisplayColumn::DISPLAY_NAME_REGEXP.match?(name)
50
- end.presence
48
+ columns.grep(BuildSchema::FindDisplayColumn::DISPLAY_NAME_REGEXP).presence
51
49
 
52
50
  selected_columns ||= columns.first(SELECT_COLUMNS_AMOUNT)
53
51
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Motor
4
4
  module Resources
5
- RESOURCE_ATTRS = %w[display_name icon custom_sql visible].freeze
5
+ RESOURCE_ATTRS = %w[display_name display_column icon custom_sql visible].freeze
6
6
  COLUMN_ATTRS = %w[name display_name column_type access_type default_value reference virtual format].freeze
7
7
  ASSOCIATION_ATTRS = %w[name display_name model_name icon visible foreign_key primary_key options virtual
8
8
  polymorphic slug].freeze
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.2.7'
4
+ VERSION = '0.2.11'
5
5
  end
@@ -2601,9 +2601,9 @@
2601
2601
  "icons/zoom-out.svg.gz": "icons/zoom-out.svg.gz",
2602
2602
  "icons/zoom-question.svg": "icons/zoom-question.svg",
2603
2603
  "icons/zoom-question.svg.gz": "icons/zoom-question.svg.gz",
2604
- "main-32da50c51ef9fcddf634.css.gz": "main-32da50c51ef9fcddf634.css.gz",
2605
- "main-32da50c51ef9fcddf634.js.LICENSE.txt": "main-32da50c51ef9fcddf634.js.LICENSE.txt",
2606
- "main-32da50c51ef9fcddf634.js.gz": "main-32da50c51ef9fcddf634.js.gz",
2607
- "main.css": "main-32da50c51ef9fcddf634.css",
2608
- "main.js": "main-32da50c51ef9fcddf634.js"
2604
+ "main-192e078f9e813b1ffe93.css.gz": "main-192e078f9e813b1ffe93.css.gz",
2605
+ "main-192e078f9e813b1ffe93.js.LICENSE.txt": "main-192e078f9e813b1ffe93.js.LICENSE.txt",
2606
+ "main-192e078f9e813b1ffe93.js.gz": "main-192e078f9e813b1ffe93.js.gz",
2607
+ "main.css": "main-192e078f9e813b1ffe93.css",
2608
+ "main.js": "main-192e078f9e813b1ffe93.js"
2609
2609
  }
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.2.7
4
+ version: 0.2.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pete Matsyburka
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-10-12 00:00:00.000000000 Z
11
+ date: 2021-10-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord-filter
@@ -165,6 +165,7 @@ files:
165
165
  - lib/motor/active_record_utils/active_record_filter_patch.rb
166
166
  - lib/motor/active_record_utils/active_storage_blob_patch.rb
167
167
  - lib/motor/active_record_utils/active_storage_links_extension.rb
168
+ - lib/motor/active_record_utils/ar_lazy_preload_patch.rb
168
169
  - lib/motor/active_record_utils/defined_scopes_extension.rb
169
170
  - lib/motor/active_record_utils/fetch_methods.rb
170
171
  - lib/motor/active_record_utils/types.rb
@@ -1523,8 +1524,8 @@ files:
1523
1524
  - ui/dist/icons/zoom-money.svg.gz
1524
1525
  - ui/dist/icons/zoom-out.svg.gz
1525
1526
  - ui/dist/icons/zoom-question.svg.gz
1526
- - ui/dist/main-32da50c51ef9fcddf634.css.gz
1527
- - ui/dist/main-32da50c51ef9fcddf634.js.gz
1527
+ - ui/dist/main-192e078f9e813b1ffe93.css.gz
1528
+ - ui/dist/main-192e078f9e813b1ffe93.js.gz
1528
1529
  - ui/dist/manifest.json
1529
1530
  homepage:
1530
1531
  licenses: