-
Notifications
You must be signed in to change notification settings - Fork 124
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Valkyrize batch editing #6148
Valkyrize batch editing #6148
Conversation
a4d9643
to
338fc48
Compare
338fc48
to
9c1c3a6
Compare
44ba338
to
e47826f
Compare
Hydra works has this, and it will be nice to provide it to Wings users handling Valkyrie native models cast back to AF.
i don't know why these older tests run into LDP errors during setup after the rewrite in 361b113, but we don't want to use these factories in setup anyway. since the issue occurs before any production code is executed, it's safe to just refactor to setup using the Valkyrie based factories. we'll want to complete this refactor throughout this file anyway.
e47826f
to
d7a4196
Compare
* Fix transaction error undefined method `<' for nil:NilClass * Fix transaction error implicit conversion of Symbol into Integer. * Refactor to fix lint error with the Metrics/AbcSize cop.
d7a4196
to
6f3099a
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This does appear to work, and closes #4913.
I don't work in Hyrax much (once every..couple years?) so some of my comments probably come from just not knowing the code base really well. If so please just say so and I'll happily approve.
|
||
# Clean up form fields | ||
# @param form Hyrax::Froms::ResourceBatchEditForm | ||
def cleanup_form_fields(form) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Suggestion: Can we get a comment about why this is necessary? Why doesn't the form handle this somewhere? Does this mean the form's not useful outside of this controller?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i'm also curious about this.
it does seem like the form should handle these transformations.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am not sure what is the best way to handle it. The another way that we can try is to merge the submitted params to the resource attributes in form.validate(params). Please advice.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Action item: Fix this, I can take a look at it
@@ -10,7 +10,7 @@ class VisibilityPropagator | |||
# @return [#propagate] | |||
def self.for(source:) | |||
case source | |||
when Hyrax::WorkBehavior # ActiveFedora | |||
when ActiveFedora::Base # ActiveFedora |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Question: I missed it, where did this change?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The reason is that the monograph https://github.com/samvera/hyrax/blob/main/.dassie/app/models/monograph.rb model won't include Hyrax::WorkBehavior, which will cause tests related to visibility changes failed for fileset visibility propagating.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ah, the generated model doesn't include WorkBehavior
. it seems like the weird thing here is that the VisibilityCopyJob
is casting the valkyrie resource back to an AF::Base, even when use_valkyrie
is true
(?)
i think in the ideal case, both of the following would be true:
VisibilityCopyJob
should support works generated by Wings; being generous about the type check as proposed here seems good.- the
use_valkyrie
code path here would leverage valkyrie objects throughout.
i think it would be worth checking up about the second point as part of this work.
@@ -97,15 +116,15 @@ def destroy_batch | |||
end | |||
|
|||
def form_class | |||
Forms::BatchEditForm | |||
Hyrax.config.use_valkyrie? ? Forms::ResourceBatchEditForm : Forms::BatchEditForm |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nitpick: How's Hyrax feel about ternaries over explicit branches? We use an if/else above, should we use one here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if it's not being flagged by rubocop, i think we don't block on style.
on the other hand, i'm wondering if we could just drop all the old handling? if the valkyrie code path is working, do we need the opt-in?
|
||
# Returns a list of parameters we accept from the form | ||
# rubocop:disable Metrics/MethodLength | ||
def self.build_permitted_params |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Question: I just don't know much about hyrax forms anymore - if there's form objects with a restricted subset of fields, why do they also need to define their permitted params? Where's this get used - do all the form objects have these or is it something special about bulk edit?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@tpendragon you probably know more about this form setup than most of us. these are valkyrie ChangeSet
s.
i have the same question about why this is needed, and where it's used other than the tests below.
# override this method if you need to initialize more complex RDF assertions (b-nodes) | ||
# @return [Hash<String, Array>] the list of unique values per field | ||
def initialize_combined_fields | ||
# For each of the files in the batch, set the attributes to be the concatenation of all the attributes |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe a little comment about why I'd want it to do this?
end | ||
end | ||
|
||
def terms |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why is it okay to hard code these values? shouldn't they be derived from configuration?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Action item: See if we can use the model configurable fields. Pull @no-reply in if we get stuck with this.
include Hyrax::FormFields(:basic_metadata) | ||
|
||
self.required_fields = [] | ||
self.model_class = Hyrax.primary_work_type |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
does this form only support the primary work type?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No. It'll work for any models, even with a batch that mixes with different objects types. The model_class here is only served for retrieving a consistent param_key
for different object types.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We're going to merge this because it works and we're going to do an RC, and this feature hasn't worked really well in the past. We'll write a ticket for the adjustments we might want to do here.
The PR is to support batch editing while valkyrie is enabled. This can be tested under dassie (w/o valkyrie) and koppie.
@samvera/hyrax-code-reviewers