Class: Debci::Admin
Defined Under Namespace
Classes: Model
Constant Summary
Constants included
from HTMLHelpers
HTMLHelpers::ICONS
Class Method Summary
collapse
Instance Method Summary
collapse
#ansi_to_html, #expand_pin_packages, #expand_url, #file_link, #history_url, #icon, #package_url, #pkg_history_url, #title_test_trigger_pin
Methods inherited from AuthApp
#authenticate!, #forbidden
Methods inherited from App
#get_page_params, get_page_range, #get_page_range, #pagination_params, #refresh!
Class Method Details
.model(name, **opts) ⇒ Object
16
17
18
19
20
21
22
|
# File 'lib/debci/admin.rb', line 16
def self.model(name, **opts)
model = Model.new(name)
opts.each do |k, v|
model.send("#{k}=", v)
end
settings.models[name] = model
end
|
Instance Method Details
#current_model ⇒ Object
122
123
124
|
# File 'lib/debci/admin.rb', line 122
def current_model
@current_model ||= current_model_info.ar_class
end
|
#current_model_info ⇒ Object
118
119
120
|
# File 'lib/debci/admin.rb', line 118
def current_model_info
@current_model_info ||= settings.models[params[:model].to_sym]
end
|
#current_model_name ⇒ Object
114
115
116
|
# File 'lib/debci/admin.rb', line 114
def current_model_name
@current_model_name ||= params[:model]
end
|
#current_object ⇒ Object
130
131
132
133
134
|
# File 'lib/debci/admin.rb', line 130
def current_object
@current_object ||= current_model.find(params[:id])
rescue ActiveRecord::RecordNotFound
halt 404
end
|
#fields ⇒ Object
136
137
138
|
# File 'lib/debci/admin.rb', line 136
def fields
@fields ||= current_model_info.fields
end
|
140
141
142
143
144
145
146
147
148
|
# File 'lib/debci/admin.rb', line 140
def format(field, value)
return value unless current_model_info.formatters
field = field.to_sym
formatter = current_model_info.formatters[field]
return value unless formatter
instance_exec(value, &formatter)
end
|
#order ⇒ Object
126
127
128
|
# File 'lib/debci/admin.rb', line 126
def order
current_model_info.order || :id
end
|
#parse(field, value) ⇒ Object
150
151
152
153
154
155
156
157
|
# File 'lib/debci/admin.rb', line 150
def parse(field, value)
return value unless current_model_info.parsers
parser = current_model_info.parsers[field]
return value unless parser
instance_exec(value, &parser)
end
|
#parse_size(str) ⇒ Object
159
160
161
162
163
164
165
166
167
168
|
# File 'lib/debci/admin.rb', line 159
def parse_size(str)
n = str.to_i
case str
when /mb$/i
n *= 1.megabyte
when /gb$/i
n *= 1.gigabyte
end
n
end
|
#read_only_fields ⇒ Object
174
175
176
177
178
179
180
181
182
183
|
# File 'lib/debci/admin.rb', line 174
def read_only_fields
@read_only_fields ||=
if current_model_info.read_only_fields
current_model_info.read_only_fields
elsif current_model_info.edit_fields
current_model_info.fields - current_model_info.edit_fields
else
[]
end
end
|
#save_object(object, params, read_only_fields) ⇒ Object
102
103
104
105
106
107
108
109
110
111
112
|
# File 'lib/debci/admin.rb', line 102
def save_object(object, params, read_only_fields)
data = params.reject do |key, _value|
[:model, :id].include?(key.to_sym) || read_only_fields.include?(key.to_sym)
end
data.each_key do |f|
column = current_model.columns_hash[f]
data[f] = nil if column.null && data[f].blank?
data[f] = parse(f.to_sym, data[f]) if data[f]
end
object.update!(data) end
|
#search_fields ⇒ Object
185
186
187
|
# File 'lib/debci/admin.rb', line 185
def search_fields
@search_fields ||= current_model_info.search_fields
end
|
#select_fields ⇒ Object
170
171
172
|
# File 'lib/debci/admin.rb', line 170
def select_fields
@select_fields ||= current_model_info.select_fields || []
end
|