motor-admin 0.2.26 → 0.2.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/controllers/motor/active_storage_attachments_controller.rb +11 -2
- data/lib/motor/active_record_utils/types.rb +2 -1
- data/lib/motor/build_schema/active_storage_attachment_schema.rb +1 -1
- data/lib/motor/build_schema/load_from_rails.rb +8 -1
- data/lib/motor/resources/fetch_configured_model.rb +34 -13
- data/lib/motor/version.rb +1 -1
- data/ui/dist/main-67a3a033614f741d7e27.css.gz +0 -0
- data/ui/dist/main-67a3a033614f741d7e27.js.gz +0 -0
- data/ui/dist/manifest.json +5 -5
- metadata +4 -4
- data/ui/dist/main-9f6b19ff999e209e9d33.css.gz +0 -0
- data/ui/dist/main-9f6b19ff999e209e9d33.js.gz +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b96359678dfc2ccb50d6cebf20b99ed6efaeec885d30d383df90d2e4aa160bba
|
4
|
+
data.tar.gz: e0e73cb8c5d252d4398711faa4004ff33ce3d79a1508444ecebd63f440eb0c9f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f2ad88a6c453842f627de489ce48f6ac8b68336e1cd19f149b76ec2e3fc0698666cc79273f6e43722b73bc3550f1e7594278234530dc474c031e5aebebee8ec6
|
7
|
+
data.tar.gz: 7ca8d4e20c4302f132c351514f94acfa593d97b6673106542f993d78dfc4e80c14d5c7e9e51a31e656319b521ecc19d5201e2692a9e5d701369532fc7d8fc152
|
@@ -9,8 +9,8 @@ module Motor
|
|
9
9
|
load_and_authorize_resource :attachment, class: 'ActiveStorage::Attachment', parent: false
|
10
10
|
|
11
11
|
def create
|
12
|
-
if attachable?(
|
13
|
-
|
12
|
+
if attachable?(record)
|
13
|
+
record.public_send(@attachment.name).attach(file_params)
|
14
14
|
|
15
15
|
head :ok
|
16
16
|
else
|
@@ -20,6 +20,15 @@ module Motor
|
|
20
20
|
|
21
21
|
private
|
22
22
|
|
23
|
+
def record
|
24
|
+
record_pk = @attachment.record.class.primary_key
|
25
|
+
|
26
|
+
Motor::Resources::FetchConfiguredModel.call(
|
27
|
+
@attachment.record.class,
|
28
|
+
cache_key: Motor::Resource.maximum(:updated_at)
|
29
|
+
).find_by(record_pk => @attachment.record[record_pk])
|
30
|
+
end
|
31
|
+
|
23
32
|
def attachable?(record)
|
24
33
|
record.respond_to?("#{@attachment.name}_attachment=") ||
|
25
34
|
record.respond_to?("#{@attachment.name}_attachments=")
|
@@ -115,7 +115,7 @@ module Motor
|
|
115
115
|
scopes: [],
|
116
116
|
actions: Motor::BuildSchema::Defaults.actions.reject { |e| e[:name] == 'edit' },
|
117
117
|
tabs: Motor::BuildSchema::Defaults.tabs,
|
118
|
-
visible:
|
118
|
+
visible: false
|
119
119
|
}.with_indifferent_access
|
120
120
|
end
|
121
121
|
# rubocop:enable Metrics/MethodLength, Metrics/AbcSize
|
@@ -116,13 +116,20 @@ module Motor
|
|
116
116
|
end
|
117
117
|
|
118
118
|
def build_table_column(column, model, default_attrs)
|
119
|
+
access_type =
|
120
|
+
if model.primary_key == column.name
|
121
|
+
ColumnAccessTypes::READ_ONLY
|
122
|
+
else
|
123
|
+
COLUMN_NAME_ACCESS_TYPES.fetch(column.name, ColumnAccessTypes::READ_WRITE)
|
124
|
+
end
|
125
|
+
|
119
126
|
{
|
120
127
|
name: column.name,
|
121
128
|
display_name: Utils.humanize_column_name(model.human_attribute_name(column.name)),
|
122
129
|
column_type: fetch_column_type(column, model),
|
123
130
|
column_source: ColumnSources::TABLE,
|
124
131
|
is_array: column.array?,
|
125
|
-
access_type:
|
132
|
+
access_type: access_type,
|
126
133
|
default_value: default_attrs[column.name],
|
127
134
|
validators: fetch_validators(model, column.name),
|
128
135
|
reference: nil,
|
@@ -5,11 +5,14 @@ module Motor
|
|
5
5
|
module FetchConfiguredModel
|
6
6
|
CACHE_HASH = HashWithIndifferentAccess.new
|
7
7
|
|
8
|
+
HAS_AND_BELONGS_TO_MANY_JOIN_MODEL_PREFIX = 'HABTM_'
|
9
|
+
|
8
10
|
module_function
|
9
11
|
|
10
12
|
def call(model, cache_key:)
|
11
13
|
configs = Motor::Configs::LoadFromCache.load_resources(cache_key: cache_key)
|
12
14
|
|
15
|
+
return model if model.name == 'ActiveStorage::Attachment'
|
13
16
|
return model if configs.blank? || sti_model?(model)
|
14
17
|
|
15
18
|
maybe_fetch_from_cache(
|
@@ -126,17 +129,16 @@ module Motor
|
|
126
129
|
|
127
130
|
options = options.merge(config[:options] || {})
|
128
131
|
|
129
|
-
|
132
|
+
if config[:model_name] == 'active_storage/attachment'
|
133
|
+
klass.has_one_attached config[:name].delete_suffix('_attachment').to_sym
|
134
|
+
else
|
135
|
+
klass.has_one(config[:name].to_sym, **options.symbolize_keys)
|
136
|
+
end
|
130
137
|
end
|
131
138
|
|
132
139
|
def configure_reflection_classes(klass, cache_key)
|
133
|
-
klass.
|
134
|
-
|
135
|
-
next unless ref.klass
|
136
|
-
next if ref.klass.anonymous?
|
137
|
-
rescue StandardError
|
138
|
-
next
|
139
|
-
end
|
140
|
+
klass._reflections.each do |key, ref|
|
141
|
+
next unless configure_reflection_class?(ref)
|
140
142
|
|
141
143
|
ref_dup = ref.dup
|
142
144
|
|
@@ -162,11 +164,17 @@ module Motor
|
|
162
164
|
|
163
165
|
filters = options.delete(:filters)
|
164
166
|
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
167
|
+
define_association(klass, association[:name], options, filters)
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
def define_association(klass, name, options, filters)
|
172
|
+
if options[:class_name] == 'ActiveStorage::Attachment'
|
173
|
+
klass.has_many_attached name.delete_suffix('_attachments').to_sym
|
174
|
+
elsif filters.present?
|
175
|
+
klass.has_many(name.to_sym, -> { filter(filters).tap(&:arel) }, **options.symbolize_keys)
|
176
|
+
else
|
177
|
+
klass.has_many(name.to_sym, **options.symbolize_keys)
|
170
178
|
end
|
171
179
|
end
|
172
180
|
|
@@ -203,6 +211,19 @@ module Motor
|
|
203
211
|
end
|
204
212
|
end
|
205
213
|
|
214
|
+
def configure_reflection_class?(ref)
|
215
|
+
begin
|
216
|
+
return false unless ref.klass
|
217
|
+
rescue StandardError
|
218
|
+
return false
|
219
|
+
end
|
220
|
+
|
221
|
+
return false if ref.klass.anonymous?
|
222
|
+
return false if ref.klass.name.demodulize.starts_with?(HAS_AND_BELONGS_TO_MANY_JOIN_MODEL_PREFIX)
|
223
|
+
|
224
|
+
true
|
225
|
+
end
|
226
|
+
|
206
227
|
def sti_model?(model)
|
207
228
|
!model.superclass.abstract_class && model.columns_hash[model.inheritance_column.to_s]
|
208
229
|
end
|
data/lib/motor/version.rb
CHANGED
Binary file
|
Binary file
|
data/ui/dist/manifest.json
CHANGED
@@ -2601,9 +2601,9 @@
|
|
2601
2601
|
"icons/zoom-out.svg.gz": "icons/zoom-out.svg.gz",
|
2602
2602
|
"icons/zoom-question.svg": "icons/zoom-question.svg",
|
2603
2603
|
"icons/zoom-question.svg.gz": "icons/zoom-question.svg.gz",
|
2604
|
-
"main-
|
2605
|
-
"main-
|
2606
|
-
"main-
|
2607
|
-
"main.css": "main-
|
2608
|
-
"main.js": "main-
|
2604
|
+
"main-67a3a033614f741d7e27.css.gz": "main-67a3a033614f741d7e27.css.gz",
|
2605
|
+
"main-67a3a033614f741d7e27.js.LICENSE.txt": "main-67a3a033614f741d7e27.js.LICENSE.txt",
|
2606
|
+
"main-67a3a033614f741d7e27.js.gz": "main-67a3a033614f741d7e27.js.gz",
|
2607
|
+
"main.css": "main-67a3a033614f741d7e27.css",
|
2608
|
+
"main.js": "main-67a3a033614f741d7e27.js"
|
2609
2609
|
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: motor-admin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.30
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pete Matsyburka
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-11-
|
11
|
+
date: 2021-11-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord-filter
|
@@ -1525,8 +1525,8 @@ files:
|
|
1525
1525
|
- ui/dist/icons/zoom-money.svg.gz
|
1526
1526
|
- ui/dist/icons/zoom-out.svg.gz
|
1527
1527
|
- ui/dist/icons/zoom-question.svg.gz
|
1528
|
-
- ui/dist/main-
|
1529
|
-
- ui/dist/main-
|
1528
|
+
- ui/dist/main-67a3a033614f741d7e27.css.gz
|
1529
|
+
- ui/dist/main-67a3a033614f741d7e27.js.gz
|
1530
1530
|
- ui/dist/manifest.json
|
1531
1531
|
homepage:
|
1532
1532
|
licenses:
|
Binary file
|
Binary file
|