audits 0.0.1 → 0.1.0

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: 2dd77ffe6dabb842251a2ca814290071d1d81bc1
4
- data.tar.gz: 1ef8e6018ad750aeb1f81f7b838d6f6fe10f3bc5
3
+ metadata.gz: 15cb05f37e893fde0dd55cdeaa0987e6100f309a
4
+ data.tar.gz: 1fdcd26f4d2ea7d925d0a2bdf148af201b3b69b3
5
5
  SHA512:
6
- metadata.gz: 4b48ee5027a327a1fac51a19345fedef17b1474010cada6ff6cb20de565868596c24be143542e1c42779b0634b19a279032992eb88c5b6f6a60fa419372f3aa4
7
- data.tar.gz: cf2fab06225aa0192459d64189045e843a8d6cc3251f8fef34de858fc0a9744f7e4a7d1f461b42b7fe1db6f52a6b67eb8349ba0cca74bc9fcafc630b4eaf5e7d
6
+ metadata.gz: 88d15d58b1c3888e7611149e4c4500b21a2bad2fb72cada6287bee81efe7e55253f2f03490ed9e5c011383a4b0f2a3e3e827f1d94a438e39eb039ecf9f5868d6
7
+ data.tar.gz: 818bdbd1a8af826243b8929174ce34b1069c3e5a887fc5002328a97093acdb3bc624c8a423ec998eafa514a9aa2e70c73d42672831aca708a67675e8ddab0680
@@ -1,77 +1,2 @@
1
- require 'change.rb'
2
-
3
- class ActiveRecord::Base
4
-
5
- before_save :before_save
6
-
7
- @@auditable_properties = {}
8
- @@parent_models = {}
9
- @@current_user_id = nil
10
-
11
- def self.auditable_properties
12
- return @@auditable_properties[self.to_s] if !@@auditable_properties.blank?
13
- return nil
14
- end
15
-
16
- def self.parent_model
17
- return @@parent_models[self.to_s] if !@@parent_models.blank?
18
- return nil
19
- end
20
-
21
- def self.audits(*properties)
22
- @@auditable_properties[self.to_s] = properties
23
- # puts "Calling audits from class #{self.to_s}"
24
- end
25
-
26
- def self.audit_parent(parent_model)
27
- @@parent_models[self.to_s] = parent_model
28
- end
29
-
30
- def log_changes(parent_model_class_name = nil, parent_model_id = nil)
31
- auditable_properties_list = self.class.auditable_properties
32
- return if self.id.blank? or auditable_properties_list.blank?
33
- auditable_properties_list.each do |property|
34
- # Create Change object
35
- original_value = self.send "#{property.to_s}_was"
36
- new_value = self.send property.to_s
37
- next if original_value.eql? new_value
38
-
39
- c = Change.new
40
- c.model_class_name = self.class.name.demodulize
41
- c.model_id = self.id
42
- c.property_name = property.to_s
43
- c.parent_model_class_name = parent_model_class_name
44
- c.parent_model_id = parent_model_id
45
- c.original_value = original_value.to_s if !original_value.blank?
46
- c.new_value = new_value.to_s if !new_value.blank?
47
- c.created_at = DateTime.now
48
- c.created_by_id = Thread.current[:user].id if !Thread.current[:user].blank?
49
- c.save!
50
-
51
- end
52
- end
53
-
54
- def before_save
55
- return if self.class.auditable_properties.blank?
56
-
57
- parent = self.class.parent_model.blank? ? nil : self.send(self.class.parent_model.to_s)
58
- parent_model_id = parent.blank? ? nil : parent.id
59
- parent_model_class_name = parent.blank? ? nil : parent.class.name.demodulize
60
-
61
- self.log_changes(parent_model_class_name, parent_model_id)
62
- end
63
-
64
- def get_changes
65
- return nil if self.class.auditable_properties.blank? or self.id.blank?
66
-
67
- return Change.get_model_changes(self.class.name.demodulize, self.id)
68
- end
69
- end
70
-
71
- class ActionController::Base
72
- before_filter :set_audit_user
73
-
74
- def set_audit_user
75
- Thread.current[:user] = current_admin if defined? current_admin and !current_admin.blank?
76
- end
1
+ module Audits
77
2
  end
@@ -1,3 +1,3 @@
1
1
  module Audits
2
- VERSION = "0.0.1"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -4,15 +4,21 @@ require 'rails/generators/active_record'
4
4
  class AuditsInstallGenerator < Rails::Generators::Base
5
5
  include ::Rails::Generators::Migration
6
6
  source_root File.expand_path('../templates', __FILE__)
7
+ argument :user_class_name, :type => :string, :default => "user"
7
8
 
8
9
  def create_migration_file
9
10
  migration_template 'create_changes.rb', 'db/migrate/create_changes.rb'
10
11
  end
11
12
 
12
- # def copy_mailer_templates
13
- # copy_file 'monitored_process_mailer.rb', 'app/mailers/monitored_process_mailer.rb'
14
- # copy_file 'process_execution_result_email.html.erb', 'app/views/monitored_process_mailer/process_execution_result_email.html.erb'
15
- # end
13
+ def copy_change_class
14
+ @user_class = user_class_name.downcase
15
+ template 'change.txt', 'app/models/change.rb'
16
+ end
17
+
18
+ def copy_audits_code
19
+ @user_class = user_class_name.downcase
20
+ template 'audits.txt', 'config/initializers/audits.rb'
21
+ end
16
22
 
17
23
  def self.next_migration_number(dirname)
18
24
  ::ActiveRecord::Generators::Base.next_migration_number(dirname)
@@ -0,0 +1,75 @@
1
+ class ActiveRecord::Base
2
+
3
+ before_save :before_save
4
+
5
+ @@auditable_properties = {}
6
+ @@parent_models = {}
7
+ @@current_user_id = nil
8
+
9
+ def self.auditable_properties
10
+ return @@auditable_properties[self.to_s] if !@@auditable_properties.blank?
11
+ return nil
12
+ end
13
+
14
+ def self.parent_model
15
+ return @@parent_models[self.to_s] if !@@parent_models.blank?
16
+ return nil
17
+ end
18
+
19
+ def self.audits(*properties)
20
+ @@auditable_properties[self.to_s] = properties
21
+ # puts "Calling audits from class #{self.to_s}"
22
+ end
23
+
24
+ def self.audit_parent(parent_model)
25
+ @@parent_models[self.to_s] = parent_model
26
+ end
27
+
28
+ def log_changes(parent_model_class_name = nil, parent_model_id = nil)
29
+ auditable_properties_list = self.class.auditable_properties
30
+ return if self.id.blank? or auditable_properties_list.blank?
31
+ auditable_properties_list.each do |property|
32
+ # Create Change object
33
+ original_value = self.send "#{property.to_s}_was"
34
+ new_value = self.send property.to_s
35
+ next if original_value.eql? new_value
36
+
37
+ c = Change.new
38
+ c.model_class_name = self.class.name.demodulize
39
+ c.model_id = self.id
40
+ c.property_name = property.to_s
41
+ c.parent_model_class_name = parent_model_class_name
42
+ c.parent_model_id = parent_model_id
43
+ c.original_value = original_value.to_s if !original_value.blank?
44
+ c.new_value = new_value.to_s if !new_value.blank?
45
+ c.created_at = DateTime.now
46
+ c.created_by_id = Thread.current[:user].id if !Thread.current[:user].blank?
47
+ c.save!
48
+
49
+ end
50
+ end
51
+
52
+ def before_save
53
+ return if self.class.auditable_properties.blank?
54
+
55
+ parent = self.class.parent_model.blank? ? nil : self.send(self.class.parent_model.to_s)
56
+ parent_model_id = parent.blank? ? nil : parent.id
57
+ parent_model_class_name = parent.blank? ? nil : parent.class.name.demodulize
58
+
59
+ self.log_changes(parent_model_class_name, parent_model_id)
60
+ end
61
+
62
+ def get_changes
63
+ return nil if self.class.auditable_properties.blank? or self.id.blank?
64
+
65
+ return Change.get_model_changes(self.class.name.demodulize, self.id)
66
+ end
67
+ end
68
+
69
+ class ActionController::Base
70
+ before_filter :set_audit_user
71
+
72
+ def set_audit_user
73
+ Thread.current[:user] = current_<%= @user_class %> if defined? current_<%= @user_class %> and !current_<%= @user_class %>.blank?
74
+ end
75
+ end
@@ -1,6 +1,6 @@
1
1
  class Change < ActiveRecord::Base
2
2
  # Associations
3
- belongs_to :user, :class_name => 'User', :foreign_key => 'created_by_id'
3
+ belongs_to :<%= @user_class %>, :class_name => '<%= @user_class.capitalize %>', :foreign_key => 'created_by_id'
4
4
 
5
5
  # Validations
6
6
  validates :model_class_name, :model_id, :property_name, :created_at, :presence => true
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: audits
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juan Manuel Vallejo
@@ -52,9 +52,10 @@ files:
52
52
  - Rakefile
53
53
  - lib/audits.rb
54
54
  - lib/audits/version.rb
55
- - lib/change.rb
56
55
  - lib/generators/audits_install/USAGE
57
56
  - lib/generators/audits_install/audits_install_generator.rb
57
+ - lib/generators/audits_install/templates/audits.txt
58
+ - lib/generators/audits_install/templates/change.txt
58
59
  - lib/generators/audits_install/templates/create_changes.rb
59
60
  - lib/tasks/audits_tasks.rake
60
61
  - test/audits_test.rb