erp_tech_svcs 4.0.0 → 4.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +0 -24
- data/app/controllers/api/v1/audit_log_items_controller.rb +33 -0
- data/app/controllers/api/v1/audit_logs_controller.rb +32 -0
- data/app/controllers/api/v1/capabilities_controller.rb +160 -0
- data/app/controllers/api/v1/file_assets_controller.rb +40 -0
- data/app/controllers/api/v1/groups_controller.rb +236 -0
- data/app/controllers/api/v1/security_roles_controller.rb +276 -0
- data/app/controllers/api/v1/users_controller.rb +262 -0
- data/app/controllers/erp_tech_svcs/session_controller.rb +8 -5
- data/app/controllers/erp_tech_svcs/user_controller.rb +14 -15
- data/app/mailers/user_mailer.rb +8 -5
- data/app/models/audit_log.rb +111 -36
- data/app/models/audit_log_item.rb +30 -0
- data/app/models/audit_log_item_type.rb +1 -0
- data/app/models/audit_log_type.rb +19 -0
- data/app/models/capability.rb +22 -6
- data/app/models/extensions/tracked_status_type.rb +3 -0
- data/app/models/file_asset.rb +245 -20
- data/app/models/file_asset_holder.rb +20 -0
- data/app/models/group.rb +38 -25
- data/app/models/notification.rb +32 -13
- data/app/models/notification_type.rb +13 -0
- data/app/models/security_role.rb +17 -4
- data/app/models/user.rb +116 -29
- data/app/validators/password_strength_validator.rb +1 -1
- data/app/views/user_mailer/activation_needed_email.html.erb +293 -15
- data/app/views/user_mailer/reset_password_email.html.erb +268 -13
- data/config/initializers/logger.rb +19 -0
- data/config/initializers/sorcery.rb +2 -0
- data/config/initializers/wickedpdf.rb +4 -0
- data/config/routes.rb +64 -0
- data/db/data_migrations/20110802200222_schedule_delete_expired_sessions_job.rb +1 -5
- data/db/data_migrations/20150819140550_create_job_tracker_for_notification.rb +14 -0
- data/db/migrate/20080805000010_base_tech_services.rb +99 -39
- data/db/migrate/20150414151421_add_nested_set_columns_to_security_role.rb +13 -0
- data/db/migrate/20150609003216_update_user_for_sorcery.rb +11 -0
- data/db/migrate/20150819135108_add_custom_fields_to_notifications.rb +5 -0
- data/db/migrate/20160122155402_add_description_to_file_asset.rb +13 -0
- data/db/migrate/20160310163060_add_created_by_updated_by_to_erp_tech_svcs.rb +35 -0
- data/db/migrate/20160313161611_add_tenant_id_to_audit_log.rb +16 -0
- data/lib/erp_tech_svcs.rb +6 -10
- data/lib/erp_tech_svcs/config.rb +7 -2
- data/lib/erp_tech_svcs/delayed_jobs/delete_expired_sessions_job.rb +49 -0
- data/lib/erp_tech_svcs/delayed_jobs/notification_job.rb +50 -0
- data/lib/erp_tech_svcs/engine.rb +0 -1
- data/lib/erp_tech_svcs/erp_tech_svcs_audit_log.rb +12 -6
- data/lib/erp_tech_svcs/extensions.rb +0 -1
- data/lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb +57 -29
- data/lib/erp_tech_svcs/extensions/active_record/has_file_assets.rb +57 -31
- data/lib/erp_tech_svcs/extensions/active_record/has_security_roles.rb +12 -4
- data/lib/erp_tech_svcs/extensions/active_record/is_json.rb +22 -15
- data/lib/erp_tech_svcs/extensions/active_record/scoped_by.rb +16 -13
- data/lib/erp_tech_svcs/extensions/compass_ae/erp_base_erp_svcs/controllers/api/parties_controller.rb +15 -0
- data/lib/erp_tech_svcs/file_support.rb +1 -0
- data/lib/erp_tech_svcs/file_support/file_system_manager.rb +77 -44
- data/lib/erp_tech_svcs/file_support/manager.rb +12 -3
- data/lib/erp_tech_svcs/file_support/railties/compass_ae_resolver.rb +49 -0
- data/lib/erp_tech_svcs/file_support/s3_manager.rb +73 -51
- data/lib/erp_tech_svcs/utils/compass_access_negotiator.rb +11 -2
- data/lib/erp_tech_svcs/utils/default_nested_set_methods.rb +238 -46
- data/lib/erp_tech_svcs/version.rb +1 -1
- data/lib/tasks/erp_tech_svcs_tasks.rake +43 -5
- metadata +73 -42
- data/app/models/user_defined_data.rb +0 -6
- data/app/models/user_defined_field.rb +0 -8
- data/config/initializers/pdfkit.rb +0 -18
- data/db/data_migrations/20121130212146_note_capabilities.rb +0 -23
- data/db/migrate/20121116151510_create_groups.rb +0 -18
- data/db/migrate/20121126171612_upgrade_security.rb +0 -53
- data/db/migrate/20121126173506_upgrade_security2.rb +0 -274
- data/db/migrate/20130410135419_add_queue_to_delayed_jobs.rb +0 -13
- data/db/migrate/20130610163240_create_notifications.rb +0 -37
- data/db/migrate/20130725212647_add_party_id_idx_to_users.rb +0 -9
- data/db/migrate/20131113213843_add_audit_log_item_old_value.rb +0 -13
- data/db/migrate/20131113213844_add_erp_tech_svcs_missing_indexes.rb +0 -31
- data/db/migrate/20131129203603_add_user_defined_fields.rb +0 -43
- data/db/migrate/20141013060204_add_custom_fields_to_notifications.rb +0 -12
- data/db/migrate/20141108182427_add_scoped_by_to_file_assets.rb +0 -14
- data/lib/erp_tech_svcs/extensions/active_record/has_user_defined_data.rb +0 -147
- data/lib/erp_tech_svcs/sessions/delete_expired_sessions_job.rb +0 -47
- data/lib/erp_tech_svcs/sessions/delete_expired_sessions_service.rb +0 -15
- data/lib/erp_tech_svcs/utils/compass_logger.rb +0 -87
@@ -1,147 +0,0 @@
|
|
1
|
-
module ErpTechSvcs
|
2
|
-
module Extensions
|
3
|
-
module ActiveRecord
|
4
|
-
module HasUserDefinedData
|
5
|
-
|
6
|
-
module Errors
|
7
|
-
class UserDefinedFieldAlreadyExists < StandardError
|
8
|
-
def to_s
|
9
|
-
"User defined field already exists."
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
class UserDefinedFieldDoesNotExist < StandardError
|
14
|
-
def to_s
|
15
|
-
"User defined field does not exist."
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
class UserDefinedDataDoesNotExist < StandardError
|
20
|
-
def to_s
|
21
|
-
"User defined data does not exist."
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
def self.included(base)
|
27
|
-
base.extend(ClassMethods)
|
28
|
-
end
|
29
|
-
|
30
|
-
module ClassMethods
|
31
|
-
|
32
|
-
def has_user_defined_data
|
33
|
-
extend HasUserDefinedData::SingletonMethods
|
34
|
-
include HasUserDefinedData::InstanceMethods
|
35
|
-
end
|
36
|
-
|
37
|
-
end
|
38
|
-
|
39
|
-
module SingletonMethods
|
40
|
-
|
41
|
-
def remove_all_user_defined_data
|
42
|
-
UserDefinedData.destroy_all("model_name = #{self.name}")
|
43
|
-
end
|
44
|
-
|
45
|
-
alias remove_user_fields remove_all_user_defined_data
|
46
|
-
|
47
|
-
def user_defined_fields(scope=nil)
|
48
|
-
user_defined_data = if scope
|
49
|
-
# return array and remove nil if none with specified scope
|
50
|
-
[UserDefinedData.where('scope = ? and model_name = ?', scope, self.name).first].compact
|
51
|
-
else
|
52
|
-
UserDefinedData.where('model_name = ?', self.name).all
|
53
|
-
end
|
54
|
-
|
55
|
-
if user_defined_data.empty?
|
56
|
-
[]
|
57
|
-
else
|
58
|
-
user_defined_data.collect(&:user_defined_fields).flatten
|
59
|
-
end
|
60
|
-
|
61
|
-
end
|
62
|
-
|
63
|
-
alias user_fields user_defined_fields
|
64
|
-
|
65
|
-
def user_defined_field(field_name, scope=nil)
|
66
|
-
UserDefinedField.joins(:user_defined_data)
|
67
|
-
.where('model_name = ?', self.name)
|
68
|
-
.where('scope = ?', scope)
|
69
|
-
.where('field_name = ?', field_name).first
|
70
|
-
end
|
71
|
-
|
72
|
-
alias user_field user_defined_field
|
73
|
-
|
74
|
-
def add_user_defined_field(field_name, label, data_type, scope=nil)
|
75
|
-
current_user_field = self.user_field(field_name, scope)
|
76
|
-
|
77
|
-
if current_user_field
|
78
|
-
raise Error::UserDefinedFieldAlreadyExists
|
79
|
-
else
|
80
|
-
user_defined_field = UserDefinedField.new(field_name: field_name, label: label, data_type: data_type)
|
81
|
-
|
82
|
-
user_defined_data = if scope
|
83
|
-
# return array and remove nil if none with specified scope
|
84
|
-
UserDefinedData.where('scope = ? and model_name = ?', scope, self.name).first
|
85
|
-
else
|
86
|
-
UserDefinedData.where('scope = ? and model_name = ?', nil, self.name)
|
87
|
-
end
|
88
|
-
|
89
|
-
user_defined_data = UserDefinedData.new(scope: scope, model_name: self.name) unless user_defined_data
|
90
|
-
|
91
|
-
user_defined_data.user_defined_fields << user_defined_field
|
92
|
-
user_defined_data.save
|
93
|
-
|
94
|
-
user_defined_field
|
95
|
-
end
|
96
|
-
|
97
|
-
end
|
98
|
-
|
99
|
-
alias add_user_field add_user_defined_field
|
100
|
-
|
101
|
-
def update_user_defined_field(field_name, label, scope=nil)
|
102
|
-
current_user_field = self.user_field(field_name, scope)
|
103
|
-
|
104
|
-
if current_user_field
|
105
|
-
current_user_field.label = label
|
106
|
-
current_user_field.save
|
107
|
-
else
|
108
|
-
raise Errors::UserDefinedFieldDoesNotExist
|
109
|
-
end
|
110
|
-
end
|
111
|
-
|
112
|
-
alias update_user_field update_user_defined_field
|
113
|
-
|
114
|
-
def remove_user_defined_field(field_name, scope=nil)
|
115
|
-
user_defined_data = if scope
|
116
|
-
# return array and remove nil if none with specified scope
|
117
|
-
UserDefinedData.where('scope = ? and model_name = ?', scope, self.name).first
|
118
|
-
else
|
119
|
-
UserDefinedData.where('scope = ? and model_name = ?', nil, self.name)
|
120
|
-
end
|
121
|
-
|
122
|
-
if user_defined_data
|
123
|
-
user_defined_field = user_defined_data.user_defined_fields.where('field_name = ?', field_name)
|
124
|
-
|
125
|
-
if user_defined_field
|
126
|
-
user_defined_field.destroy
|
127
|
-
else
|
128
|
-
raise Errors::UserDefinedFieldDoesNotExist
|
129
|
-
end
|
130
|
-
else
|
131
|
-
raise Errors::UserDefinedDataDoesNotExist
|
132
|
-
end
|
133
|
-
end
|
134
|
-
|
135
|
-
alias remove_user_field remove_user_defined_field
|
136
|
-
|
137
|
-
end
|
138
|
-
|
139
|
-
module InstanceMethods
|
140
|
-
|
141
|
-
end
|
142
|
-
|
143
|
-
end #HasUserDefinedData
|
144
|
-
end #ActiveRecord
|
145
|
-
end #Extensions
|
146
|
-
end #ErpTechSvcs
|
147
|
-
|
@@ -1,47 +0,0 @@
|
|
1
|
-
require "benchmark"
|
2
|
-
|
3
|
-
module ErpTechSvcs
|
4
|
-
module Sessions
|
5
|
-
# Delayed Job to Reset Daily Assignments to Forecast
|
6
|
-
class DeleteExpiredSessionsJob
|
7
|
-
|
8
|
-
def initialize
|
9
|
-
@priority = 1
|
10
|
-
end
|
11
|
-
|
12
|
-
def perform
|
13
|
-
time = Benchmark.measure do
|
14
|
-
begin
|
15
|
-
process_job
|
16
|
-
rescue => exception
|
17
|
-
ErpTechSvcs::Util::CompassLogger.delete_expired_sessions_job.error("An unrecoverable error has occured, the job will be rescheduled: #{exception.message} : #{exception.backtrace}")
|
18
|
-
end
|
19
|
-
end #benchmark
|
20
|
-
|
21
|
-
# Run once per day
|
22
|
-
date = Date.tomorrow
|
23
|
-
start_time = DateTime.civil(date.year, date.month, date.day, 2, 0, 1, -(5.0/24.0))
|
24
|
-
|
25
|
-
Delayed::Job.enqueue(DeleteExpiredSessionsJob.new(), @priority, start_time)
|
26
|
-
|
27
|
-
#update job tracker
|
28
|
-
JobTracker.job_ran('Delete Expired Sessions', self.class.name, ("(%.4fs)" % time.real), start_time)
|
29
|
-
end
|
30
|
-
|
31
|
-
def self.schedule_job(schedule_dt)
|
32
|
-
Delayed::Job.enqueue(DeleteExpiredSessionsJob.new(), @priority, schedule_dt)
|
33
|
-
end
|
34
|
-
|
35
|
-
def process_job
|
36
|
-
start_time = Time.now
|
37
|
-
|
38
|
-
ErpTechSvcs::Sessions::DeleteExpiredSessionsService.new.execute
|
39
|
-
|
40
|
-
end_time = Time.now
|
41
|
-
|
42
|
-
return end_time - start_time
|
43
|
-
end
|
44
|
-
|
45
|
-
end #Close DeleteExpiredSessionsJob
|
46
|
-
end #Close Sessions
|
47
|
-
end #Close ErpTechSvcs
|
@@ -1,15 +0,0 @@
|
|
1
|
-
module ErpTechSvcs
|
2
|
-
module Sessions
|
3
|
-
class DeleteExpiredSessionsService
|
4
|
-
|
5
|
-
def initialize
|
6
|
-
@session_age = ErpTechSvcs::Config.session_expires_in_hours.hours
|
7
|
-
end
|
8
|
-
|
9
|
-
def execute
|
10
|
-
ActiveRecord::SessionStore::Session.delete_all ['updated_at < ?', @session_age.ago]
|
11
|
-
end
|
12
|
-
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
@@ -1,87 +0,0 @@
|
|
1
|
-
require 'logger'
|
2
|
-
module ErpTechSvcs
|
3
|
-
module Util
|
4
|
-
class CompassLogger
|
5
|
-
include Singleton
|
6
|
-
|
7
|
-
@@writers = {}
|
8
|
-
|
9
|
-
def CompassLogger.debug(msg)
|
10
|
-
if defined?(logger)
|
11
|
-
logger.debug(msg)
|
12
|
-
else
|
13
|
-
CompassLogger.app_logger()
|
14
|
-
@@writers["app_logger"].debug(msg)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
def CompassLogger.info(msg)
|
19
|
-
if defined?(logger)
|
20
|
-
logger.info(msg)
|
21
|
-
else
|
22
|
-
CompassLogger.app_logger()
|
23
|
-
@@writers["app_logger"].info(msg)
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
def CompassLogger.warn(msg)
|
28
|
-
if defined?(logger)
|
29
|
-
logger.warn(msg)
|
30
|
-
else
|
31
|
-
CompassLogger.app_logger()
|
32
|
-
@@writers["app_logger"].warn(msg)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
def CompassLogger.error(msg)
|
37
|
-
if defined?(logger)
|
38
|
-
logger.error(msg)
|
39
|
-
else
|
40
|
-
CompassLogger.app_logger()
|
41
|
-
@@writers["app_logger"].error(msg)
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
def CompassLogger.fatal(msg)
|
46
|
-
if defined?(logger)
|
47
|
-
logger.fatal(msg)
|
48
|
-
else
|
49
|
-
CompassLogger.app_logger()
|
50
|
-
@@writers["app_logger"].fatal(msg)
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
def CompassLogger.stdout(msg)
|
55
|
-
if CompassLogger.log_level() == 0
|
56
|
-
puts msg
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
def CompassLogger.method_missing(method, *args, &block)
|
61
|
-
unless @@writers.has_key?(method)
|
62
|
-
logger = Logger.new(CompassLogger.log_path(method))
|
63
|
-
logger.level = CompassLogger.log_level()
|
64
|
-
@@writers[method] = logger
|
65
|
-
end
|
66
|
-
@@writers[method]
|
67
|
-
end
|
68
|
-
|
69
|
-
def CompassLogger.app_logger()
|
70
|
-
path = File.join(ErpTechSvcs::Config.compass_logger_path, "#{Rails.env rescue 'rake'}.log")
|
71
|
-
unless @@writers.has_key?("app_logger")
|
72
|
-
logger = Logger.new(path)
|
73
|
-
logger.level = CompassLogger.log_level()
|
74
|
-
@@writers["app_logger"] = logger
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
def CompassLogger.log_level()
|
79
|
-
ActiveRecord::Base.logger.level rescue Logger::DEBUG
|
80
|
-
end
|
81
|
-
|
82
|
-
def CompassLogger.log_path(method)
|
83
|
-
File.join(ErpTechSvcs::Config.compass_logger_path, "#{Rails.env rescue ''}_#{method}.log")
|
84
|
-
end
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|