promethee 2.0.9 → 2.1.0

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: 89d94c8d1282c948884e23873c74e00fc72e658753f1eb8aa076ee9505446734
4
- data.tar.gz: 7a70a00e4894432b9f19a63a29d7d130eb3c6ab49ad261ba79dc68222311580c
3
+ metadata.gz: 1f1fb7feeef8b939218cbbc2bd2644ccb3b76b0521c37baeceee9cca88c29d4d
4
+ data.tar.gz: b69b7bfd8d5d3be2b84d67dfacebc25b0bc5605e53b85c2bf7653b2e50722317
5
5
  SHA512:
6
- metadata.gz: 6c8129394cc26e2721f115be0f3c47c3770803fdb4e3aefc44a3a300a738681a9c1045ee669a7bf0dd90b767119cde9715e6fd67fa0adc833f6d4e5db249e0aa
7
- data.tar.gz: 0ab966b48559b1760973314fdc792afa54c92af80e572e5f2e4702a01f1d527b3bcfe261ff9a54fae989641a5e4fc8a67b1ac9d50422031138262922fed856ae
6
+ metadata.gz: 26dbfc8ec99d7fd08d3cdfd8cff440fbd57a793ba68b8d412122f74c419fd4ed202c48c96623f6f3a3813764a1d735deb6c9074f126fa16cc8aab39463af510f
7
+ data.tar.gz: 7e5afc38246c53b7b2f5c484e37c0db6d5c780f5cf60e05675788b3c4ab193a7f5633cda23d68085ef195a96b7c6edfb73979d5f4857f374a032742a785c215b
@@ -17,7 +17,17 @@ class PrometheeController < ApplicationController
17
17
 
18
18
  def blob_show
19
19
  # as this is called only from promethee preview it sends an image resized to 720
20
- blob = ActiveStorage::Blob.find params[:id]
20
+ blob_id = params[:id]
21
+ if blob_id.to_i.to_s == blob_id
22
+ blob = ActiveStorage::Blob.find(blob_id)
23
+ else
24
+ begin
25
+ blob = ActiveStorage::Blob.find_signed(blob_id)
26
+ rescue
27
+ raise ActiveRecord::RecordNotFound
28
+ end
29
+ end
30
+
21
31
  if blob.image? && blob.variable?
22
32
  redirect_to url_for(blob.variant(resize: '720>'))
23
33
  elsif blob.video?
@@ -0,0 +1,67 @@
1
+ module Promethee
2
+ class BlobUpgradeService
3
+ attr_accessor :objects
4
+
5
+ def initialize(model_name)
6
+ begin
7
+ model_class = model_name.constantize
8
+ objects = model_class.all
9
+ rescue
10
+ puts 'Please provide a valid model name (e.g. `rake promethee:upgrade_blob_data[Page]`)'
11
+ exit
12
+ end
13
+ @objects = objects
14
+ end
15
+
16
+ def start
17
+ puts '= START BLOB UPGRADE ='
18
+ puts "Number of objects: #{@objects.count}"
19
+ @objects.each do |object|
20
+ puts "Processing object ##{object.id}"
21
+
22
+ object.data = upgrade_component(object.data.deep_symbolize_keys)
23
+ object.save
24
+ puts "End processing object ##{object.id}"
25
+ end
26
+ puts '====== END UPGRADER ========'
27
+ end
28
+
29
+ private
30
+
31
+ def upgrade_component(component)
32
+ component[:attributes] = upgrade_attribute(component[:attributes]) unless component[:attributes].nil?
33
+ component[:children].map { |child_component|
34
+ upgrade_component(child_component)
35
+ } unless component[:children].nil?
36
+
37
+ component
38
+ end
39
+
40
+ def upgrade_attribute(attribute_value)
41
+ return upgrade_blob_data(attribute_value) if is_blob_data?(attribute_value)
42
+
43
+ if attribute_value.is_a? Array
44
+ attribute_value.map { |item| upgrade_attribute(item) }
45
+ elsif attribute_value.is_a? Hash
46
+ attribute_value.map { |key, value| [key, upgrade_attribute(value)] }.to_h
47
+ else
48
+ attribute_value
49
+ end
50
+ end
51
+
52
+ def upgrade_blob_data(blob_data)
53
+ new_blob_data = blob_data.dup
54
+ blob_id = new_blob_data[:id]
55
+ return new_blob_data unless blob_id.present? && blob_id.is_a?(Integer)
56
+
57
+ blob = ActiveStorage::Blob.find_by(id: blob_id)
58
+ new_blob_data[:id] = blob.signed_id unless blob.nil?
59
+
60
+ new_blob_data
61
+ end
62
+
63
+ def is_blob_data?(hash)
64
+ hash.is_a?(Hash) && hash.keys == [:id, :name]
65
+ end
66
+ end
67
+ end
@@ -7,7 +7,7 @@ module Promethee
7
7
  model_class = model_name.constantize
8
8
  objects = model_class.all.select { |page| page.data&.to_json&.include? '"type":"table"' }
9
9
  rescue
10
- puts 'Please provide a valid model name (e.g. `rake promethee:clean_localizations[Page]`)'
10
+ puts 'Please provide a valid model name (e.g. `rake promethee:upgrade_table[Page]`)'
11
11
  exit
12
12
  end
13
13
  @objects = objects
@@ -23,7 +23,7 @@ module Promethee
23
23
  object.save
24
24
  puts "End processing object ##{object.id}"
25
25
  end
26
- puts '====== END CLEANER ========'
26
+ puts '====== END UPGRADER ========'
27
27
  end
28
28
 
29
29
  private
@@ -1,5 +1,5 @@
1
1
  module Promethee
2
2
  module Rails
3
- VERSION = '2.0.9'
3
+ VERSION = '2.1.0'
4
4
  end
5
5
  end
@@ -12,4 +12,10 @@ namespace :promethee do
12
12
  service.start
13
13
  end
14
14
 
15
+ desc "Upgrade blob data from IDs to signed IDs"
16
+ task :upgrade_blob_data, [:model_name] => :environment do |task, args|
17
+ service = Promethee::BlobUpgradeService.new(args[:model_name])
18
+ service.start
19
+ end
20
+
15
21
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: promethee
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.9
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sébastien Gaya
@@ -14,7 +14,7 @@ authors:
14
14
  autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
- date: 2019-10-02 00:00:00.000000000 Z
17
+ date: 2019-10-03 00:00:00.000000000 Z
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
20
  name: rails
@@ -191,6 +191,7 @@ files:
191
191
  - app/assets/stylesheets/promethee.sass
192
192
  - app/controllers/promethee_controller.rb
193
193
  - app/models/concerns/promethee_data.rb
194
+ - app/services/promethee/blob_upgrade_service.rb
194
195
  - app/services/promethee/localize_clean_service.rb
195
196
  - app/services/promethee/table_upgrade_service.rb
196
197
  - app/views/promethee/_edit.html.erb