diff --git a/ruby/lib/jam_ruby/jam_track_importer.rb b/ruby/lib/jam_ruby/jam_track_importer.rb index 4e5b45ca0..89e376499 100644 --- a/ruby/lib/jam_ruby/jam_track_importer.rb +++ b/ruby/lib/jam_ruby/jam_track_importer.rb @@ -1206,9 +1206,9 @@ module JamRuby instrument_weight = nil # if there are any persisted tracks, do not sort from scratch; just stick new stuff at the end - if track.persisted? - instrument_weight = track.position - else + #if track.persisted? + # instrument_weight = track.position + #else if track.instrument_id == 'voice' if track.part && track.part.start_with?('Lead') @@ -1275,7 +1275,7 @@ module JamRuby if track.track_type == 'Click' instrument_weight = 10000 end - end + #end instrument_weight @@ -1336,19 +1336,10 @@ module JamRuby end end - # default to 1, but if there are any persisted tracks, this will get manipulated to be +1 the highest persisted track position = 1 sorted_tracks.each do |track| - if track.persisted? - # persisted tracks should be sorted at the beginning of the sorted_tracks, - # so this just keeps moving the 'position builder' up to +1 of the last persisted track - position = track.position + 1 - else - track.position = position - position = position + 1 - end - - + track.position = position + position = position + 1 end # get click/master tracks position re-set correctly @@ -1498,12 +1489,21 @@ module JamRuby deduplicate_parts(tracks) + changed = false tracks.each do |track| if track.changed? + changed = true puts "CHANGE: #{track.changes.inspect}" + track.skip_inst_part_uniq = true + track.save! end - if !track.save! - finish('invalid_audio', track.errors.inspect) + end + + if changed + # if we messed up any instrument/parts by making a dup, this will catch it + tracks.each do |track| + track.skip_inst_part_uniq = false + track.save! end end end @@ -1549,7 +1549,7 @@ module JamRuby track.instrument_id = parsed_wav[:instrument] || 'other' track.track_type = 'Track' - track.part = parsed_wav[:part] || "Other #{unknowns}" + track.part = parsed_wav[:part]; tracks << track elsif parsed_wav[:type] == :clicktxt file.file_type = 'ClickTxt' diff --git a/ruby/lib/jam_ruby/models/jam_track_track.rb b/ruby/lib/jam_ruby/models/jam_track_track.rb index 9a2426fe7..77938d0c3 100644 --- a/ruby/lib/jam_ruby/models/jam_track_track.rb +++ b/ruby/lib/jam_ruby/models/jam_track_track.rb @@ -19,7 +19,7 @@ module JamRuby attr_accessible :jam_track_id, :track_type, :instrument, :instrument_id, :position, :part, as: :admin attr_accessible :url_44, :url_48, :md5_44, :md5_48, :length_44, :length_48, :preview_start_time_raw, as: :admin - attr_accessor :original_audio_s3_path, :skip_uploader, :preview_generate_error, :wav_file, :tmp_duration + attr_accessor :original_audio_s3_path, :skip_uploader, :preview_generate_error, :wav_file, :tmp_duration, :skip_inst_part_uniq before_destroy :delete_s3_files @@ -27,7 +27,7 @@ module JamRuby validates :part, length: {maximum: 35} validates :track_type, inclusion: {in: TRACK_TYPE } validates :preview_start_time, numericality: {only_integer: true}, length: {in: 1..1000}, :allow_nil => true - validates_uniqueness_of :part, scope: [:jam_track_id, :instrument_id] + validates_uniqueness_of :part, scope: [:jam_track_id, :instrument_id], unless: :skip_inst_part_uniq # validates :jam_track, presence: true belongs_to :instrument, class_name: "JamRuby::Instrument"