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 App
#authenticate!, #forbidden, #get_page_params, get_page_range, #get_page_range, #logged_in?, #logging_in?, #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
129
130
131
|
# File 'lib/debci/admin.rb', line 129
def current_model
@current_model ||= current_model_info.ar_class
end
|
#current_model_info ⇒ Object
125
126
127
|
# File 'lib/debci/admin.rb', line 125
def current_model_info
@current_model_info ||= settings.models[params[:model].to_sym]
end
|
#current_model_name ⇒ Object
121
122
123
|
# File 'lib/debci/admin.rb', line 121
def current_model_name
@current_model_name ||= params[:model]
end
|
#current_object ⇒ Object
137
138
139
140
141
|
# File 'lib/debci/admin.rb', line 137
def current_object
@current_object ||= current_model.find(params[:id])
rescue ActiveRecord::RecordNotFound
halt 404
end
|
#fields ⇒ Object
143
144
145
|
# File 'lib/debci/admin.rb', line 143
def fields
@fields ||= current_model_info.fields
end
|
147
148
149
150
151
152
153
154
155
|
# File 'lib/debci/admin.rb', line 147
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
133
134
135
|
# File 'lib/debci/admin.rb', line 133
def order
current_model_info.order || :id
end
|
#parse(field, value) ⇒ Object
157
158
159
160
161
162
163
164
|
# File 'lib/debci/admin.rb', line 157
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
166
167
168
169
170
171
172
173
174
175
|
# File 'lib/debci/admin.rb', line 166
def parse_size(str)
n = str.to_f
case str
when /mb$/i
n *= 1.megabyte
when /gb$/i
n *= 1.gigabyte
end
n
end
|
#read_object(object, params, read_only_fields) ⇒ Object
108
109
110
111
112
113
114
115
116
117
118
119
|
# File 'lib/debci/admin.rb', line 108
def read_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.attributes = data
object
end
|
#read_only_fields ⇒ Object
181
182
183
184
185
186
187
188
189
190
|
# File 'lib/debci/admin.rb', line 181
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
|
#search_fields ⇒ Object
192
193
194
|
# File 'lib/debci/admin.rb', line 192
def search_fields
@search_fields ||= current_model_info.search_fields
end
|
#select_fields ⇒ Object
177
178
179
|
# File 'lib/debci/admin.rb', line 177
def select_fields
@select_fields ||= current_model_info.select_fields || []
end
|