Teach marc2sre.pl MFHD record ingest script to read a mapping of library names to OU IDs
The past approach required workarounds that weren't fun for a library
without in-house scripting expertise; this provides a straightforward
mapping approach with docs and a working sample. Which should be helpful
for all of the libraries that will go with the MFHD serials approach in
the future. Heh.
Switch to ingesting authority records automatically via database triggers
Taken largely from the existing approach for ingesting biblio records,
there is some duplication here that we could genericize. But for now,
we'll go with the working-but-separate approach to avoid introducing
badness into the relatively stable biblio ingest pipeline.
Also, move some of the existing authority-related functions out of
the metabib schema file and into 999.functions.global.sql.
Finally, the direct_ingest.pl script is no longer necessary for
ingest of authority records, either, so die in that case as well.
Provides way to export bibs with holdings
that have a large number of copies attached. Default
timeout remains 1 second when exporting bibs; increased
to 300 seconds when exporting holdings based on
empirical tests on a big database.
Have open-ils.circ.circulation.due_date.update return the circ instead of the circ id so that modified rows in Items Out refresh correctly, and have Items Out -> Edit Due Date, -> Renew with Specific Date, and -> Mark Claimed Returned use the date/timepicker dialog
When returning a list of bind variables: If a default_ or actual_value
is undefined for a given variable, leave it out of the JSON object
altogether, rather than create an entry with a JSON null for it.
That way the client can distinguish between an undefined value and
a value defined as null.
validate.tag.id_list: Return an empty list instead of 0 in the case of no matching records
This makes it a little easier to handle cases where there was no match,
rather than having to check to see if we have a scalar or a reference
to a list.
Improve auto-authority-control processing script:
* Prevent duplicate $0 subfields from being generated by multiple runs
* Provide more bib field/subfield -> auth field/subfield mappings
* Protect against missing bib->auth maps
* Correct --all option to actually retrieve all undeleted records
Be more relaxed about what we receive in Vandelay (a bad LDR/09 need not lead to complete misery)
If MARC::File::XML->as_xml_record() receives a record with anything other
than 'a' in LDR/09 position, it will try to run a MARC8-to-UTF8 conversion
on the record - even though the source file itself was XML and clearly
couldn't have been MARC8.
This code corrects the leader on the fly so that MARC::File::XML won't
try to convert it and throw a "wide character" warning, but the fix
means that something was wrong with the leader to begin with, so we also
write a warning to the log about the situation.
Also: add some links to the IDL, that should have been there
in the first place.
M Open-ILS/include/openils/oils_buildq.h
M Open-ILS/src/c-apps/oils_storedq.c
M Open-ILS/src/c-apps/buildSQL.c
M Open-ILS/src/sql/Pg/002.schema.config.sql
M Open-ILS/src/sql/Pg/008.schema.query.sql
A Open-ILS/src/sql/Pg/upgrade/0336.schema.query-limit-offset-fkey.sql
M Open-ILS/examples/fm_IDL.xml
Stub script for adding authority control to an existing set of bibs
The goal of this script is to iterate over every bib record listed at
the command line (or --all) and check every controlled bib field for
matching subfield combinations in authority records. This is going to
be slow, friends, but for this iteration we're looking at paying a
one-time cost; after that, controlled fields will automatically be
maintained by triggers on the authority.record_entry tables.
The bib field-to-auth field mapping needs to be fleshed out (should
be comparable to the mapping in marcedit.js) and floating subdivisions
still need to be controlled. Probably in a separate pass over the bibs,
given the current "design".
We extend open-ils.s*.authority.validate.tag to offer an id_list() variant
so that we can get the corresponding authority record ID back from the
call, instead of just a count.
Add limit_count and offset_count columns to query.stored_query table.
M Open-ILS/src/sql/Pg/002.schema.config.sql
M Open-ILS/src/sql/Pg/008.schema.query.sql
A Open-ILS/src/sql/Pg/upgrade/0334.schema.query-limit-offset.sql
M Open-ILS/examples/fm_IDL.xml
Prevent MARC batch import from blindly trusting the user by checking LDR/06
With this commit, Vandelay will now check the leader of the incoming MARC
record to ensure that its MARC type matches the indicated import record
type. This is useful, for example, if you have a mixed set of bib & holdings
records that you want to import; you don't want to import the holdings records
as bib records.
This is a fairly strict implementation; we could relax this by turning the
check on its head and allowing the import as the user-indicated type as long
as the LDR/06 doesn't explicitly match another record type.
printing the contents of iframes is sometimes problematic, especially with complex DHTML, etc. This change allows content to define a printable_output() function for simple text to print instead of the rendered content itself
Create a new "materialized view" table, asset.opac_visible_copies,
for use during the copy visibility check during OPAC searches. This
is used by search.query_parser_fts(), replacing a check of a five-table
join for each bib in the search results that proved to be far
too slow on some large databases.
This table is maintained by triggers on inserts and updates to the
following tables:
Several fixes for authority-controlled field and control number syncing
The fix for maintain_control_numbers() was committed earlier, but wasn't
part of a new upgrade script; this will ensure that everyone following
trunk picks up the correction.
New feature: maintain control numbers (001, 003, 035) for MARC records
If a site wishes to maintain their control numbers and control number
identifiers in authority, bibliographic, and MFHD MARC records according
to the MARC21 specification, they will now be able to:
1. Enable the global flag 'cat.maintain_control_numbers' to turn on
control number maintenance. This is disabled by default, so no changes
will be made by the system until the flag is enabled.
2. (Optionally) Set the cat.marc_control_number_identifier OU setting
to override the control number identifier for records owned by that OU;
if this is not set, then the control number identifier defaults to the
OU shortname.
3. Set the owner field for the records that are to be controlled; otherwise
they will fall back to the global default which is currently hardcoded as
'EVRGRN'.
Initial support for wrapping long subfields in the MARC editor
Limitations of the current approach are that the line width is arbitrarily set
to break at 100 characters, and is only calculated on a per-subfield basis. So
if a given field contains 50 subfields, each with 90 characters, this commit
isn't going to help you. (But really... in that scenario, you're beyond help
anyway!)
Also, the double-dagger aligns itself at the top of the box rather than the
middle once the box goes into multiline mode, which is annoying; but long 505
fields that scroll ten screens to the right are more annoying, so I'll commit
this for now rather than waste more time trying to CSS it into shape.
SuperCat requests for plain marcxml were returning holdings / links
This could cause "great fun" in the MARC editor as a bib record suddenly
grew volume and xhtml:link elements; everything would spiral downward
from there.
r15562 contained a fix for this to rel_1_6_0, but apparently I never
forward-ported that "fix". Unfortunately, this leads to broken interfaces in
the i18n build (bug re-found by Robert Souilliere in the 1.6.1.1 release).
Fixes Mark Claimed Returned. It seems that dojo isn't the only library picky about ISO8601; DateTime::Format::ISO8601->parse_datetime was choking in this case
Reclaim cataloguing real estate by hiding unnecessary rows in fixed field grid editor
The fixed field grid editor currently shows blank rows for fixed field
attributes that don't apply to the currently displayed MARC record type. We
can hide these rows and offer more screen real estate for the MARC record
proper.
record the billing_last and billing_first fields from bill_cc_info.xul into cc_first_name and cc_last_name on money.credit_card_payment, even for out-of-band (externally processed) payments. Also protect the bill_cc_info dialog from patrons with no billing address (such as admin)
senator [Thu, 8 Jul 2010 15:11:24 +0000 (15:11 +0000)]
Acq: If you go from a catalog record to "View/Place orders", there are now
easy shortcuts for adding a new lineitem to a selection list or a PO if there
aren't already any existing lineitems to work with.
If there is a permacrud entry for the relevant action, but the list of
permissions is empty, we grant access.
The change: grant access as soon as the permission list can be known
to be empty, instead of doing a lot of irrelevant stuff first
(including extra database fetches in some cases).
instead of reading the MARC data directly from the socket, set the end-of-line character appropriately and read the data directly from STDIN. The 'wait' time is now only used as a security measure to prevent accidental hogging of worker processes
Enable plain up-arrow and down-arrow to jump to next row in MARC editor
As TAB/shift-TAB move between each editable element of the MARC record,
we already have fine-grained keyboard navigation. However, moving down
10 data fields requires around 50 TAB presses or more, depending on how
many subfields are in the intervening data fields, or a looonng hold of
the tab key; not good for RSI.
The up-arrow and down-arrow keys, then, move directly to the next or
previous row, placing the focus in the first editable subfield element
rather than in the tag name (under the assumption that cataloguers are
most likely to want to edit the contents of a given subfield, and not
the tag name or indicators).
Now, in the worst-case scenario, a cataloguer who wants to edit the tag
name of a field 10 rows below their current position will have to
make 14 key presses (10 down arrows, 4 shift-TABs). Not too shabby.
When checking a row for permissions, we often read a fresh copy of the
row in order to ensure that we have all the foreign keys that we need.
However in some cases (mainly when the class is a view), there is no
primary key, so we can't re-read the row.
Solution: if there is no primary key, don't try to do a fresh read.
Use the row image that we already have.
For these cases, this solution re-creates the possibility that we may
not have all the necessary columns. There's no good way around that
problem.
This CGI script might be useful for providing an easy way for EZproxy to authenticate users against an Evergreen instance.
For example, if you modify your eg_vhost.conf by adding this:
<Directory "/openils/var/cgi-bin/ezproxy">
AddHandler cgi-script .pl
AllowOverride None
Options +ExecCGI
allow from all
</Directory>
and make that directory and copy remoteauth.cgi to it:
mkdir /openils/var/cgi-bin/ezproxy/
cp remoteauth.cgi /openils/var/cgi-bin/ezproxy/
Then you could add a line like this to the users.txt of your EZproxy instance:
added OPAC support for 1) selecting SSL manually and having it stick and 2) forcing SSL when the user is logged in to protect auth tokens and other private data. The latter option is enabled via new apache env variable
showing the more descriptive cc payment errors in self-check. printing CC payment receipts from self-check. added a commented-out cc type picker for possible future use
added ability to tag bib record results from staged multiclass search as previously checked out by the user. the code compares search results to the set of circs in the user's visible circulations history. the ultimate goal is to provide the ability to style rows in search results so the patron can see if he/she already circulated the item (assuming some widget to turn this feature on/off for a search)