From d1982125279a342e1b897a8c65bb081b60b9b496 Mon Sep 17 00:00:00 2001 From: Adam Ploshay Date: Tue, 25 May 2021 18:46:32 -0400 Subject: [PATCH 1/4] [ESSI-1136] [ESSI-1341] Prepare fix for allinson_flex #61 --- .../allinson_flex/prepend_work_dynamic_schema.rb | 12 ++++++++++++ lib/extensions/allinson_flex_extensions.rb | 4 ++++ 2 files changed, 16 insertions(+) create mode 100644 lib/extensions/allinson_flex/prepend_work_dynamic_schema.rb diff --git a/lib/extensions/allinson_flex/prepend_work_dynamic_schema.rb b/lib/extensions/allinson_flex/prepend_work_dynamic_schema.rb new file mode 100644 index 000000000..f3f638668 --- /dev/null +++ b/lib/extensions/allinson_flex/prepend_work_dynamic_schema.rb @@ -0,0 +1,12 @@ +# frozen_string_literal: true + +module Extensions + module AllinsonFlex + module PrependWorkDynamicSchema + # unmodified method from allinson_flex, exhibiting issue #61 + def dynamic_schema + @dynamic_schema ||= ::AllinsonFlex::DynamicSchema.find_by_id(id: self.dynamic_schema_id) || self.dynamic_schema_service(update: true)&.dynamic_schema + end + end + end +end diff --git a/lib/extensions/allinson_flex_extensions.rb b/lib/extensions/allinson_flex_extensions.rb index 5596ade4b..045167db7 100644 --- a/lib/extensions/allinson_flex_extensions.rb +++ b/lib/extensions/allinson_flex_extensions.rb @@ -3,6 +3,10 @@ include AllinsonFlex::AdminSetBehavior end +Hyrax.config.registered_curation_concern_types.each do |klass| + klass.constantize.prepend Extensions::AllinsonFlex::PrependWorkDynamicSchema +end + # controllers Hyrax::Admin::PermissionTemplatesController.prepend Extensions::AllinsonFlex::PrependPermissionTemplatesController From 850e3eb8645b602ca688e225b1cc39b652b7ab93 Mon Sep 17 00:00:00 2001 From: Adam Ploshay Date: Tue, 25 May 2021 18:47:17 -0400 Subject: [PATCH 2/4] [ESSI-1136] [ESSI-1341] monkeypatch fix for allinson_flex #61 --- lib/extensions/allinson_flex/prepend_work_dynamic_schema.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/extensions/allinson_flex/prepend_work_dynamic_schema.rb b/lib/extensions/allinson_flex/prepend_work_dynamic_schema.rb index f3f638668..8cb935d71 100644 --- a/lib/extensions/allinson_flex/prepend_work_dynamic_schema.rb +++ b/lib/extensions/allinson_flex/prepend_work_dynamic_schema.rb @@ -3,9 +3,10 @@ module Extensions module AllinsonFlex module PrependWorkDynamicSchema - # unmodified method from allinson_flex, exhibiting issue #61 + # @todo remove after issue is resolved within allinson_flex + # modified from allinson_flex, to resolve issue #61 def dynamic_schema - @dynamic_schema ||= ::AllinsonFlex::DynamicSchema.find_by_id(id: self.dynamic_schema_id) || self.dynamic_schema_service(update: true)&.dynamic_schema + @dynamic_schema ||= ::AllinsonFlex::DynamicSchema.find_by(id: self.dynamic_schema_id) || self.dynamic_schema_service(update: true)&.dynamic_schema end end end From 741cc218343f658b2959dc0f8146e8ddcd386565 Mon Sep 17 00:00:00 2001 From: Adam Ploshay Date: Tue, 25 May 2021 19:23:11 -0400 Subject: [PATCH 3/4] [ESSI-1136] [ESSI-1342] Prepare fix for allinson_flex #63 --- .../prepend_work_dynamic_schema.rb | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/lib/extensions/allinson_flex/prepend_work_dynamic_schema.rb b/lib/extensions/allinson_flex/prepend_work_dynamic_schema.rb index 8cb935d71..3ad40f625 100644 --- a/lib/extensions/allinson_flex/prepend_work_dynamic_schema.rb +++ b/lib/extensions/allinson_flex/prepend_work_dynamic_schema.rb @@ -8,6 +8,23 @@ module PrependWorkDynamicSchema def dynamic_schema @dynamic_schema ||= ::AllinsonFlex::DynamicSchema.find_by(id: self.dynamic_schema_id) || self.dynamic_schema_service(update: true)&.dynamic_schema end + + # unmodified method from allinson_flex, exhibiting issue #63 + def initialize(attributes = nil, &_block) + init_internals + attributes = attributes.dup if attributes # can't dup nil in Ruby 2.3 + id = attributes && (attributes.delete(:id) || attributes.delete('id')) + @ldp_source = build_ldp_resource(id) + raise IllegalOperation, "Attempting to recreate existing ldp_source: `#{ldp_source.subject}'" unless ldp_source.new? + load_allinson_flex ## This is the new part + assign_attributes(attributes) if attributes + assert_content_model + load_attached_files + + yield self if block_given? + _run_initialize_callbacks + end + end end end From a87312b9260361b215f06225c55701e754f2007b Mon Sep 17 00:00:00 2001 From: Adam Ploshay Date: Tue, 25 May 2021 19:39:51 -0400 Subject: [PATCH 4/4] [ESSI-1136] [ESSI-1342] monkeypatch alinson_flex #63 --- lib/extensions/allinson_flex/prepend_work_dynamic_schema.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/extensions/allinson_flex/prepend_work_dynamic_schema.rb b/lib/extensions/allinson_flex/prepend_work_dynamic_schema.rb index 3ad40f625..4803f113d 100644 --- a/lib/extensions/allinson_flex/prepend_work_dynamic_schema.rb +++ b/lib/extensions/allinson_flex/prepend_work_dynamic_schema.rb @@ -9,13 +9,15 @@ def dynamic_schema @dynamic_schema ||= ::AllinsonFlex::DynamicSchema.find_by(id: self.dynamic_schema_id) || self.dynamic_schema_service(update: true)&.dynamic_schema end - # unmodified method from allinson_flex, exhibiting issue #63 + # @todo remove after issue is resolved within allinson_flex + # method from allinson_flex, to resolve issue #63 def initialize(attributes = nil, &_block) init_internals attributes = attributes.dup if attributes # can't dup nil in Ruby 2.3 id = attributes && (attributes.delete(:id) || attributes.delete('id')) @ldp_source = build_ldp_resource(id) raise IllegalOperation, "Attempting to recreate existing ldp_source: `#{ldp_source.subject}'" unless ldp_source.new? + self.dynamic_schema_id = attributes&.delete(:dynamic_schema_id) load_allinson_flex ## This is the new part assign_attributes(attributes) if attributes assert_content_model