diff --git a/app/models/upload.rb b/app/models/upload.rb index 30db046a1..a3358d078 100644 --- a/app/models/upload.rb +++ b/app/models/upload.rb @@ -92,15 +92,23 @@ class Upload < ApplicationRecord if file.present? media_file = MediaFile.open(file.tempfile) + media_asset = MediaAsset.upload!(media_file) + upload_media_asset = UploadMediaAsset.new(media_asset: media_asset, source_url: "file://#{file.original_filename}") + + update!(upload_media_assets: [upload_media_asset], status: "completed", media_asset_count: 1) elsif source.present? strategy = Sources::Strategies.find(source, referer_url) + image_url = strategy.image_url + page_url = strategy.page_url + media_file = strategy.download_file!(strategy.image_url) + media_asset = MediaAsset.upload!(media_file) + upload_media_asset = UploadMediaAsset.new(media_asset: media_asset, source_url: image_url, page_url: page_url) + + update!(upload_media_assets: [upload_media_asset], status: "completed", media_asset_count: 1) else raise "No file or source given" # Should never happen end - - media_asset = MediaAsset.upload!(media_file) - update!(media_assets: [media_asset], status: "completed", media_asset_count: 1) rescue Exception => e update!(status: "error", error: e.message) end diff --git a/script/fixes/102_fix_upload_media_asset_urls.rb b/script/fixes/102_fix_upload_media_asset_urls.rb new file mode 100755 index 000000000..8c6c69746 --- /dev/null +++ b/script/fixes/102_fix_upload_media_asset_urls.rb @@ -0,0 +1,22 @@ +#!/usr/bin/env ruby + +require_relative "base" + +UploadMediaAsset.includes(:upload, :media_asset).where(source_url: "").find_each do |uma| + upload = uma.upload + + if upload.source_strategy.present? + source_url = uma.upload.source_strategy.image_url + page_url = uma.upload.source_strategy.page_url + else + file_ext = uma.media_asset.file_ext + source_url = "file://unknown.#{file_ext}" + end + + raise "No source url for #{page_url}" if source_url.blank? + + uma.update_columns(source_url: source_url, page_url: page_url) + puts ({ upload_id: uma.upload.id, upload_media_asset_id: uma.id, source_url: source_url, page_url: page_url }).to_json +rescue Exception => e + puts ({ upload_id: uma.upload.id, upload_media_asset_id: uma.id, error: e.message }).to_json +end diff --git a/test/test_helpers/upload_test_helper.rb b/test/test_helpers/upload_test_helper.rb index eb06ed816..16dc7f959 100644 --- a/test/test_helpers/upload_test_helper.rb +++ b/test/test_helpers/upload_test_helper.rb @@ -19,8 +19,9 @@ module UploadTestHelper upload = Upload.last assert_response 201 - assert_operator(upload.media_assets.count, :>, 0) + assert_equal("", upload&.error.to_s) assert_equal("completed", upload.status) + assert_operator(upload.media_assets.count, :>, 0) upload end