effective_reports 0.3.0 → 0.4.1

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: 8cced3e68526e1530349ac707cdfc6be8464c375c2f6cd3c6ebe2533ddfd7b06
4
- data.tar.gz: 40086ff7a170ce7e7271c672523248367457fe4986d9fa79743d82c4359aced4
3
+ metadata.gz: 70923b082133448581e40494e8a68f93c231a8441fd7bbeda0281554ffe9f78b
4
+ data.tar.gz: 554d4e33b48736d92dbfed175a3aea01009f7fed5eda4c5f7bfcba8fe5c2c46e
5
5
  SHA512:
6
- metadata.gz: f3b6fe097d2ae0f7a168ba9daa53df29f2528a56b02b5e6ed88b87c8f08686924dcfb36b3483b67a36ad38d26e705719d09e8b8bbd1278038631a2399a41f031
7
- data.tar.gz: 9b96c0c343fd4bd32e379dbd85cddddfb22df466ef1dec680aeba7a3d294effe912d3784cedebe522c5f36ad3deee3b0050755723fc8cf70fc600f32e11fd73a
6
+ metadata.gz: 122a4720d2e2c3e883a53138ac7bcf954885b85d27ac486f92ee887471e9ae50be45a28e2bb1118cf57cffdd125557d499c09a1d4a4ff456bc7049f4c15f5659
7
+ data.tar.gz: da2fce3831d715481f6180e9a73882fd79ca3604ff061269a5542316669038f43cffcac4bbf8d41e124d8ac7de5304c118d9af070ae37edadd145dfd944c3b7d
@@ -2,7 +2,7 @@ module Effective
2
2
  class ReportsMailer < EffectiveReports.parent_mailer_class
3
3
 
4
4
  include EffectiveMailer
5
- include EffectiveEmailTemplatesMailer if EffectiveReports.use_effective_email_templates
5
+ #include EffectiveEmailTemplatesMailer
6
6
 
7
7
  # def reports_submitted(resource, opts = {})
8
8
  # @assigns = assigns_for(resource)
@@ -6,6 +6,7 @@ module ActsAsReportable
6
6
  extend ActiveSupport::Concern
7
7
 
8
8
  PRICE_NAME_ATTRIBUTES = ['price', 'subtotal', 'tax', 'total', 'current_revenue', 'current_revenue_subtotal', 'current_revenue_tax', 'deferred_revenue', 'deferred_revenue_subtotal', 'deferred_revenue_tax', 'amount_owing', 'surcharge']
9
+ DENY_LIST = [:logged_changes, :password, :encrypted_password]
9
10
 
10
11
  module Base
11
12
  def acts_as_reportable(options = nil)
@@ -35,7 +36,11 @@ module ActsAsReportable
35
36
  end
36
37
 
37
38
  # Used for the notifications mailer
38
- def reportable_view_assigns(view)
39
+ # This should be a view_context that you can call urls on
40
+ # But it's a bit weird and sometimes it's just nil (like on an update action in the validation)
41
+ # Be careful when you code stuff for it
42
+ # Always return all the keys, and leave the value blank if view is blank
43
+ def reportable_view_assigns(view = nil)
39
44
  {}
40
45
  end
41
46
 
@@ -76,7 +81,7 @@ module ActsAsReportable
76
81
  end; h
77
82
  end
78
83
 
79
- atts.merge(associated)
84
+ atts.merge(associated).except(*DENY_LIST)
80
85
  end
81
86
 
82
87
  end
@@ -36,6 +36,16 @@ module Effective
36
36
  validates :title, presence: true, uniqueness: true
37
37
  validates :reportable_class_name, presence: true
38
38
 
39
+ validate do
40
+ error = begin
41
+ collection().to_sql; nil
42
+ rescue StandardError => e
43
+ e.message
44
+ end
45
+
46
+ errors.add(:base, "Invalid Report: #{error}") if error.present?
47
+ end
48
+
39
49
  def to_s
40
50
  title.presence || 'report'
41
51
  end
@@ -107,7 +117,7 @@ module Effective
107
117
 
108
118
  # Apply Scopes
109
119
  report_scopes.each do |scope|
110
- collection = (scope.value.nil? ? collection.send(scope.name) : collection.send(scope.name, scope.value))
120
+ collection = scope.apply_scope(collection)
111
121
  end
112
122
 
113
123
  # Apply Includes
@@ -37,9 +37,19 @@ module Effective
37
37
  end
38
38
 
39
39
  validate(if: -> {report&.reportable }) do
40
- unless report.reportable.new.reportable_scopes.key?(name.to_sym)
41
- errors.add(:name, "acts_as_reportable #{report.reportable} reportable_scopes() missing :#{name} scope")
40
+ reportable = report.reportable
41
+
42
+ if reportable.new.reportable_scopes.key?(name.to_sym) == false
43
+ errors.add(:name, "acts_as_reportable #{reportable} reportable_scopes() missing :#{name} scope")
44
+ end
45
+
46
+ scope_error = begin
47
+ apply_scope(reportable.all).to_sql; nil
48
+ rescue StandardError => e
49
+ e.message
42
50
  end
51
+
52
+ self.errors.add(:name, scope_error) if scope_error.present?
43
53
  end
44
54
 
45
55
  def to_s
@@ -54,5 +64,9 @@ module Effective
54
64
  return '=' if advanced?
55
65
  end
56
66
 
67
+ def apply_scope(collection)
68
+ value.nil? ? collection.send(name) : collection.send(name, value)
69
+ end
70
+
57
71
  end
58
72
  end
@@ -1,23 +1,24 @@
1
- - if report.description.present?
2
- %p= simple_format(report.description)
1
+ = card do
2
+ - if report.description.present?
3
+ %p= simple_format(report.description)
3
4
 
4
- - if report.filtered_report_columns.present? || report.report_scopes.present?
5
- %p The results of this report have been filtered by the following:
5
+ - if report.filtered_report_columns.present? || report.report_scopes.present?
6
+ %p The results of this report have been filtered by the following:
6
7
 
7
- - if report.filtered_report_columns.present?
8
- %p= badges(report.filtered_report_columns.map(&:to_s))
8
+ - if report.filtered_report_columns.present?
9
+ %p= badges(report.filtered_report_columns.map(&:to_s))
9
10
 
10
- - if report.report_scopes.present?
11
- %p= badges(report.report_scopes.map(&:to_s))
11
+ - if report.report_scopes.present?
12
+ %p= badges(report.report_scopes.map(&:to_s))
12
13
 
13
- = collapse('Show SQL') do
14
- %p= report.collection.to_sql
14
+ = collapse('Show SQL') do
15
+ %p= report.collection.to_sql
15
16
 
16
- - if (notifications = report.try(:notifications)).present?
17
- %p.mt-3
18
- The following notifications are sent based on this report:
19
- - notifications.each do |notification|
20
- = link_to(notification, effective_messaging.edit_admin_notification_path(notification), target: '_blank')
17
+ - if (notifications = report.try(:notifications)).present?
18
+ %p.mt-3
19
+ The following notifications are sent based on this report:
20
+ - notifications.each do |notification|
21
+ = link_to(notification, effective_messaging.edit_admin_notification_path(notification), target: '_blank')
21
22
 
22
- - datatable = EffectiveReportDatatable.new(report: report)
23
- = render_datatable(datatable)
23
+ - datatable = EffectiveReportDatatable.new(report: report)
24
+ = render_datatable(datatable)
@@ -25,9 +25,7 @@ EffectiveReports.setup do |config|
25
25
  # config.deliver_method = nil # The deliver method, deliver_later or deliver_now
26
26
  # config.mailer_layout = nil # Default mailer layout
27
27
  # config.mailer_sender = nil # Default From value
28
+ # config.mailer_froms = nil # Default Froms collection
28
29
  # config.mailer_admin = nil # Default To value for Admin correspondence
29
30
  # config.mailer_subject = nil # Proc.new method used to customize Subject
30
-
31
- # Will work with effective_email_templates gem
32
- config.use_effective_email_templates = true
33
31
  end
@@ -1,3 +1,3 @@
1
1
  module EffectiveReports
2
- VERSION = '0.3.0'.freeze
2
+ VERSION = '0.4.1'.freeze
3
3
  end
@@ -14,7 +14,7 @@ module EffectiveReports
14
14
 
15
15
  # Effective Gem
16
16
  :layout,
17
- :mailer, :parent_mailer, :deliver_method, :mailer_layout, :mailer_sender, :mailer_admin, :mailer_subject, :use_effective_email_templates
17
+ :mailer, :parent_mailer, :deliver_method, :mailer_layout, :mailer_sender, :mailer_froms, :mailer_admin, :mailer_subject
18
18
  ]
19
19
  end
20
20
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: effective_reports
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Code and Effect
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-08-24 00:00:00.000000000 Z
11
+ date: 2023-11-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails