Mike Rylander [Tue, 25 Jun 2013 14:03:36 +0000 (10:03 -0400)]
Preserve record order of subfields for authority heading extraction
When extracting headings from authority records we currently read the
subfields of a tag in configuration order. We should, instead, read
them in record order, to preserve the desired sorting properties that
the cataloger has encoded in the record.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Yamil Suarez <yamil@yamil.com>
Michael Peters [Thu, 5 Apr 2012 14:23:32 +0000 (10:23 -0400)]
LP#973666: Print Purchase Order does not print PO Name
Printing a PO from the menu option "Actions-->Print Purchase Order"
generates a document that displays the PO #, but not the PO Name. It
was suggested that it would be helpful if the print document
displayed the PO Name instead of, or in addition to, the PO #. This
commit adds the PO Name in the default template for new installs,
but does not affect upgrades.
Signed-off-by: Michael Peters <mrpeters@library.in.gov> Signed-off-by: Remington Steed <rjs7@calvin.edu> Signed-off-by: Dan Wells <dbw2@calvin.edu>
In the quest to not let staff put bad data into the system (losing battle,
but hey, gotta keep trying, right?), add a barcode regex specifically for
patron registration.
This intentionally does *not* check the opac "is this a barcode?" value.
Use cases for not checking that value include, but are not limited to:
Special "barcodes" for staff accounts. Specific OUs may have a barcode
regex of ".*" to ensure they can use anything for these accounts.
Different prefixes per library - To prevent libraries from using another
library's prefix, but still detect all of them as barcodes.
Special case "this is a barcode" checks for the opac, like legacy barcodes
that should no longer be assigned to new patrons, or on edits.
Signed-off-by: Thomas Berezansky <tsbere@mvlc.org> Signed-off-by: Pasi Kallinen <pasi.kallinen@pttk.fi> Signed-off-by: Ben Shum <bshum@biblio.org>
Jason Etheridge [Tue, 26 Jun 2012 15:39:48 +0000 (11:39 -0400)]
fix clear hold shelf with 25 or more holds
When there are 25 or more shelf expired holds to be processed, the API call
returns an array of objects instead of an object, which the staff client wasn't
prepared to accommodate. This fixes that.
Signed-off-by: Jason Etheridge <jason@esilibrary.com> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Dan Scott [Thu, 27 Jun 2013 13:46:55 +0000 (09:46 -0400)]
Avoid 0788 duplication from 2.3 failure
Recent installs of 2.3, or upgrades during 2.3, will have introduced
0788 already into the upgrade process -- meaning that the 2.3-2.4.0
script will rollback the entire transaction if it hits the duplicated
0788. Instead, move 0788 into its own transaction to increase the
chances that the 2.3-2.4.0 script will work for sites that stay up to
date or that recently installed Evergreen.
Signed-off-by: Dan Scott <dscott@laurentian.ca> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Mike Rylander [Mon, 24 Jun 2013 19:48:07 +0000 (15:48 -0400)]
Create upgrade script for ingest normalization changes
This provides the upgrade script for the ingest changes outlined
in LP 1187433. In addition, the version-upgrade script for 2.3 to
2.4.0 has been modified to move the final reingest step until after
this incremental change has been applied.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Dan Scott <dscott@laurentian.ca>
Dan Scott [Thu, 13 Jun 2013 05:16:23 +0000 (01:16 -0400)]
Retain index granularity with minimal bloat
The previous approach to reducing index bloat arguably went too far, in
that analytics such as separately catalogued songs for an album were all
simply aggregated together in a single metabib.title_field_entry row,
rather than being added as separated metabib.title_field_entry rows for
each unique value.
To avoid the original problem of exact duplicate rows being inserted, we
now check for an existing matching row before inserting into the index.
A good test record is title "Cello concerto." which results in 1 title
proper row and 4 added entry title rows in metabib.title_field_entry
after this change.
Mike Rylander [Wed, 12 Jun 2013 15:17:08 +0000 (11:17 -0400)]
Bring back "split-brain" indexing normalization
Before 2.4-era changes to indexing and search, normalizers were applied
in a way that resulted in different effects on the value and index_vector
columns of metabib.*field_entry tables. This behavior was lost during
the changes mentioned above, but we need it for several things to work
properly, phrase search and (likely) facets among them. This commit
brings that behavior back.
See here for the original behavioral documentation:
Bob Wicksall [Thu, 13 Jun 2013 05:06:10 +0000 (01:06 -0400)]
Reduce index bloat involving non-search_field values
Rows in metabib.title_field_entry, subject_field_entry,
series_field_entry, and author_field_entry are doubled or tripled due to
bad logic in biblio.extract_metabib_field_entry. This results in these
tables being 2 or more times their correct size.
This was introduced in 2.2.0 when the logic for browse_field and
facet_field were added to biblio.extract_metabib_field_entry. 2.1 is not
affected.
The duplicates are caused when biblio.extract_metabib_field_entry
returns TRUE in the search_field column for all rows even if they should
just be facet_field or browse_field after the first search_field value
is returned.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Dan Scott <dscott@laurentian.ca>
Mike Rylander [Tue, 25 Jun 2013 11:44:22 +0000 (07:44 -0400)]
Only attempt to map copies once per hold
The development of Calculated Proximity Adjustment (CPA) for 2.4 added a "prox"
column to action.hold_copy_map (ahcm) to store on variant of copy proximity. That
value is calculated at the same time that certain other data structures are
set up, and is conceptually tied to them, so the resulting combined data
set is used to insert values into the ahcm. However, user configuration
can cause that data set to contain non-unique values, where the data structure
used previous to CPA was guaranteed to be unique. This lack of uniqueness
would then violate a constraint on the achm table. This commit restores the
required uniqueness for the purpose of creating the ahcm rows.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
The "Reset" label for the button that generates random passwords can be
confusing for staff. Changes the label to "Generate Password" to let
people know what the button does.
Signed-off-by: Kathy Lussier <klussier@masslnc.org> Signed-off-by: Ben Shum <bshum@biblio.org>
Dan Scott [Fri, 21 Jun 2013 18:49:27 +0000 (14:49 -0400)]
Prevent JavaScript error on non-Novelist sites
Unless the Evergreen site in question is signed up and configured to
support Novelist added content, every details page will generate a
JavaScript error due to the reference to an undefined JavaScript
function. Guard against that by testing for the presence of the Novelist
URL.
Signed-off-by: Dan Scott <dscott@laurentian.ca> Signed-off-by: Ben Shum <bshum@biblio.org>
Dan Scott [Wed, 19 Jun 2013 20:49:14 +0000 (16:49 -0400)]
Silence QP warning due to inappropriate cmp op
In QueryParser, we're comparing two strings, but using the numeric !=
operator. Switching to the 'ne' operator silences a warning that came up
7,000 today in our logs so far...
Signed-off-by: Dan Scott <dscott@laurentian.ca> Signed-off-by: Ben Shum <bshum@biblio.org>
Dan Scott [Fri, 21 Jun 2013 03:11:20 +0000 (23:11 -0400)]
Silence uninit var warnings from query normalizer
$field_info can return undef from the search for a matching ID from the
list of normalizers, which in turn generates several uninit var warnings
when attempts are made to access members of the undef variable. We saw
6700 occurrences of these warnings during a typical day of operations.
Signed-off-by: Dan Scott <dscott@laurentian.ca> Signed-off-by: Bill Erickson <berick@esilibrary.com>
Dan Scott [Fri, 21 Jun 2013 03:39:21 +0000 (23:39 -0400)]
return, not next, from eval BLOCK
Per perldoc eval, exiting an eval BLOCK is not allowed. And it generates
warnings - 37,000 of them in one day - on a system on which the fine
generator runs every 15 minutes. Simply returning from the block
achieves the same goal without generating scads of warnings.
Signed-off-by: Dan Scott <dscott@laurentian.ca> Signed-off-by: Bill Erickson <berick@esilibrary.com>
Bill Erickson [Mon, 13 May 2013 17:22:37 +0000 (13:22 -0400)]
LP1179609 ACQ lineitem identifier inline update
When the identifier value for a linetiem is changed, apply the change
and refresh the lineitem in real time instead of requiring users to
click the 'Apply Lineitem Identifier' link.
The 'Apply Lineitem Identifier' link has also been removed, since it is
no longer needed.
Signed-off-by: Bill Erickson <berick@esilibrary.com> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Dan Scott [Mon, 17 Jun 2013 04:38:43 +0000 (00:38 -0400)]
Support script-based circ in nearest_hold()
The nearest_hold() implementation recently changed to pull in the circ
library ID; however, if circulation runs through scripts, the circ
library on the copy object has been fleshed, and the nearest hold
routine gets very confused.
Check to see if we do, in fact, have an object instead of a plain
scalar, and assign the value to a placeholder variable accordingly.
Thanks to Jeff Godin for his great assistance on debugging this!
Signed-off-by: Dan Scott <dscott@laurentian.ca> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Conflicts:
Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Publisher/action.pm
Dan Scott [Tue, 18 Jun 2013 16:17:40 +0000 (12:17 -0400)]
Prevent uninit var warnings in Search/Biblio.pm
The logger messages in Search/Biblio.pm throw _many_ uninitialized
variable warnings. With a little care, we can prevent those warnings and
return our attention to more important log messages.
Signed-off-by: Dan Scott <dscott@laurentian.ca> Signed-off-by: Ben Shum <bshum@biblio.org>
Dan Wells [Fri, 14 Jun 2013 18:21:10 +0000 (14:21 -0400)]
Post-2.5-m1 whitespace fixup
This is an attempt at an automated whitespace cleanup for the m1
milestone of version 2.5. It was created using the following
commands (run from Open-ILS/src/perlmods/lib):
Bill Erickson [Mon, 27 Aug 2012 14:38:48 +0000 (10:38 -0400)]
Repair fine generator memory leak
Calling "next" from within a "try" block results in a memory leak,
presumably because "try" is a tangled nest of subs and evals.
Replacing the "try" with a good ol' "eval" avoids the leak.
This particular leak in the fine generator is onerous when the fine
generator is run often (e.g. every 15 mins), which means circs that
have already been processed for the day are re-analzyed over and over,
causing the code to continue early (next) to the next loop iteration
for large numbers of circs. It also happens when a circs are skipped
because they have no fine interval, rate, or max fine.
You know this is happening because you will see something like this in
the storage stderr log:
Exiting eval via next at
/usr/local/share/perl/5.10.1/OpenILS/Application/Storage/Publisher/action.pm
line 820.
Exiting subroutine via next at
/usr/local/share/perl/5.10.1/OpenILS/Application/Storage/Publisher/action.pm
line 820.
This patch does not avoid the "exiting eval via next" warning, since
we're still next'ing out of the eval. It just avoids the memory leak
(and the "Exiting subroutine" warning). More extensive refactoring is
needed to to completely remove the second warning.
Signed-off-by: Bill Erickson <berick@esilibrary.com> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Mike Rylander [Tue, 11 Jun 2013 20:44:35 +0000 (16:44 -0400)]
Use the centralized initialization method for QP
QueryParser maintains an effective singleton for internal configuration of
the driver in order to avoid going to the database on every search request
to gather configuration parameters. There is also a centralized sub that
has the task of properly configuring said singleton. Previous to this commit
we were not using that centralized initializer in one case, and that case
happened to be the most important initialization of QP in all of Evergreen.
The fallout from that was that some configuration was not being gathered
and passed to QueryParser, resulting in incorrect search SQL being generated.
This is rectified by using the centralized initializer everywhere that it
is needed and can be used -- and particularly in the effected case.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Dan Scott <dscott@laurentian.ca>
Mike Rylander [Tue, 30 Apr 2013 20:45:55 +0000 (16:45 -0400)]
Search clicked /and/ preceding sf values
When looking for authority records to control a bib field, we currently
search using exactly, and only, the subfield that was clicked. This
commit changes that so that the full field up to and including the clicked
subfield is used in the simple authority heading search we perform to find
the best-match (pivot) authority record.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Ben Shum [Wed, 5 Jun 2013 04:40:53 +0000 (00:40 -0400)]
LP1079041 - making state not required (continued)
The last commit did not add the default YAOUS to the seed data. Also, some
wording tweaks to bring the content in line with the existing entries for
consistency.
Michael Peters [Thu, 15 Nov 2012 17:49:05 +0000 (12:49 -0500)]
Make the "state" field in registration a togglable YAOUS
Some countries do not use "State" therefore we need to create
a YAOUS to make it non-required/displaying. This also requires
that we no longer force a "not null" on state in actor.usr_address.
Signed-off-by: Michael Peters <mrpeters@library.in.gov> Signed-off-by: Pasi Kallinen <pasi.kallinen@pttk.fi> Signed-off-by: Ben Shum <bshum@biblio.org>
Add table, view and trigger for "aging" hold requests on delete.
This creates the action.aged_hold_request table, the
action.all_hold_request view, the action.age_hold_on_delete
function, and the action_hold_request_aging_tgr on action.hold_request.
Add fieldmapper entries for action.all_hold_request view and
action.aged_hold_request table.
Signed-off-by: Jason Stephenson <jstephenson@mvlc.org> Signed-off-by: Dan Wells <dbw2@calvin.edu>
Bill Erickson [Mon, 25 Feb 2013 18:17:59 +0000 (13:17 -0500)]
Z39.50 Batch Search/Overlay TPAC my-list entry point
Similar to the staff client bucket UI, this adds a button which allows
staff to access the batch Z39 search-and-queue operation directly from
the TPAC my-lists UI.
Signed-off-by: Bill Erickson <berick@esilibrary.com>
Bill Erickson [Mon, 18 Feb 2013 15:41:01 +0000 (10:41 -0500)]
Z39.50 Batch Search/Overlay Z-Search UI
Adds a new "Find Z39.50 Matches" option to Cataloging -> Manage Record
Buckets. When selected, the user chooses the Z39 fields, the Z39
sources, the destination queue, and the queue match set. The user then
submits the search. Basic progress info is reported to the user.
Once complete, the user can open the destination queue, from which
regular vandelay import, etc. actions may be performed on the newly
found records.
Signed-off-by: Bill Erickson <berick@esilibrary.com>
Bill Erickson [Thu, 31 Jan 2013 17:37:44 +0000 (12:37 -0500)]
Vandelay record bucket-limited matching
Provides the option to link record buckets to vandelay queues. When
linked, vandelay imports where a match set is specified will limit
matches to records within the selected bucket.
Signed-off-by: Bill Erickson <berick@esilibrary.com>
Bill Erickson [Wed, 30 Jan 2013 22:44:30 +0000 (17:44 -0500)]
Z39.50 Batch Search/Overlay API
New API for performing Z39.50 queries for a set of bib records across a
set of Z39 sources. Searches are performed in parallel (up to a
configurable maximum number of active searches and maximum results) and
results are stored in a vandelay MARC Import/Export queue.
Search fields and values are determined by Z39 index field maps. At
search time, the caller provides a set of field maps to use for the
search. Search values for each bib record are found by following the
index maps to the indexed values in metabib.*_field_entry or
metabib.record_attr.
Signed-off-by: Bill Erickson <berick@esilibrary.com>
Bill Erickson [Fri, 5 Apr 2013 17:28:08 +0000 (13:28 -0400)]
Repair SIP start/end list ranges
SIP supports paging of certain lists (holds, fines, etc.) by allowing
the SIP client to provide start and end points for lists. This patch
repairs how Evgreen extracts the list ranges from arrays.
When using Perl array ranges, the array variable should be accessed via
'@' and not '$'. Prior to this change, all ranged lists resulted in
returning the first item in the list instead of the full range.
This change affects lists of holds, overdues, fines, and charges.
Signed-off-by: Bill Erickson <berick@esilibrary.com> Signed-off-by: Jeff Godin <jgodin@tadl.org>
Signed-off-by: Thomas Berezansky <tsbere@mvlc.org> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Conflicts:
Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Holds.pm
(Just whitespace conflicts on tab vs space -- repaired by hand.)
Ben Shum [Sat, 2 Mar 2013 07:21:58 +0000 (02:21 -0500)]
TPAC - set autofocus to user input when placing holds in staff client
When placing holds in TPAC via the staff client, the focus had been on the
basic search field above. Change this to have autofocus on the input field
for the hold user by default.
This can potentially save staff from having to perform an extra click to
select the input field. Now they can immediately begin entering the barcode
of the user they plan to create a hold on behalf of.
Signed-off-by: Ben Shum <bshum@biblio.org> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Bill Erickson [Mon, 7 Jan 2013 14:35:55 +0000 (09:35 -0500)]
SIP renew-all; reset renewal statuses
Reset the list of renewed and unrenewed items for each instance of the
RenewAll transactions. Otherwise, items from previous transactions will
bleed into the current transaction.
While we're in there, fix a couple of tabs.
Signed-off-by: Bill Erickson <berick@esilibrary.com> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Bill Erickson [Mon, 26 Nov 2012 19:51:27 +0000 (14:51 -0500)]
SIP RenewAll
Adds SIP plugin support for SIP message types 65/66 (Renew All). When
requested, the plugin performs a renewal on all items currently checked
out for the user.
Signed-off-by: Bill Erickson <berick@esilibrary.com> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Bill Erickson [Tue, 21 Aug 2012 21:19:54 +0000 (17:19 -0400)]
Include Wrong-Shelf holds in clear-shelf results
Include non-expired, Wrong-Shelf holds in the results list of the "Clear
Shelf-Expired Holds" process. ("Wrong-Shelf" holds are those whose
pickup lib was changed while the hold was on the holds shelf). The idea
behind this option is that branches may use the clear-shelf process as a
general shelf management report beyond just holds that have expired.
I.e. tell me everything I need to remove from the shelf.
This change includes a label change for the clear-shelf menu options:
Ben Shum [Fri, 7 Jun 2013 00:14:08 +0000 (20:14 -0400)]
Remove unnecessary TPAC toggle strings on staff client splash page
Accidentally reintroduced with commit ad86ef5d3c689c9b514cc09bfc93e7f451461dc7,
we can skip adding back TPAC toggle strings to the index.xhtml file since that
toggle action has been removed from the page.
Acq: Be fuzzy about case when retrieving EDI documents
The edi_fetcher relies on a routine in OpenILS::Acq::EDI to, among
other things, try to avoid fetching the same EDI document multiple times
when many rows in acq.edi_account refer to the same host and login
credentials.
Since in practice most vendors seem to run FTP servers for EDI on
Windows, not UNIX, and pathnames are therefore case-insensitive, that
test for other occurrences ought also to be case-insensitive.
If I were to look at this as a purist, I could argue that vendor servers
might sometimes by run on UNIX, and that for some reason it is possible
that different vendor-to-buyer EDI documents (order responses or
invoices) could have pathnames that differ only in the case of some
characters. But that seems wildly unlikely. If anyone does take this
possibility seriously, perhaps acq.edi_account needs a Boolean column to
indicate the remote host's case [in]sensitivity.
Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com> Signed-off-by: Ben Shum <bshum@biblio.org>
Jason Etheridge [Thu, 6 Jun 2013 21:39:24 +0000 (17:39 -0400)]
lp1183525 Edit Item Attributes pop-up dimensions
Took Steven Chan's patch from the launchpad bug and added "stickiness" to the
window dimensions. So by default, it'll come up maximized, but once adjusted,
it will stay adjusted.
Signed-off-by: Jason Etheridge <jason@esilibrary.com>
"Return to record" after submission of phone number on SMS page fixed
Before this, it only worked on the page load *before* form submission.
There's probably a more elegant solution that doesn't involve keeping
track of URIs, but this seems to me to work.
Problem relayed to me by Dale Rigney at Equinox, who helped reproduce
the issue and test a fix.
Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com> Signed-off-by: Jason Etheridge <jason@esilibrary.com>
Dan Scott [Thu, 6 Jun 2013 16:13:36 +0000 (12:13 -0400)]
Add new POT files to git so "make newpo" will work
Running "make newpo" errored out because the po subdirectories didn't
exist for the newly added POT files. This will also enable translators
to access the strings in Launchpad.
Dan Scott [Thu, 6 Jun 2013 13:40:59 +0000 (09:40 -0400)]
Fedora RPM for bzip2 headers is bzip2-devel
There was an attempt to add the right RPM for the bzip2 headers in
Makefile.install, but that failed on Fedora 19. Swap in bzip2-devel
instead to correct that.
TPAC: First part of locg param can be branch shortname
Addresses LP #1020625. You can use the locg param, which can set an
an OU for search context (and which has other implications related to
location/scope) by shortname now.
As long as your shortnames are something that work in an HTTP query
string, don't contain colons, and as long as you don't have numeric
shortnames for any orgs that would mask orgs with the sames numbers
as an ID (but that would be a lousy setup anyway), this should work.
Now case insensitive per recommendation by Michael Peters. In the
event that you have org units with names that are the same except
for case (probably a bad practice), the locg parameter will simply
fail to set your context, rather than try to guess which org unit
you meant.
Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com> Signed-off-by: Pasi Kallinen <pasi.kallinen@pttk.fi> Signed-off-by: Dan Scott <dscott@laurentian.ca>
Conflicts:
Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Util.pm
Kyle Tomita [Thu, 14 Mar 2013 22:01:14 +0000 (15:01 -0700)]
Patron Blocking by lost items and include lost as items out
This feature has two main parts, patron blocking by number
of lost items and include lost items as items out. A group penalty
threshold will be added for lost items. This will restrict patrons
who have lost too many items. The inclusion of lost items as items
out will be an optional setting, like claimed returned items. This
will allow libraries to set what type of item statuses count toward
the total items out.