mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-09-22 13:04:30 +08:00
Fix load protocol to task [SCI-8072] (#5070)
This commit is contained in:
parent
78c04a3ce0
commit
9379d9a175
5 changed files with 11 additions and 6 deletions
|
@ -530,7 +530,7 @@ class ProtocolsController < ApplicationController
|
|||
else
|
||||
@protocol.parent.parent
|
||||
end
|
||||
@protocol.update_from_parent(current_user, source_parent.latest_published_version)
|
||||
@protocol.update_from_parent(current_user, source_parent.latest_published_version_or_self)
|
||||
rescue StandardError
|
||||
transaction_error = true
|
||||
raise ActiveRecord::Rollback
|
||||
|
@ -813,7 +813,7 @@ class ProtocolsController < ApplicationController
|
|||
|
||||
# Create folder and xml file for each protocol and populate it
|
||||
@protocols.each do |protocol|
|
||||
protocol = protocol.latest_published_version || protocol
|
||||
protocol = protocol.latest_published_version_or_self
|
||||
protocol_dir = get_guid(protocol.id).to_s
|
||||
ostream.put_next_entry("#{protocol_dir}/eln.xml")
|
||||
ostream.print(generate_protocol_xml(protocol))
|
||||
|
@ -1173,7 +1173,7 @@ class ProtocolsController < ApplicationController
|
|||
def check_clone_permissions
|
||||
load_team_and_type
|
||||
protocol = Protocol.find_by(id: params[:ids][0])
|
||||
@original = protocol.latest_published_version || protocol
|
||||
@original = protocol.latest_published_version_or_self
|
||||
|
||||
if @original.blank? ||
|
||||
!can_clone_protocol_in_repository?(@original) || @type == :archive
|
||||
|
@ -1251,7 +1251,7 @@ class ProtocolsController < ApplicationController
|
|||
|
||||
def check_load_from_repository_permissions
|
||||
@protocol = Protocol.find_by(id: params[:id])
|
||||
@source = Protocol.find_by(id: params[:source_id])&.latest_published_version
|
||||
@source = Protocol.find_by(id: params[:source_id])&.latest_published_version_or_self
|
||||
|
||||
render_403 unless @protocol.present? && @source.present? &&
|
||||
(can_manage_protocol_in_module?(@protocol) &&
|
||||
|
|
|
@ -144,6 +144,7 @@ class ProtocolsDatatable < CustomDatatable
|
|||
.select(:id)
|
||||
published_versions = @team.protocols
|
||||
.where(protocol_type: Protocol.protocol_types[:in_repository_published_version])
|
||||
.order(:parent_id, version_number: :desc)
|
||||
.select('DISTINCT ON (parent_id) id')
|
||||
new_drafts = @team.protocols
|
||||
.where(protocol_type: Protocol.protocol_types[:in_repository_draft], parent_id: nil)
|
||||
|
|
|
@ -260,6 +260,10 @@ class Protocol < ApplicationRecord
|
|||
in_repository_draft? && parent.blank?
|
||||
end
|
||||
|
||||
def latest_published_version_or_self
|
||||
latest_published_version || self
|
||||
end
|
||||
|
||||
def permission_parent
|
||||
in_module? ? my_module : team
|
||||
end
|
||||
|
|
|
@ -27,7 +27,7 @@ module ProtocolsExporter
|
|||
envelope_xml = "<envelope xmlns=\"http://www.scinote.net\" " \
|
||||
"version=\"1.0\">\n"
|
||||
protocols.each do |protocol|
|
||||
protocol = protocol.latest_published_version || protocol
|
||||
protocol = protocol.latest_published_version_or_self
|
||||
protocol_name = get_protocol_name(protocol)
|
||||
envelope_xml << "<protocol id=\"#{protocol.id}\" " \
|
||||
"guid=\"#{get_guid(protocol.id)}\">#{protocol_name}" \
|
||||
|
|
|
@ -9,7 +9,7 @@ module ProtocolsExporterV2
|
|||
envelope_xml = "<envelope xmlns=\"http://www.scinote.net\" " \
|
||||
"version=\"1.1\">\n"
|
||||
protocols.each do |protocol|
|
||||
protocol = protocol.latest_published_version || protocol
|
||||
protocol = protocol.latest_published_version_or_self
|
||||
protocol_name = get_protocol_name(protocol)
|
||||
envelope_xml << "<protocol id=\"#{protocol.id}\" " \
|
||||
"guid=\"#{get_guid(protocol.id)}\">#{protocol_name}" \
|
||||
|
|
Loading…
Add table
Reference in a new issue