[EP-tech] Re: Updating a compound multiple field
George Mamalakis
mamalos at eng.auth.gr
Fri Oct 2 15:53:36 BST 2015
Hi Martin,
I'm not sure I've tested it (I've used an API script to populate
compound fields (multilang fields in particular) where values were
stored using set_value() in the way you're mentioning), but if it
doesn't do so then it's API behaviour would be counter to the other
fields' behaviour.
My script was something like that:
use Data::Dumper;
my $ep = EPrints->new();
my $repo = $ep->repository( "myrepo" );
my $ds = $repo->dataset("archive");
my $list = $ds->search;
my $n = $list->count();
my @docs = $list->slice(0, $n);
foreach $d (@docs)
{
if ($d->is_set('ml_title'))
{
print "item with id " . $d->id . " has ml_title set\n";
} else {
if ($d->is_set('title'))
{
# print "Updating ml_title for eprint.id = " . $d->id . "\n";
my $tit = $d->get_value('title');
my @ml_tit = [ {lang=>'en', text=>$tit}, {lang=>'el',
text=>$tit} ];
# print Dumper(@ml_tit);
$d->set_value('ml_title', @ml_tit);
$d->commit();
}
}
}
I don't know, this may help you test your case...
On 02/10/2015 05:37 μμ, martin.braendle at id.uzh.ch wrote:
>
> Hi,
>
> just a short question: Am I assuming correctly if I update a compound
> multiple field with
>
> $dataobj->set_value( array of hashes )
>
> that the new values overwrite the existing ones and are not appended
> to the existing values?
>
> E.g. if I want to keep the existing values, I need to read them out
> first and create a merged array with the new values that I have to
> write back?
>
> Thanks,
>
> Martin
>
> --
> Dr. Martin Brändle
> Zentrale Informatik
> Universität Zürich
> Stampfenbachstr. 73
> CH-8006 Zürich
>
>
> *** 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/
--
George Mamalakis
IT and Security Officer,
Electrical and Computer Engineer (Aristotle Univ. of Thessaloniki),
PhD (Aristotle Univ. of Thessaloniki),
MSc (Imperial College of London)
School of Electrical and Computer Engineering
Aristotle University of Thessaloniki
phone number : +30 (2310) 994379
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ecs.soton.ac.uk/pipermail/eprints-tech/attachments/20151002/a3db12e4/attachment.html
More information about the Eprints-tech
mailing list