audits 0.0.1 → 0.1.0

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
  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