]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/support-scripts/badge_score_generator.pl
LP1615805 No inputs after submit in patron search (AngularJS)
[Evergreen.git] / Open-ILS / src / support-scripts / badge_score_generator.pl
1 #!/usr/bin/perl
2 # ---------------------------------------------------------------------
3 # Badge score generator
4 # ./badge_score_generator.pl <bootstrap_config> <lockfile>
5 # ---------------------------------------------------------------------
6
7 use strict; 
8 use warnings;
9 use OpenSRF::Utils::JSON;
10 use OpenSRF::System;
11 use OpenSRF::Utils::SettingsClient;
12 use OpenSRF::MultiSession;
13
14 my $config = shift || die "bootstrap config required\n";
15 my $lockfile = shift || "/tmp/generate_badge_scores-LOCK";
16
17 if (-e $lockfile) {
18         open(F,$lockfile);
19         my $pid = <F>;
20         close F;
21
22         open(F,'/bin/ps axo pid|');
23         while ( my $p = <F>) {
24                 chomp($p);
25                 if ($p =~ s/\s*(\d+)$/$1/o && $p == $pid) {
26                         die "I seem to be running already at pid $pid.  If not, try again\n";
27                 }
28         }
29         close F;
30 }
31
32 open(F, ">$lockfile");
33 print F $$;
34 close F;
35
36 OpenSRF::System->bootstrap_client( config_file => $config );
37 my $settings = OpenSRF::Utils::SettingsClient->new;
38 my $parallel = $settings->config_value( badge_score_generator => 'parallel' ) || 1; 
39
40 my $multi_generator = OpenSRF::MultiSession->new(
41     app => 'open-ils.cstore', 
42     cap => $parallel, 
43     api_level => 1,
44 );
45
46 my $storage = OpenSRF::AppSession->create("open-ils.storage");
47 my $r = $storage->request('open-ils.storage.biblio.regenerate_badge_list');
48
49 while (my $resp = $r->recv) {
50     my $badge_id = $resp->content;
51     $multi_generator->request(
52         'open-ils.cstore.json_query',
53         { from => [ 'rating.recalculate_badge_score' => $badge_id ] }
54     );
55 }
56 $storage->disconnect();
57 $multi_generator->session_wait(1);
58 $multi_generator->disconnect;
59
60 unlink $lockfile;