From 6050c78d28cf629021c9703f03201653553d8b33 Mon Sep 17 00:00:00 2001
From: Gyan Gupta <gyan@cottagelabs.com>
Date: Mon, 17 Mar 2025 19:06:23 +0530
Subject: [PATCH] fixes for issue 12 and 19 and also fixed importer

---
 hyrax/app/assets/javascripts/date_picker_options.js          | 2 +-
 .../app/helpers/hyrax/listeners/lifecycle_listener_helper.rb | 4 ++--
 hyrax/app/models/concerns/s3_file_handleable.rb              | 5 +++--
 hyrax/app/models/dataset.rb                                  | 1 +
 hyrax/config/metadata/crc1280_experiment.yaml                | 1 +
 hyrax/config/metadata/dataset.yaml                           | 1 +
 6 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/hyrax/app/assets/javascripts/date_picker_options.js b/hyrax/app/assets/javascripts/date_picker_options.js
index c101bba2..13a753bd 100644
--- a/hyrax/app/assets/javascripts/date_picker_options.js
+++ b/hyrax/app/assets/javascripts/date_picker_options.js
@@ -1,6 +1,6 @@
 Blacklight.onLoad(function() {
  // $.fn.datepicker.defaults.format = "dd/mm/yyyy";
- $("#complex_session_session_date_recorded").datepicker({
+ $('[data-provide="datepicker"]').datepicker({
   orientation: "bottom left"
 });
 });
diff --git a/hyrax/app/helpers/hyrax/listeners/lifecycle_listener_helper.rb b/hyrax/app/helpers/hyrax/listeners/lifecycle_listener_helper.rb
index 0611c960..714cce1a 100644
--- a/hyrax/app/helpers/hyrax/listeners/lifecycle_listener_helper.rb
+++ b/hyrax/app/helpers/hyrax/listeners/lifecycle_listener_helper.rb
@@ -44,8 +44,8 @@ module Hyrax
 
       def after_destroy_callbacks(object)
         case object.class.name
-        when 'Crc1280Experiment'
-          object.complex_subjects.destroy_all
+        when 'Crc1280Experiment', 'Dataset'
+          object.clear_s3_and_all_associated_objects
         when 'FileSet'
           destroy_set_meta_data(object)
         end
diff --git a/hyrax/app/models/concerns/s3_file_handleable.rb b/hyrax/app/models/concerns/s3_file_handleable.rb
index c7cc1580..73c40f99 100644
--- a/hyrax/app/models/concerns/s3_file_handleable.rb
+++ b/hyrax/app/models/concerns/s3_file_handleable.rb
@@ -18,7 +18,8 @@ module S3FileHandleable
     if self.class.in?([Dataset, Crc1280Experiment])
       bucket_name = s3.sanitise_name(ENV.fetch("S3_FILE_UPLOAD_BUCKET"))
       user = ::User.find_by_user_key(self.depositor)
-      s3.delete_bucket(bucket_name)
+      all_objects, size = s3.list_all_objects(bucket_name, self.id.to_s)
+      s3.delete_objects(bucket_name, all_objects.map { |obj| obj[:key] }) if all_objects.present?
       if self.class == Crc1280Experiment
         self.complex_subjects.destroy_all
       end
@@ -27,7 +28,7 @@ module S3FileHandleable
       user = ::User.find_by_user_key(self.crc1280_experiment.depositor)
       objects_prefix = objects_prefix(self, s3_folder_name)
       all_objects, size = s3.list_all_objects(bucket_name, objects_prefix)
-      s3.delete_objects(bucket_name, all_objects.map{|obj| obj[:key]})
+      s3.delete_objects(bucket_name, all_objects.map{|obj| obj[:key]}) if all_objects.present?
     end
 
     self.file_sets.each do |file_set|
diff --git a/hyrax/app/models/dataset.rb b/hyrax/app/models/dataset.rb
index c7290ef6..b12f4b88 100644
--- a/hyrax/app/models/dataset.rb
+++ b/hyrax/app/models/dataset.rb
@@ -13,6 +13,7 @@ class Dataset < Hyrax::Work
   include CommonWorksQuery
   include ::Hyrax::TombstoneBehavior
   include ExternalServices
+  include S3FileHandleable
 
   def default_admin_set
     AdminSetHelper.find_admin_set_by_property(title: [ENV.fetch('RUB_ADMIN_SET_TITLE', 'RUB publication workflow')])
diff --git a/hyrax/config/metadata/crc1280_experiment.yaml b/hyrax/config/metadata/crc1280_experiment.yaml
index 96e37370..15488802 100644
--- a/hyrax/config/metadata/crc1280_experiment.yaml
+++ b/hyrax/config/metadata/crc1280_experiment.yaml
@@ -49,6 +49,7 @@ attributes:
     predicate: http://www.example.com/vocabs/rdms/isTombstone
   format:
     type: string
+    multiple: true
     index_keys:
       - "format_ssim"
     predicate: http://www.example.com/vocabs/rdms/format
diff --git a/hyrax/config/metadata/dataset.yaml b/hyrax/config/metadata/dataset.yaml
index 13cd7a7e..45b71295 100644
--- a/hyrax/config/metadata/dataset.yaml
+++ b/hyrax/config/metadata/dataset.yaml
@@ -49,6 +49,7 @@ attributes:
     predicate: http://www.example.com/vocabs/rdms/isTombstone
   format:
     type: string
+    multiple: true
     index_keys:
       - "format_ssim"
     predicate: http://www.example.com/vocabs/rdms/format
-- 
GitLab