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
17
18
19
20
21
22
23
|
# File 'lib/debci/admin.rb', line 17
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
130
131
132
|
# File 'lib/debci/admin.rb', line 130
def current_model
@current_model ||= current_model_info.ar_class
end
|
#current_model_info ⇒ Object
126
127
128
|
# File 'lib/debci/admin.rb', line 126
def current_model_info
@current_model_info ||= settings.models[params[:model].to_sym]
end
|
#current_model_name ⇒ Object
122
123
124
|
# File 'lib/debci/admin.rb', line 122
def current_model_name
@current_model_name ||= params[:model]
end
|
#current_object ⇒ Object
138
139
140
141
142
|
# File 'lib/debci/admin.rb', line 138
def current_object
@current_object ||= current_model.find(params[:id])
rescue ActiveRecord::RecordNotFound
halt 404
end
|
#fields ⇒ Object
144
145
146
|
# File 'lib/debci/admin.rb', line 144
def fields
@fields ||= current_model_info.fields
end
|
148
149
150
151
152
153
154
155
156
|
# File 'lib/debci/admin.rb', line 148
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
134
135
136
|
# File 'lib/debci/admin.rb', line 134
def order
current_model_info.order || :id
end
|
#parse(field, value) ⇒ Object
158
159
160
161
162
163
164
165
|
# File 'lib/debci/admin.rb', line 158
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
167
168
169
170
171
172
173
174
175
176
|
# File 'lib/debci/admin.rb', line 167
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
109
110
111
112
113
114
115
116
117
118
119
120
|
# File 'lib/debci/admin.rb', line 109
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
182
183
184
185
186
187
188
189
190
191
|
# File 'lib/debci/admin.rb', line 182
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
193
194
195
|
# File 'lib/debci/admin.rb', line 193
def search_fields
@search_fields ||= current_model_info.search_fields
end
|
#select_fields ⇒ Object
178
179
180
|
# File 'lib/debci/admin.rb', line 178
def select_fields
@select_fields ||= current_model_info.select_fields || []
end
|