]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/perlmods/OpenILS/Application/Vandelay.pm
permacrud, field_safe and sequence updates
[Evergreen.git] / Open-ILS / src / perlmods / OpenILS / Application / Vandelay.pm
1 package OpenILS::Application::Vandelay;
2 use OpenILS::Application;
3 use base qw/OpenILS::Application/;
4
5 use Unicode::Normalize;
6 use OpenSRF::EX qw/:try/;
7
8 use OpenSRF::AppSession;
9 use OpenSRF::Utils::SettingsClient;
10
11 use OpenILS::Utils::Fieldmapper;
12 use OpenILS::Utils::CStoreEditor qw/:funcs/;
13
14 use MARC::Record;
15 use MARC::File::XML;
16
17 use OpenILS::Utils::Fieldmapper;
18
19 use Time::HiRes qw(time);
20
21 use OpenSRF::Utils::Logger qw/:level/;
22 my $log = 'OpenSRF::Utils::Logger';
23
24 sub initialize {}
25 sub child_init {}
26
27 sub entityize {
28         my $self = shift;
29         my $stuff = shift;
30         my $form = shift;
31
32         if ($form eq 'D') {
33                 $stuff = NFD($stuff);
34         } else {
35                 $stuff = NFC($stuff);
36         }
37
38         $stuff =~ s/([\x{0080}-\x{fffd}])/sprintf('&#x%X;',ord($1))/sgoe;
39         return $stuff;
40 }
41
42 # --------------------------------------------------------------------------------
43 # Biblio ingest
44
45 sub create_bib_queue {
46         my $self = shift;
47         my $client = shift;
48         my $auth = shift;
49         my $name = shift;
50         my $owner = shift;
51         my $type = shift;
52         my $purpose = shift;
53
54         my $e = new_editor(authtoken => $auth, xact => 1);
55
56         return $e->die_event unless $e->checkauth;
57         return $e->die_event unless $e->allowed('CREATE_BIB_IMPORT_QUEUE', $owner);
58
59         my $queue = new Fieldmapper::vandelay::bib_queue();
60         $queue->name( $name );
61         $queue->owner( $owner );
62         $queue->queue_type( $type ) if ($type);
63         $queue->queue_purpose( $purpose ) if ($purpose);
64
65         my $new_id = $e->create_vandelay_bib_queue( $queue );
66         $e->die_event unless ($new_id);
67
68         $queue->id($new_id);
69         return $queue;
70 }
71 __PACKAGE__->register_method(  
72         api_name        => "open-ils.vandelay.bib_queue.create",
73         method          => "create_bib_queue",
74         api_level       => 1,
75         argc            => 3,
76 );                      
77
78
79 sub create_auth_queue {
80         my $self = shift;
81         my $client = shift;
82         my $auth = shift;
83         my $name = shift;
84         my $owner = shift;
85         my $type = shift;
86         my $purpose = shift;
87
88         my $e = new_editor(authtoken => $auth, xact => 1);
89
90         return $e->die_event unless $e->checkauth;
91         return $e->die_event unless $e->allowed('CREATE_AUTHORITY_IMPORT_QUEUE', $owner);
92
93         my $queue = new Fieldmapper::vandelay::authority_queue();
94         $queue->name( $name );
95         $queue->owner( $owner );
96         $queue->queue_type( $type ) if ($type);
97         $queue->queue_purpose( $purpose ) if ($purpose);
98
99         my $new_id = $e->create_vandelay_authority_queue( $queue );
100         $e->die_event unless ($new_id);
101
102         $queue->id($new_id);
103         return $queue;
104 }
105 __PACKAGE__->register_method(  
106         api_name        => "open-ils.vandelay.authority_queue.create",
107         method          => "create_auth_queue",
108         api_level       => 1,
109         argc            => 3,
110 );                      
111
112 sub add_record_to_bib_queue {
113         my $self = shift;
114         my $client = shift;
115         my $auth = shift;
116         my $queue = shift;
117         my $marc = shift;
118
119         my $e = new_editor(authtoken => $auth, xact => 1);
120
121         $queue = $e->retrieve_vandelay_bib_queue($queue)
122
123         return $e->die_event unless $e->checkauth;
124         return $e->die_event unless
125                 ($e->allowed('CREATE_BIB_IMPORT_QUEUE', undef, $queue) ||
126                  $e->allowed('CREATE_BIB_IMPORT_QUEUE', $queue->owner));
127
128         my $rec = new Fieldmapper::vandelay::queued_bib_record();
129         $rec->marc( $marc );
130         $rec->queue( $queue->id );
131
132         my $new_id = $e->create_vandelay_queued_bib_record( $rec );
133         $e->die_event unless ($new_id);
134
135         $rec->id($new_id);
136         return $rec;
137 }
138 __PACKAGE__->register_method(  
139         api_name        => "open-ils.vandelay.queued_bib_record.create",
140         method          => "add_record_to_bib_queue",
141         api_level       => 1,
142         argc            => 3,
143 );                      
144
145 sub add_record_to_authority_queue {
146         my $self = shift;
147         my $client = shift;
148         my $auth = shift;
149         my $queue = shift;
150         my $marc = shift;
151
152         my $e = new_editor(authtoken => $auth, xact => 1);
153
154         $queue = $e->retrieve_vandelay_authority_queue($queue)
155
156         return $e->die_event unless $e->checkauth;
157         return $e->die_event unless
158                 ($e->allowed('CREATE_AUTHORITY_IMPORT_QUEUE', undef, $queue) ||
159                  $e->allowed('CREATE_AUTHORITY_IMPORT_QUEUE', $queue->owner));
160
161         my $rec = new Fieldmapper::vandelay::queued_authority_record();
162         $rec->marc( $marc );
163         $rec->queue( $queue->id );
164
165         my $new_id = $e->create_vandelay_queued_authority_record( $rec );
166         $e->die_event unless ($new_id);
167
168         $rec->id($new_id);
169         return $rec;
170 }
171 __PACKAGE__->register_method(  
172         api_name        => "open-ils.vandelay.queued_authority_record.create",
173         method          => "add_record_to_authority_queue",
174         api_level       => 1,
175         argc            => 3,
176 );                      
177
178 sub process_marc {
179     my $r = shift;
180     my $cgi = new CGI;
181
182     my $auth = $cgi->param('ses') || $cgi->cookie('ses');
183
184     return Apache2::Const::FORBIDDEN unless verify_login($auth);
185
186     my $fingerprint = $cgi->param('fingerprint')
187     my $type = $cgi->param('type')
188     my $queue = $cgi->param('queue')
189
190     my $cache = new OpenSRF::Utils::Cache();
191
192     my $data = $cache->get_cache('vandelay_import_spool_' . $fingerprint);
193     $data = decode_base64($data);
194
195     print "Content-type: text/plain; charset=utf-8\n\n$data_fingerprint";
196
197     return Apache2::Const::OK;
198
199 }
200
201
202 1;
203