motor-admin 0.2.27 → 0.2.31

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: acd8302f343dd0ce3ccad39dd408dc90e7582fb63133cf0abfb3fa1112899cb8
4
- data.tar.gz: 21dc6ca6b743b0499e8bf3b314465be503cfcc6ce789bd2653f8e278e72b38dc
3
+ metadata.gz: 8730558d792eeae0e0468acf367e89e7c9ff55e6fe59c64ff1b8f769fa04e554
4
+ data.tar.gz: 40b909df7e968eb8c26aa2e06704371ed8b4bebed4d0cf8fce26100cf64d8ad8
5
5
  SHA512:
6
- metadata.gz: c277ba2eee535baf91c0959d42187e76b0aff57cb24129c1d79917fca6259c2ed2a0b5f59b9fe289dbad1877fc17d7ea3bde2678cf686b5f98ecf558fbe0b0e6
7
- data.tar.gz: 3ff35c6aa910c27771f108dd9a6fbedb73efd57f5a16890ef8589fcce4d733f41b584a1a4f6e79faa9554e964e17eb2aa1ff1bc38655ed9c5acb2f9a3520e6ef
6
+ metadata.gz: d1259b8f633301feaef1d0d05e54a96d5c42e841769e556e1b5382c52375633d282ce502eb87829f9dc462267c1b8e4fe31ad5f6151044b1e4d2d734c422c87d
7
+ data.tar.gz: da7e9a7d859ebf45fc8ad8da2f8008cbf523ef6a3f53408d8cc31760113dfa7b459447184f14187934a627765995fc2ff83cb98571e7bec64d0a7b7d7d93f0ac
@@ -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?(@attachment.record)
13
- @attachment.record.public_send(@attachment.name).attach(file_params)
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=")
@@ -23,7 +23,8 @@ module Motor
23
23
  'citext' => 'string',
24
24
  'jsonb' => 'json',
25
25
  'bool' => 'boolean',
26
- 'timestamp' => 'datetime'
26
+ 'timestamp' => 'datetime',
27
+ 'timestamptz' => 'datetime'
27
28
  }.freeze
28
29
 
29
30
  module_function
@@ -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: true
118
+ visible: false
119
119
  }.with_indifferent_access
120
120
  end
121
121
  # rubocop:enable Metrics/MethodLength, Metrics/AbcSize
@@ -12,6 +12,7 @@ module Motor
12
12
  def call(model, cache_key:)
13
13
  configs = Motor::Configs::LoadFromCache.load_resources(cache_key: cache_key)
14
14
 
15
+ return model if model.name == 'ActiveStorage::Attachment'
15
16
  return model if configs.blank? || sti_model?(model)
16
17
 
17
18
  maybe_fetch_from_cache(
@@ -128,7 +129,11 @@ module Motor
128
129
 
129
130
  options = options.merge(config[:options] || {})
130
131
 
131
- klass.has_one(config[:name].to_sym, **options.symbolize_keys)
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
132
137
  end
133
138
 
134
139
  def configure_reflection_classes(klass, cache_key)
@@ -143,9 +148,11 @@ module Motor
143
148
  ref_dup.instance_variable_set(:@klass, call(ref.klass, cache_key: cache_key))
144
149
  end
145
150
 
146
- klass._reflections[key] = ref_dup
151
+ klass.reflections[key] = ref_dup
147
152
  end
148
153
 
154
+ klass._reflections = klass.reflections
155
+
149
156
  klass
150
157
  end
151
158
 
@@ -157,11 +164,17 @@ module Motor
157
164
 
158
165
  filters = options.delete(:filters)
159
166
 
160
- if filters.present?
161
- klass.has_many(association[:name].to_sym, -> { filter(filters).tap(&:arel) }, **options.symbolize_keys)
162
- else
163
- klass.has_many(association[:name].to_sym, **options.symbolize_keys)
164
- end
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)
165
178
  end
166
179
  end
167
180
 
data/lib/motor/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Motor
4
- VERSION = '0.2.27'
4
+ VERSION = '0.2.31'
5
5
  end
@@ -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-9f6b19ff999e209e9d33.css.gz": "main-9f6b19ff999e209e9d33.css.gz",
2605
- "main-9f6b19ff999e209e9d33.js.LICENSE.txt": "main-9f6b19ff999e209e9d33.js.LICENSE.txt",
2606
- "main-9f6b19ff999e209e9d33.js.gz": "main-9f6b19ff999e209e9d33.js.gz",
2607
- "main.css": "main-9f6b19ff999e209e9d33.css",
2608
- "main.js": "main-9f6b19ff999e209e9d33.js"
2604
+ "main-bbd8f938004172b512b9.css.gz": "main-bbd8f938004172b512b9.css.gz",
2605
+ "main-bbd8f938004172b512b9.js.LICENSE.txt": "main-bbd8f938004172b512b9.js.LICENSE.txt",
2606
+ "main-bbd8f938004172b512b9.js.gz": "main-bbd8f938004172b512b9.js.gz",
2607
+ "main.css": "main-bbd8f938004172b512b9.css",
2608
+ "main.js": "main-bbd8f938004172b512b9.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.27
4
+ version: 0.2.31
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-20 00:00:00.000000000 Z
11
+ date: 2021-11-25 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-9f6b19ff999e209e9d33.css.gz
1529
- - ui/dist/main-9f6b19ff999e209e9d33.js.gz
1528
+ - ui/dist/main-bbd8f938004172b512b9.css.gz
1529
+ - ui/dist/main-bbd8f938004172b512b9.js.gz
1530
1530
  - ui/dist/manifest.json
1531
1531
  homepage:
1532
1532
  licenses: