Class: Preference
- Inherits:
-
Sequel::Model
- Object
- Sequel::Model
- Preference
show all
- Includes:
- ASModel
- Defined in:
- backend/app/model/preference.rb
Class Method Summary
(collapse)
Instance Method Summary
(collapse)
Methods included from ASModel
all_models, included, update_publish_flag, update_suppressed_flag
Methods included from JSONModel
JSONModel, #JSONModel, add_error_handler, all, allow_unmapped_enum_value, backend_url, client_mode?, custom_validations, destroy_model, enum_default_value, enum_values, handle_error, load_schema, #models, models, parse_jsonmodel_ref, parse_reference, repository, repository_for, schema_src, set_repository, strict_mode, strict_mode?, with_repository
Class Method Details
+ (Object) create_from_json(json, opts = {})
150
151
152
|
# File 'backend/app/model/preference.rb', line 150
def self.create_from_json(json, opts = {})
super(json, opts.merge('defaults' => JSON(json.defaults || {})))
end
|
+ (Object) current_preferences(repo_id = RequestContext.get(:repo_id))
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
|
# File 'backend/app/model/preference.rb', line 93
def self.current_preferences(repo_id = RequestContext.get(:repo_id))
return {} unless RequestContext.get(:current_username)
user_id = User[:username => RequestContext.get(:current_username)].id
filter = {:repo_id => repo_id, :user_uniq => [user_id.to_s, 'GLOBAL_USER']}
json_prefs = {'defaults' => {}}
prefs = {}
defaults = {}
if repo_id != Repository.global_repo_id
self.filter(filter).each do |pref|
if pref.user_uniq == 'GLOBAL_USER'
json_prefs['repo'] = self.to_jsonmodel(pref)
prefs[:repo] = pref
else
json_prefs['user_repo'] = self.to_jsonmodel(pref)
prefs[:user_repo] = pref
end
end
end
RequestContext.in_global_repo do
filter = {:repo_id => Repository.global_repo_id, :user_uniq => [user_id.to_s, 'GLOBAL_USER']}
self.filter(filter).each do |pref|
if pref.user_uniq == 'GLOBAL_USER'
json_prefs['global'] = self.to_jsonmodel(pref)
prefs[:global] = pref
else
json_prefs['user_global'] = self.to_jsonmodel(pref)
prefs[:user_global] = pref
end
end
end
[:global, :user_global, :repo, :user_repo].each do |k|
if prefs[k]
json_prefs['defaults'].merge!(prefs[k].parsed_defaults)
json_prefs["defaults_#{k}"] = json_prefs['defaults'].clone
end
end
json_prefs['defaults'].delete('jsonmodel_type')
json_prefs
end
|
+ (Object) defaults
83
84
85
86
87
88
89
90
|
# File 'backend/app/model/preference.rb', line 83
def self.defaults
if RequestContext.get(:current_username)
user_defs = self.parsed_defaults_for(:user_id => User[:username => RequestContext.get(:current_username)].id)
self.repo_defaults.merge(user_defs)
else
self.repo_defaults
end
end
|
+ (Object) global_defaults
59
60
61
62
63
|
# File 'backend/app/model/preference.rb', line 59
def self.global_defaults
RequestContext.open(:repo_id => Repository.global_repo_id) do
self.parsed_defaults_for(:user_id => nil)
end
end
|
+ (Object) init
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
# File 'backend/app/model/preference.rb', line 7
def self.init
defs_file = File.join(ASUtils.find_base_directory("common"), "config", "preference_defaults.rb")
defaults = {}
if File.exists?(defs_file)
found_defs_file = true
Log.info("Loading preference defaults file at #{defs_file}")
defaults = eval(File.read(defs_file))
end
RequestContext.in_global_repo do
filter = {:repo_id => Repository.global_repo_id, :user_id => nil}
if self.filter(filter).count == 0
Log.info("Creating system preferences")
Preference.create_from_json(JSONModel(:preference).from_hash({
:user_id => nil,
:defaults => defaults
}),
:repo_id => Repository.global_repo_id)
else
if found_defs_file
Log.info("Updating system preferences")
pref = self.filter(filter).first
pref.update_from_json(JSONModel(:preference).from_hash({:defaults => defaults}),
:lock_version => pref.lock_version)
end
end
end
end
|
+ (Object) parsed_defaults_for(filter)
53
54
55
56
|
# File 'backend/app/model/preference.rb', line 53
def self.parsed_defaults_for(filter)
pref = self[filter.merge(:repo_id => RequestContext.get(:repo_id))]
pref ? pref.parsed_defaults : {}
end
|
+ (Object) repo_defaults
78
79
80
|
# File 'backend/app/model/preference.rb', line 78
def self.repo_defaults
self.user_global_defaults.merge(self.parsed_defaults_for(:user_id => nil))
end
|
+ (Object) sequel_to_jsonmodel(objs, opts = {})
139
140
141
142
143
144
145
146
147
|
# File 'backend/app/model/preference.rb', line 139
def self.sequel_to_jsonmodel(objs, opts = {})
jsons = super
jsons.zip(objs).each do |json, obj|
json['defaults'] = JSONModel(:defaults).from_json(obj.defaults)
end
jsons
end
|
+ (Object) user_global_defaults
66
67
68
69
70
71
72
73
74
75
|
# File 'backend/app/model/preference.rb', line 66
def self.user_global_defaults
RequestContext.open(:repo_id => Repository.global_repo_id) do
if RequestContext.get(:current_username)
user_defs = self.parsed_defaults_for(:user_id => User[:username => RequestContext.get(:current_username)].id)
self.global_defaults.merge(user_defs)
else
self.global_defaults
end
end
end
|
Instance Method Details
- (Object) after_save
43
44
45
|
# File 'backend/app/model/preference.rb', line 43
def after_save
Notifications.notify("REFRESH_PREFERENCES")
end
|
- (Object) before_save
37
38
39
40
|
# File 'backend/app/model/preference.rb', line 37
def before_save
super
self.user_uniq = self.user_id || 'GLOBAL_USER'
end
|
- (Object) parsed_defaults
48
49
50
|
# File 'backend/app/model/preference.rb', line 48
def parsed_defaults
ASUtils.json_parse(self.defaults)
end
|
- (Object) update_from_json(json, opts = {}, apply_nested_records = true)
155
156
157
158
|
# File 'backend/app/model/preference.rb', line 155
def update_from_json(json, opts = {}, apply_nested_records = true)
super(json, opts.merge('defaults' => JSON(json.defaults)),
apply_nested_records)
end
|