motor-admin 0.2.6 → 0.2.10

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: 9b0f19398ae8e7e11b2d3599dc83707c69acce2ef4731b73a1b7a0c9e006c069
4
- data.tar.gz: 6c67d6492965989428dfab23a4b5315790ffb1408f572f2e9c38437385e53f60
3
+ metadata.gz: 5e7ce842fbd5202f73efe93edfea13a5391070ed46a44c4c7d15d9ed3ad68aed
4
+ data.tar.gz: cb7dee7ba4ca6b4542bf6d333eb04f2de1c4409a795d1530ac3c81e76cfb4dce
5
5
  SHA512:
6
- metadata.gz: e38ab5f4be4a8d340f2b2568b1cdfa586243ed895f6abdb39dc3509b14bb8d3556d6b0de22671d87ed3a6f11895eb29add8f10e542038b68975a2b89df6334cb
7
- data.tar.gz: a5800734dc28bd4f1e8e0e559bb5a948756f9270cfd1dc873e8a943021a498dd66dd354361abec776113564e5cc97f7afc9f1447c8e78c17c88da792eb165cf0
6
+ metadata.gz: 468b9e8e9a4adab3e1006796e87894ca73e339e3663e9e2a61337512e305e5e22df787a260f49604c10c14934c1022164efda71fc59619848ee9f655e065e421
7
+ data.tar.gz: c31e7faea409f3e78ea2f6840d2b3cdc8aa6ae82cbc831edee65b7220777503c52d745f7ce78a74b21f2caca147bb6a7f5f38b154b7b4409c8a67be529286fac
@@ -18,6 +18,12 @@ 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
+ render json: { errors: [e.message] }, status: :forbidden
26
+ end
21
27
  end
22
28
  end
23
29
  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,4 @@ en:
264
264
  add_database: Add Database
265
265
  audio: Audio
266
266
  video: Video
267
+ display_column: Display column
@@ -264,6 +264,7 @@ 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
267
268
  i:
268
269
  locale: es
269
270
  select:
@@ -260,6 +260,7 @@ pt:
260
260
  write_only: "Somente gravação"
261
261
  audio: Áudio
262
262
  video: Vídeo
263
+ display_column: Coluna de exibição
263
264
  i:
264
265
  locale: pt
265
266
  select:
@@ -16,6 +16,8 @@ if Rails::VERSION::MAJOR == 6
16
16
  end
17
17
 
18
18
  def build_filters(manager, alias_tracker)
19
+ return unless @filters
20
+
19
21
  where_clause = nil
20
22
 
21
23
  @filters.each do |filters|
@@ -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.6'
4
+ VERSION = '0.2.10'
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-9d527c31af98f3d09fea.css.gz": "main-9d527c31af98f3d09fea.css.gz",
2605
+ "main-9d527c31af98f3d09fea.js.LICENSE.txt": "main-9d527c31af98f3d09fea.js.LICENSE.txt",
2606
+ "main-9d527c31af98f3d09fea.js.gz": "main-9d527c31af98f3d09fea.js.gz",
2607
+ "main.css": "main-9d527c31af98f3d09fea.css",
2608
+ "main.js": "main-9d527c31af98f3d09fea.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.6
4
+ version: 0.2.10
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-11 00:00:00.000000000 Z
11
+ date: 2021-10-15 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-9d527c31af98f3d09fea.css.gz
1528
+ - ui/dist/main-9d527c31af98f3d09fea.js.gz
1528
1529
  - ui/dist/manifest.json
1529
1530
  homepage:
1530
1531
  licenses: