From 891efc6ce370e6240809a90b12aac2dc43380611 Mon Sep 17 00:00:00 2001 From: jhs-panda Date: Wed, 20 Nov 2024 02:48:47 -0500 Subject: [PATCH 1/2] rename duplicate files if they exist (add _ver# at end) --- app/controllers/users_controller.rb | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index adcd6b0c4..7f87c5389 100755 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -189,6 +189,15 @@ def download_all_submissions temp_file = Tempfile.new("autolab_submissions.zip") Zip::File.open(temp_file.path, Zip::File::CREATE) do |zipfile| + # track counts of each file name + track_duplicate_counts = Hash.new(0) + submissions.each do |s| + entry_name = download_filename(s.handin_file_path, s.assessment.name) + track_duplicate_counts[entry_name] += 1 + end + + # track which version is being processed (for naming purposes) + filename_counts = Hash.new(0) submissions.each do |s| p = s.handin_file_path course_name = s.course_user_datum.course.name @@ -196,6 +205,14 @@ def download_all_submissions course_directory = "#{filename}/#{course_name}" assignment_directory = "#{course_directory}/#{assignment_name}" entry_name = download_filename(p, assignment_name) + filename_counts[entry_name] += 1 + # append version number to submission if more than one of same name + if track_duplicate_counts[entry_name] > 1 + version_suffix = "_ver#{filename_counts[entry_name]}" + extname = File.extname(entry_name) + basename = File.basename(entry_name, extname) + entry_name = "#{basename}#{version_suffix}#{extname}" + end zipfile.add(File.join(assignment_directory, entry_name), p) end end From 8329224366cd51fd82ca9e429fcfd2643df86964 Mon Sep 17 00:00:00 2001 From: Joy Song Date: Sun, 9 Feb 2025 10:32:23 -0500 Subject: [PATCH 2/2] Fixed bug to only add version name if exact path of files is the same --- app/controllers/users_controller.rb | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 7f87c5389..10136a20f 100755 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -192,8 +192,14 @@ def download_all_submissions # track counts of each file name track_duplicate_counts = Hash.new(0) submissions.each do |s| - entry_name = download_filename(s.handin_file_path, s.assessment.name) - track_duplicate_counts[entry_name] += 1 + p = s.handin_file_path + course_name = s.course_user_datum.course.name + assignment_name = s.assessment.name + course_directory = "#{filename}/#{course_name}" + assignment_directory = "#{course_directory}/#{assignment_name}" + entry_name = download_filename(p, assignment_name) + final_path = "#{assignment_directory}/#{entry_name}" + track_duplicate_counts[final_path] += 1 end # track which version is being processed (for naming purposes) @@ -205,10 +211,11 @@ def download_all_submissions course_directory = "#{filename}/#{course_name}" assignment_directory = "#{course_directory}/#{assignment_name}" entry_name = download_filename(p, assignment_name) - filename_counts[entry_name] += 1 + final_path = "#{assignment_directory}/#{entry_name}" + filename_counts[final_path] += 1 # append version number to submission if more than one of same name - if track_duplicate_counts[entry_name] > 1 - version_suffix = "_ver#{filename_counts[entry_name]}" + if track_duplicate_counts[final_path] > 1 + version_suffix = "_ver#{filename_counts[final_path]}" extname = File.extname(entry_name) basename = File.basename(entry_name, extname) entry_name = "#{basename}#{version_suffix}#{extname}"