mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-09-12 08:04:34 +08:00
Merge pull request #8048 from artoscinote/ma_SCI_11295
Fix recording of asset authors when duplicating stuff and restoring versions [SCI-11295]
This commit is contained in:
commit
50240647cf
5 changed files with 18 additions and 7 deletions
|
@ -361,7 +361,8 @@ class AssetsController < ApplicationController
|
|||
when Step, Result
|
||||
new_asset = @asset.duplicate(
|
||||
new_name:
|
||||
"#{@asset.file.filename.base} (1).#{@asset.file.filename.extension}"
|
||||
"#{@asset.file.filename.base} (1).#{@asset.file.filename.extension}",
|
||||
created_by: current_user
|
||||
)
|
||||
|
||||
@asset.parent.assets << new_asset
|
||||
|
@ -416,6 +417,8 @@ class AssetsController < ApplicationController
|
|||
def restore_version
|
||||
render_403 unless VersionedAttachments.enabled?
|
||||
|
||||
@asset.last_modified_by = current_user
|
||||
|
||||
@asset.restore_file_version(params[:version].to_i)
|
||||
@asset.restore_preview_image_version(params[:version].to_i) if @asset.preview_image.attached?
|
||||
|
||||
|
@ -445,6 +448,8 @@ class AssetsController < ApplicationController
|
|||
@repository.team, nil, message_items)
|
||||
end
|
||||
|
||||
@asset.save!
|
||||
|
||||
render json: @asset.file.blob
|
||||
end
|
||||
|
||||
|
|
|
@ -145,10 +145,15 @@ class Asset < ApplicationRecord
|
|||
file&.blob&.content_type
|
||||
end
|
||||
|
||||
def duplicate(new_name: nil, include_file_versions: false)
|
||||
def duplicate(new_name: nil, include_file_versions: false, created_by: nil)
|
||||
new_asset = dup
|
||||
file.filename = new_name if new_name
|
||||
|
||||
if created_by
|
||||
new_asset.created_by = created_by
|
||||
new_asset.last_modified_by = created_by
|
||||
end
|
||||
|
||||
return unless new_asset.save
|
||||
|
||||
duplicate_file(new_asset, new_name: new_name, include_file_versions: include_file_versions)
|
||||
|
@ -163,7 +168,7 @@ class Asset < ApplicationRecord
|
|||
new_blob = ActiveStorage::Blob.create_and_upload!(
|
||||
io: tmp_file,
|
||||
filename: blob.filename,
|
||||
metadata: metadata || blob.metadata
|
||||
metadata: (metadata || blob.metadata)
|
||||
)
|
||||
|
||||
attach_method.call(new_blob)
|
||||
|
@ -194,6 +199,7 @@ class Asset < ApplicationRecord
|
|||
unless include_file_versions
|
||||
metadata.delete('version')
|
||||
metadata.delete('restored_from_version')
|
||||
metadata['created_by_id'] = to_asset.created_by_id
|
||||
end
|
||||
|
||||
duplicate_file_versions(to_asset) if include_file_versions
|
||||
|
|
|
@ -14,7 +14,7 @@ module VersionedAttachments
|
|||
__send__(name).attach(*args, **options)
|
||||
|
||||
new_blob = __send__(name).blob
|
||||
new_blob.metadata['created_by_id'] = last_modified_by_id
|
||||
new_blob.metadata['created_by_id'] ||= last_modified_by_id
|
||||
|
||||
# set version of current latest file if previous versions exist
|
||||
new_blob.save! and next unless __send__(:"previous_#{name.to_s.pluralize}").any?
|
||||
|
@ -36,7 +36,7 @@ module VersionedAttachments
|
|||
new_blob = ActiveStorage::Blob.create_and_upload!(
|
||||
io: tmp_file,
|
||||
filename: blob.filename,
|
||||
metadata: blob.metadata.merge({ 'restored_from_version' => version })
|
||||
metadata: blob.metadata.merge({ 'restored_from_version' => version, 'created_by_id' => last_modified_by_id })
|
||||
)
|
||||
|
||||
__send__(:"attach_#{name}_version", new_blob)
|
||||
|
|
|
@ -142,7 +142,7 @@ class Step < ApplicationRecord
|
|||
# "Shallow" Copy assets
|
||||
assets.each do |asset|
|
||||
new_asset = asset.dup
|
||||
new_asset.save!
|
||||
new_asset.update!(created_by: user, last_modified_by: user)
|
||||
new_step.assets << new_asset
|
||||
assets_to_clone << [asset.id, new_asset.id]
|
||||
end
|
||||
|
|
|
@ -25,7 +25,7 @@ module RepositoryActions
|
|||
private
|
||||
|
||||
def repository_asset_value_extra_attributes(value)
|
||||
new_asset = @cell.value.asset.duplicate
|
||||
new_asset = @cell.value.asset.duplicate(created_by: @user)
|
||||
value.asset = new_asset
|
||||
end
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue