Dan Scott [Mon, 23 May 2011 14:16:16 +0000 (10:16 -0400)]
Update Lenny prereqs for MARC::Record 2.0.1+
2.0 requires MARC::Record 2.0.1+, and the packaged version of
MARC::Record is just 2.0.0. This causes mysterious failures of
various open-ils.search.biblio.* methods - so teach the prereq
installer to get a new enough version of MARC::Record on Lenny.
Aside: The juggling of prereqs in a single Makefile for multiple distros
is starting to get extremely complex, perhaps it's time to split them
out to a single Makefile per distro?
Dan Wells [Mon, 23 May 2011 13:38:22 +0000 (09:38 -0400)]
Apply Apache file expiration to the current official Javascript content type
At least on Ubuntu 10.04, Javascript files are generally delivered
with a Content-Type header of 'application/javascript', not
'application/x-javascript'. This change applies the much shorter
18 hour expiration to the affected files, rather than allowing them
to default to 1 month.
The action_trigger event def template for printing acq invoices was
syntatically broken. The collapse filter isn't important per se, but
it balances the extra [% END %] at the bottom of the template, and it
was there originally, and I see no reason not to put it back.
Incidentally, maybe the database upgrade script in the commit will be
the first in master to successfully use the new
evergreen.upgrade_deps_block_check() function ?
Fix a problem with open-ils.circ.holds.retrieve_all_from_title
Anoop Atre spotted this bug that's triggered by selecting "View Holds"
from "Actions for Selected Record" in the catalog seen through the staff
client.
Said method would error out like this:
[2011-05-20 10:04:03] open-ils.circ [ERR
:31866:CStoreEditor.pm:109:13058333633194115] editor[0|1] request error
open-ils.cstore.direct.serial.issuance.id_list.atomic :
{"subscription":[]} : Exception:
OpenSRF::DomainObject::oilsMethodException 2011-05-20T10:04:03
OpenILS::Utils::CStoreEditor
/openils/lib/perl5/OpenILS/Utils/CStoreEditor.pm:412 <500> Severe query
error -- see error log for more details
because when trying to gather issuance-type holds, it didn't properly test
whether there actually were any subscriptions and issuances related to
the bib record in question.
Add permission checking for updating and deleting volumes.
This addresses LP #784062 reported by Ben Shum, and I think others?
Creating volumes was already covered. The ability to delete volumes
without permission would be less often an issue in practice since you
would need permission to delete the volume's copies before you could
delete the volume itself.
Dan Scott [Tue, 17 May 2011 04:29:47 +0000 (00:29 -0400)]
LP#783486: Improve authority lookup performance
Testing showed that the two indexes added herein improve
authority lookup performance radically; on a 16 GB RAM
database server with 1.1M records, lookup times decreased
from 5500 ms to 0.223 ms. Recommended, would EXPLAIN ANALYZE
again.
dbwells [Fri, 13 May 2011 16:06:04 +0000 (16:06 +0000)]
A bevy of MFHD bug fixes (and test cases)
1) Remove hard-coded 'gap' text from format_part()
2) Honor $ypm## for chron_to_date() for annuals
3) Removed overly simple check on $w as digit
4) Allow for combined chronologies other than 2nd level
5) Make calendar changes trump $u counts
6) Honor issue restarts at calendar changes
7) Rudimentary support of $u counts for non-restarting issue numbering
8) Special interpretation of $yps for early winters (i.e. winter is the first season of the calendar year)
9) Teach chron_to_date() about early winters
The last two points deserve some special attention. A large number of journals consider 'Winter' to be the first season of the year, so Winter 2011 means (roughly) January 2011, not December 2011. However, there is no explicit way to indicate this in the standard, and also the code relies in many ways on the fact that 24 (chronology code for winter) is greater than 21 (code for spring). To work around this, we are interpreting a certain ambiguous pattern in a particular way. Specifically, if you set $w to a digit, then set $y to 'ps24,21,22,23' (or some variation with '24' as the first value), you will get this winter-first behavior. Also, the season is treated internally as '20' then converted to '24' when processing is completed.
dbs [Thu, 5 May 2011 18:41:20 +0000 (18:41 +0000)]
Use valid JSON in Dojo i18n for Searcher.js
Dojo i18n processing scripts require valid JSON (quoted keys in hashes),
even though Dojo itself is more relaxed and accepts unquoted keys. So,
do the i18n dance here.
Signed-off-by: Dan Scott <dscott@laurentian.ca>
git-svn-id: svn://svn.open-ils.org/ILS/branches/rel_2_0@20439 dcc99617-32d9-48b4-a31d-7c20da2025e4
dbs [Wed, 4 May 2011 04:44:08 +0000 (04:44 +0000)]
Change an ERROR to a DEBUG log message in mod_idlchunk
Reported by James Fournie at Sitka, this message was logged
as an error when it is simply a debug message; we drop the
level accordingly so that it will not appear in the Apache
logs during the normal course of operations.
Signed-off-by: Dan Scott <dan@coffeecode.net>
git-svn-id: svn://svn.open-ils.org/ILS/branches/rel_2_0@20399 dcc99617-32d9-48b4-a31d-7c20da2025e4
dbs [Tue, 3 May 2011 16:34:51 +0000 (16:34 +0000)]
Avoid data loss by setting MARC::Charset->assume_unicode(1)
When using MARC::File::XML, MARC::Charset is used to perform character
conversions; however, MARC::File::XML does not tell MARC::Charset that it is
handling Unicode data. If we do not tell MARC::Charset that it is handling
Unicode data, it can return an error which results in the loss of data
(typically a subfield containing one or more characters which MARC::Charset
does not have an equivalent mapping outside of Unicode).
This problem could be reproduced in authority_control_fields.pl with a
subfield like "von Hans-Christian Müơller" - when this subfield was encountered
without assume_unicode(1), a null string was returned for that subfield, and
if the record was written back to the database due to an authority match being
found in a different field, the only recourse was to restore the record from
auditor.biblio_record_entry_history. The same sort of problems could occur
for any other script or function that modifies the data being handed to it
using MARC::File::XML and BinaryEncoding => UTF8.
Signed-off-by: Dan Scott <dscott@laurentian.ca>
git-svn-id: svn://svn.open-ils.org/ILS/branches/rel_2_0@20387 dcc99617-32d9-48b4-a31d-7c20da2025e4
phasefx [Mon, 2 May 2011 14:06:36 +0000 (14:06 +0000)]
Fix bug and typo in stat cat editor
Specifically, disabling the ability to select a stat cat type on no permissions on current type.
If you don't have permissions on ASSET you could never get to ACTOR.
If you picked ACTOR without rights you couldn't get back to ASSET.
Also, re-enable the library selector and new buttons when you do change to one you can add for.
Author: Thomas Berezansky <tsbere@mvlc.org> Signed-off-by: Thomas Berezansky <tsbere@mvlc.org> Signed-off-by: Jason Etheridge <jason@esilibrary.com>
git-svn-id: svn://svn.open-ils.org/ILS/branches/rel_2_0@20373 dcc99617-32d9-48b4-a31d-7c20da2025e4
phasefx [Mon, 2 May 2011 13:21:38 +0000 (13:21 +0000)]
fix "undefined is in transit"
https://bugs.launchpad.net/evergreen/+bug/773528
---
Fix bug squashing of params in checkin_via_barcode2 in circ/util.js.
Author: Jason Stephenson <jstephenson@mvlc.org> Signed-off-by: Jason Stephenson <jstephenson@mvlc.org> Signed-off-by: Jason Etheridge <jason@esilibrary.com>
git-svn-id: svn://svn.open-ils.org/ILS/branches/rel_2_0@20370 dcc99617-32d9-48b4-a31d-7c20da2025e4
dbs [Sun, 1 May 2011 12:13:33 +0000 (12:13 +0000)]
Slight optimization for authority_control_fields.pl
Instead of creating two CStoreEditors per bib record, reuse the global
CStoreEditor for read operations; this way we only have to create a new
CStoreEditor if a record has fields to authorize.
Signed-off-by: Dan Scott <dan@coffeecode.net>
git-svn-id: svn://svn.open-ils.org/ILS/branches/rel_2_0@20358 dcc99617-32d9-48b4-a31d-7c20da2025e4
Consolidate on checking for integers for -full / -uris
The check for an integer when $flesh eq 'uris' was throwing errors
and breaking authority browsing; rather than complicating matters
further, use an explicit integer for the return value when the format
ends with "-uris" so that we can simply test for an integer value
greater than 0.
Signed-off-by: Dan Scott <dscott@laurentian.ca>
git-svn-id: svn://svn.open-ils.org/ILS/branches/rel_2_0@20337 dcc99617-32d9-48b4-a31d-7c20da2025e4
Prevent a MARC::File::XML error from killing authority_control_fields.pl batch
Continuing to make this script bullet-proof, MARC::File::XML cares deeply
about things like whether datafields have indicators and throws exceptions
that, if not caught, kill a processing script - like this one.
Borrowing the approach from marc_export, wrap the new_from_xml() call in
a try / otherwise block and roll on.
Signed-off-by: Dan Scott <dscott@laurentian.ca>
git-svn-id: svn://svn.open-ils.org/ILS/branches/rel_2_0@20334 dcc99617-32d9-48b4-a31d-7c20da2025e4
Hold, Transit, and Hold/Transit Slips used to suppress the printer dialog, but we lost that when we moved to templated slips. This adds a sticky Printer Prompt checkbox to Check In for controlling that behavior.
Setting print.always_print_silent to false is a bad thing, since it trumps gPrintSettings.printSilent, and will cause a print dialog regardless of Printer Prompt or Auto-Print checkboxes. Let's clear it instead when toggling it off, and if we find it lingering as false from past code, let's clear it then too.
Protect against errors returned by open-ils.search
If open-ils.search returns an error rather than a result, prevent
authority_control_fields.pl from bombing out completely; instead,
flag the problem in STDERR and move on to the next record.
Signed-off-by: Dan Scott <dscott@laurentian.ca>
git-svn-id: svn://svn.open-ils.org/ILS/branches/rel_2_0@20325 dcc99617-32d9-48b4-a31d-7c20da2025e4
Make authority_control_fields.pl resistant to database timeouts
LP 771237 describes how on an underpowered system, the work that
authority_control_fields.pl tries to do on a per-record basis may hit the
CStore default timeout of 6 seconds for a transaction and automatically
end the transaction, resulting in no work being committed once the script tries
to update the bibliographic record. Searching each controlled field for a
matching authority record can be costly in a database with millions of
authority records.
To enable the script to accomplish its work on underpowered test systems, use a
regular read-only CStoreEditor session to accomplish the lookups and create a
separate CStoreEditor session to issue the update in a transaction if required.
Signed-off-by: Dan Scott <dscott@laurentian.ca>
git-svn-id: svn://svn.open-ils.org/ILS/branches/rel_2_0@20313 dcc99617-32d9-48b4-a31d-7c20da2025e4
Add a space between TOC part and TOC title in OpenLibrary added content
In trunk/rel_2_1 we switched to layout.css for table of contents
styling. We'll keep it simpler for stable 2.0 and handle this
bugfix completely inline.
Disable Save Columns in xul holds interface when Hold Details is being viewed. https://bugs.launchpad.net/evergreen/+bug/691599 Not the best fix, but the quickest fix
Specifically, we prune subplans that contain no nodes (empty parens), and avoid dropping out of the top level query context when we encounter a close-paren.
Author: Thomas Berezansky <tsbere@mvlc.org> Signed-off-by: Thomas Berezansky <tsbere@mvlc.org> Signed-off-by: Jason Etheridge <jason@esilibrary.com>
git-svn-id: svn://svn.open-ils.org/ILS/branches/rel_2_0@20282 dcc99617-32d9-48b4-a31d-7c20da2025e4
Revert r20035 - restore default copy status for Fast Add to "Available"
As noted in https://bugs.launchpad.net/evergreen/+bug/756838, the default
status for "Fast Add" copies has been "Available" since release 1.6.1.0.
Changing the default in the middle of the 2.0 release series would likely
cause more confusion for those sites who appreciate the current Fast Add
behaviour, so this reverts the changes in r20035 and maintains the same
defaults as 1.6.1.0.
Note that in r20264, 2.1.0 will gain two new org unit settings that will
enable sites to control their preferred default copy status for the Fast Add
and Add Volume interfaces.
We went to the effort of extracting the translatable text from
950.data.seed-values.sql, but had not marked the fields as
translatable in the IDL. Now at least the out-of-the-box
fields and classes will easily be able to have translations.
Correct encoding issue with authority_control_fields.pl
Is there ever a time when MARC::File::XML would be invoked with
anything other than BinaryEncoding => 'utf-8'? Not here, at
least. Addresses LP# 764582.
* remove copyright, license verbiage, and C-style comment marking
from the comments; these can live in the SQL scripts
* updated several copyright headers
* minor improvements to documentation of a couple tables
We were 98% of the way there; now we no longer need to
cd into the same directory as the i18n testing scripts
to run them with meaningful output. Should be useful
for adding these to the CI server.
Must have asked this script to check JS files for valid entities
for a reason at some point in the dark past, but it couldn't have
been a very good reason; we're getting a false positive that needs
to be hushed now. Better to just stop looking for XML entities in
JavaScript.
Allow NULL "use restriction" fields for located URIs
The asset.uri.use_restriction field, which is really a sort of public notes
field for 856 fields, was grabbing the $u subfield (URL) as a sort of last-gasp
effort to give it some data. However, the effect was rather odd and led to
workarounds like Conifer's skin to avoid displaying the use restriction field
if its value was identical to the URL, etc.
Instead, stop grabbing $u and handle the case where use_restriction column is
NULL gracefully, just like the schema intended.
Delete ##URI## call numbers and uri_call_number_map entries on bib reingest
This approach will lead to some acn/auricnm ID inflation, but it works.
Addresses LP# 761130 (immortal ##URI## entries in asset.call_number) reported
by Ben Shum and LP# 761085 (cannot delete bib with ##URI## volumes) reported
by Jason Etheridge.
Protect dumb JavaScript engines from having to deal with actual Unicode
The holdings_xml format did not include an XML declaration, but adding that
as we do here still does not make the Firefox and Chromium JS engines capable
of consuming XML that contains Unicode content outside of the base ASCII
range.
So, we invoke entityize() to convert anything outside of the realm of
ASCII to XML entities. An alternative would be to invoke entityize() in
OpenILS::Application::SuperCat::unAPI::acn but it's not clear if that
would interfere with any other uses.
With this change, library names / copy location names with Unicode content
can be displayed correctly on the search results page.
At some point (r16750) we started doing a numeric comparison of
$flesh instead of just checking to see if $flesh was defined; this
returned false when $flesh == 'uris', preventing URIs from being
included in the marcxml-uris unAPI format.
This restores URIs to marcxml-uris and so we can revert the extra
BibTemplate call in rdetail_summary.xml.
Specify the holdings_xml unAPI format for URI calls
The unAPI marcxml-uris format is not returning URIs at the moment.
While we're getting that fixed, use the holdings_xml format to
get the URI job done; requires an extra JS call, but that's
better than not working at all.
Escape rather than filter SIMILAR TO metacharacters in patron crazy search
The filtering I introduced in r19983 was overly aggressive, and included
characters that weren't actually SIMILAR TO metacharacters. Instead, escape
each character, carefully going through the list of metacharacters listed at
http://www.postgresql.org/docs/8.4/interactive/functions-matching.html
Works for email addresses like "foo.bar+baz@example.com".
* used version from wiki, which provides same results as the
previous version but performs better on large databases
* now works without editing (a vacuum cannot run inside of a transaction)
* don't do vacuum full, just a regular vacuum analyze
Prevent patron search from returning horrible errors on regexian input
Add a utility method, _clean_regex_chars(), to filter common regex
characters out of input values. When these characters are passed to
database SIMILAR searches, strange things (generally ugly errors) can
happen - so filter them out.
Order was effectively random otherwise. Use case from at least
one library indicates this change, but doesn't preclude later work
to make the sort order more flexible.