EPrints Technical Mailing List Archive
See the EPrints wiki for instructions on how to join this mailing list and related information.
Message: #04998
< Previous (by date) | Next (by date) > | < Previous (in thread) | Next (in thread) > | Messages - Most Recent First | Threads - Most Recent First
[EP-tech] Re: Data object validation; $for_archive
- To: "eprints-tech@ecs.soton.ac.uk" <eprints-tech@ecs.soton.ac.uk>
- Subject: [EP-tech] Re: Data object validation; $for_archive
- From: John Salter <J.Salter@leeds.ac.uk>
- Date: Fri, 23 Oct 2015 11:00:56 +0000
Hi, Looking deeper into this, I have discovered that there is a trigger 'EP_TRIGGER_VALIDATE' which is defined in perl_lib/EPrints/Const.pm, but not actually called anywhere*. I think that the best way forward for this would be to create this trigger, and use that to call {dataobj}_validate routines. In digging around with this, I have discovered some other redundant code (e.g. references to workflow_staff) that I'll make a pull request to remove. *There is also EP_TRIGGER_VALIDATE_FIELD that is used in perl_lib/EPrints/MetaField.pm. Cheers, John PS Sorry to hear you're leaving - see you in the JISC arena sometime! -----Original Message----- From: eprints-tech-bounces@ecs.soton.ac.uk [mailto:eprints-tech-bounces@ecs.soton.ac.uk] On Behalf Of Field A.N. Sent: 21 October 2015 11:01 To: eprints-tech@ecs.soton.ac.uk Subject: [EP-tech] Re: Data object validation; $for_archive I'm not certain that eprint_validate would stop staff from depositing (happy to be corrected on this). The only thing I can think of while jumping up and down on the problem in my head for five minutes is to modify the allow_move_archive function in the EPrints::Move screen plugin. sub allow_move_archive { my( $self ) = @_; #hook to control moving to archive my $repo = $self->repository; if ( $repo->can_call('local_allow_move_archive') && ( $repo->call('local_allow_move_archive',$repo, $self->{processor}->{eprint}) == 0 ) ) { return 0; } return 0 unless $self->could_obtain_eprint_lock; return $self->allow( "eprint/move_archive" ); } Then in a cfg.d file: $c->{local_allow_move_archive} = sub { my ($repo, $eprint) = @_; if ( $eprint->value('type') eq 'thesis' && !$eprint->is_set('magic_field') ) { return 0; } return 1; } If you prefer, you could subclass the plugin instead, to avoid modifying the core file. Run your checks and call the superclass allow_move_archive. Then use plugins.pl to switch your new one in. -- Adam Field Business Relationship Manager and Community Lead EPrints Services +44 (0)23 8059 8814 On 21 Oct 2015, at 10:38, John Salter wrote: > OK - that makes me think it's not actually doing anything :o\ > > What I'm trying to achieve is to stop something being made live when a set of conditions are not met. > The conditions are set in the eprint_validate (and/or document_validate) routine, and (would, if it worked) check the 'for_archive' flag to provide a level of editorial control. > In the specific case, a thesis needs some faculty/department sign off. The student MUST be able to submit it (inbox->buffer), but the editor MUST NOT be able to make it live until the appropriate fields are complete. > > Cheers, > John > > -----Original Message----- > From: eprints-tech-bounces@ecs.soton.ac.uk [mailto:eprints-tech-bounces@ecs.soton.ac.uk] On Behalf Of Field A.N. > Sent: 21 October 2015 09:57 > To: eprints-tech@ecs.soton.ac.uk > Subject: [EP-tech] Re: Data object validation; $for_archive > > > I spent 15 minutes trying to track it through the code, and met with little success, I'm afraid. > > https://github.com/eprints/eprints/blob/de3b8d19f310efdbd993d07e9dfd57a15e103354/perl_lib/EPrints/Plugin/Screen/EPrint/Deposit.pm#L88 > > ...implies that it's set on the screen processor, but I couldn't find anywhere where it's actually set. > > > One cheeky alternative: you could check eprint_status and if it's in the buffer, you can guess it's going to be live soon. > > -- > Adam Field > Business Relationship Manager and Community Lead > EPrints Services > +44 (0)23 8059 8814 > > > > > > On 20 Oct 2015, at 17:37, John Salter wrote: > >> Hi, >> I'm trying to work out how the '$for_archive' flag works when validating EPrints (I suspect it doesn’t, but am hoping to be proved wrong. I want to use this feature). >> >> Starting here: https://github.com/eprints/eprints/blob/3.3/perl_lib/EPrints/DataObj.pm#L2046-L2047 >> The 'validate' method on a dataobject can take a '$for_archive' flag. >> This *should* be set as true when the item is about to be moved into the live archive. >> >> It is referenced in many places - passed method-to-method, but as far as I can tell, this value is not set anywhere (and therefore is never true). >> https://github.com/eprints/eprints/search?q=for_archive >> >> Can anyone help me trace it through the EPrints code, and confirm that it is or isn't used (especially at the point where an EPrint is made live)? >> >> The comments https://github.com/eprints/eprints/blob/3.3/lib/defaultcfg/cfg.d/eprint_validate.pl#L13-L14 >> refer to 'comments at the start of the validation section'. >> I think these were carried over from Eprints2 days when all the validation routines were in one place: http://www.eprints.org/files/eprints2/eprints-2.2/defaultcfg/ArchiveValidateConfig.pm >> >> # $for_archive is a boolean flag (1 or 0) it is set to 0 when the >> # item is being validated as a submission and to 1 when the item is >> # being validated for submission to the actual archive. This allows >> # a stricter validation for editors than for submitters. A useful >> # example would be that a deposit may have one of several format of >> # documents but the editor must ensure that it has a PDF before it >> # can be submitted into the main archive. If it doesn't have a PDF >> # file, then the editor will have to generate one. >> >> Also in Eprints2, this is where the 'for_archive' gets set: >> http://www.eprints.org/files/eprints2/eprints-2.2/perl_lib/EPrints/SubmissionForm.pm, Line 129 >> >> Cheers, >> John >> >> *** Options: http://mailman.ecs.soton.ac.uk/mailman/listinfo/eprints-tech >> *** Archive: http://www.eprints.org/tech.php/ >> *** EPrints community wiki: http://wiki.eprints.org/ >> *** EPrints developers Forum: http://forum.eprints.org/ > > > *** Options: http://mailman.ecs.soton.ac.uk/mailman/listinfo/eprints-tech > *** Archive: http://www.eprints.org/tech.php/ > *** EPrints community wiki: http://wiki.eprints.org/ > *** EPrints developers Forum: http://forum.eprints.org/ > > *** Options: http://mailman.ecs.soton.ac.uk/mailman/listinfo/eprints-tech > *** Archive: http://www.eprints.org/tech.php/ > *** EPrints community wiki: http://wiki.eprints.org/ > *** EPrints developers Forum: http://forum.eprints.org/ *** Options: http://mailman.ecs.soton.ac.uk/mailman/listinfo/eprints-tech *** Archive: http://www.eprints.org/tech.php/ *** EPrints community wiki: http://wiki.eprints.org/ *** EPrints developers Forum: http://forum.eprints.org/
- References:
- [EP-tech] Data object validation; $for_archive
- From: John Salter <J.Salter@leeds.ac.uk>
- [EP-tech] Re: Data object validation; $for_archive
- From: "Field A.N." <af05v@ecs.soton.ac.uk>
- [EP-tech] Re: Data object validation; $for_archive
- From: John Salter <J.Salter@leeds.ac.uk>
- [EP-tech] Re: Data object validation; $for_archive
- From: "Field A.N." <af05v@ecs.soton.ac.uk>
- [EP-tech] Data object validation; $for_archive
- Prev by Date: [EP-tech] Re: Isn't there a dataset element when importing?
- Next by Date: [EP-tech] Re: Eprints-tech Digest, Vol 85, Issue 62
- Previous by thread: [EP-tech] Re: Data object validation; $for_archive
- Next by thread: [EP-tech] Error while starting HTTPD
- Index(es):