Mike Rylander [Mon, 14 Jul 2014 18:57:38 +0000 (14:57 -0400)]
LP#1341703 Thinko in Batch Edit (hidden by older OpenSRFs)
There's a bug on line 272 of O::A::Cat.pm where we called a non-existent
method named respond_complete on the invocant object. Instead, we need to
call that on the client object (spelled $conn in this method). Batch bib
edit won't work on new OpenSRF's until this is fixed.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Bill Erickson <berick@esilibrary.com>
Jason Stephenson [Fri, 11 Jul 2014 14:57:59 +0000 (10:57 -0400)]
LP#1341013: Remove NameVirtualHost from eg.conf.in for Apache 2.4.
NameVirtualHost does nothing in Apache 2.4 and will be removed in
the next release. We might as well get rid of it now and silence
a warning when starting Apache.
Signed-off-by: Jason Stephenson <jason@sigio.com> Signed-off-by: Ben Shum <bshum@biblio.org>
LP1198475: Add a new, optional, Lost and Paid copy status.
Add the Lost and Paid status to config.copy_status.
Add org_unit_settig to control if the copy status is used.
Add checks to O::A::Circ::Money::make_payments to check for LOST
status and org_unit setting and change the copy status to
Lost and Paid as appropriate.
Also add checks for Lost and Paid copy status wherever LOST copy
status is used.
Add the COPY_STATUS_LOST_AND_PAID event.
Add the event to ils_events.xml with id 7026.
Check for the event in circ/util.js in the staff client.
Add pgTAP tests for the existence of the Lost and Paid copy status
and the new org_unit setting to control if it isused.
LP#1234845: Performance improvement to evergreen.ranked_volumes() database function.
For the client I analyzed logs from production Pg instance for ~ 10
days.
During this time, the single most time consuming query (summarized time
for all instances of the query, with different parameters) was:
SELECT * FROM unapi.bre ( ... ) AS "unapi.bre";
I profiled this function, and found that in my test case most of the
time (2.04s out of 2.06s, so ~ 99%) was spent in call to
unapi.holdings_xml() function.
When I profiled this function, I found that most of the time (sorry,
don't have the number now with me) was spent in call to
evergreen.ranked_volumes() function.
At this moment in my research something changed on the server I was
testing on, and all subsequent times were ~ 4-5 times lower, but the
ratios were more or less the same.
Anyway - call to evergreen.ranked_volumes() showed repeatable time (with
full caches/buffers) of ~ 380ms.
I modified the function by:
1. inlining actor.org_unit_descendants(?, ?)
2. inlining evergreen.rank_ou(?, ?, ?)
3. extracting depth calculation to separate call
4. switched to plpgsql (which gives me ability to use variables)
5. removed evergreen.rank_ou() and evergreen.rank_cp_status() from
select clause - these are still in WINDOW definition, but they
weren't used in the SELECT, so it's better to remove from there.
6. in passing renamed arguments to avoid name clash (argument depth vs.
field depth)
7. in passing changed usage of $* to access parameters to using named
parameters, for readability.
New function did the same work in ~ 18ms.
EDIT: Convert to SQL, keeping all of the improvements from depesz
EDIT2: Added Signed-off-by line for depesz, see http://markmail.org/message/rv4vaarwixeswqgu
Signed-off-by: Hubert depesz Lubaczewski <depesz@depesz.com> Signed-off-by: Jason Stephenson <jstephenson@mvlc.org> Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Kathy Lussier <klussier@masslnc.org> Signed-off-by: Ben Shum <bshum@biblio.org>
Bill Erickson [Fri, 9 May 2014 18:32:14 +0000 (14:32 -0400)]
LP#1254918 limit ACQ batch update fund retrieval by perms
In the ACQ batch update bar along the top of the PO page, limit the
number of funds which require permission checks on the server by
limiting the fund search to those at org units where the requesting user
has the CREATE_PURCHSE_ORDER or MANAGE_FUND permissions.
In other words, if a user only has create-po perms at Branch 1, we can
specifically request funds at that branch (or below) for display so that
the server (PCRUD) does not have to inspect unrelated funds for
permissibility. This speeds up fund retrieval.
Signed-off-by: Bill Erickson <berick@esilibrary.com> Signed-off-by: Ben Shum <bshum@biblio.org>
Previous to this commit, permissions in Evergreen check a cominbation
of:
* user-object permissions (does the user have a direct permission
mapping to the object in question)
* user-context permissions (does the user have the permission at the
object's context location, whose field is defined in the IDL)
* user-global permission (lacking a context location, does the user
have the permission globally (at the top of the org tree) and therefore
can apply the action to all objects of this typ)
In practice, there are almost no user-object permissions. When retrieving
just on object from the database, the cost of this check is negligable to
the point that we can completely ignore it. However, when retrieving a
large set of objects, such as the list of all funds in a large, consortial
environment, the cost to check the user-object permission adds up to a
noticable amount of time.
To address this, we add a new construct to the IDL instructing the PCRUD
infrastructure to skip user-object permission checking in those cases where
the design and use of the system makes user-specific object permissions
needless or superfluous. This is embodied in a new XML attribute on the
<pcrud> element: ignore_object_perms. When set to "true", pcrud will skip
all user-object permission checks, resulting in faster time-to-first-result.
Additionally, we add a new "owning_user" attribute on the <action> element
of the <pcrud> section. This new attribute specifies the field containing
the actor.usr.id of the user that "owns" the object. This allows PCRUD to
test ownership of an object directly, and if the requesting user and owning
user are the same, the action is allowed.
Finaly, when "global_required" is "true" for the permission check, and there
is no "owning_user" attribute defined for the class in the IDL, we skip the
above-mentioned user-object permission check. When "global_required" is
"false" or there is an "owning_user" attribute, we check for user permissions.
In all cases, the "ignore_object_perms" attribute is honored, and in its
presence we skip non-owner user-object permissions.
The net result is an immediate increase in speed for retrieval of objects
in the presence of the "global_required" attribute, and a mechanism to
increase the speed of specific cases of context-aware retrival by the use
of "ignore_object_perms".
We use this new mechanism to speed the retrieval of fund objects in the
ACQ interfaces that draw available-fund dropdowns.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Bill Erickson <berick@esilibrary.com> Signed-off-by: Ben Shum <bshum@biblio.org>
Bill Erickson [Thu, 26 Jun 2014 14:35:38 +0000 (10:35 -0400)]
LP#1334693 ./configure avoid osrf_config without core
Avoid the check for and use of osrf_config during Evergreen ./configure
when run with --disable-core. This allows the staff client to be built
and, in general, for make_release to be run on a machine that does not
have opensrf installed (or has multiple versions).
Signed-off-by: Bill Erickson <berick@esilibrary.com> Signed-off-by: Ben Shum <bshum@biblio.org>
We use the "offers" property to link the Product to the Offer, so there
is no reason to use a reciprocal "itemOffered" property to link back to
the Product from the Offer. The circular reference confuses some tools
(http://rdfa.info/play) and may complicate general processing, so let's
simply remove it.
Signed-off-by: Dan Scott <dscott@laurentian.ca> Signed-off-by: Ben Shum <bshum@biblio.org>
As our record details page lists each copy as a separate Offer (well, in
many cases anyway, unless paging gets invoked), the AggregateOffer
entity is not really necessary--and using it on the same page as
separate Offer entities is not recommended by at least one search engine
(per Google https://support.google.com/webmasters/answer/146750?hl=en
says a given page should include "_one_ of the following: Offer or
Offer-aggregate").
Signed-off-by: Dan Scott <dscott@laurentian.ca> Signed-off-by: Ben Shum <bshum@biblio.org>
Following the requirements at sitemaps.org, generate a
set of sitemaps that reflect the bib record's last edit
date, with 50,000 records per sitemap file.
Users can run this script targeting different libraries
and generating different output filenames using the
documented options in the script.
Signed-off-by: Dan Scott <dscott@laurentian.ca> Signed-off-by: Ben Shum <bshum@biblio.org>
Remove an unused line of code in the hold targeter which was preventing
targeting of pre-cat copies.
In OpenILS::Utils::PermitHold::permit_copy_hold, neither in-db nor
script based hold viability checks inspect the value of the
"title_descriptor" field in the provided params. Remove this field and
pre-cats just work.
Signed-off-by: Bill Erickson <berick@esilibrary.com> Signed-off-by: Ben Shum <bshum@biblio.org>
Mike Rylander [Fri, 11 Apr 2014 18:09:35 +0000 (14:09 -0400)]
LP#1306753: Only look at holds that expire before 'today'
We should not count today when generating the hold expiration list.
So, we'll look for holds that expire before 'today' instead of those
that expire before 'now'.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Kathy Lussier <klussier@masslnc.org> Signed-off-by: Ben Shum <bshum@biblio.org>
Victoria Lewis [Wed, 7 May 2014 20:10:19 +0000 (13:10 -0700)]
LP#1316814: Change potentially incorrect information display in hold_status.tt2
Removed word "circulating" from patron hold status message regarding the number of copies of the material.
Some copies may be ON ORDER and therefore not circulating.
Signed-off-by: Victoria Lewis <vcamklewis@gmail.com> Signed-off-by: Ben Shum <bshum@biblio.org>
Bill Erickson [Fri, 6 Jun 2014 16:35:59 +0000 (12:35 -0400)]
LP#1327284 Display Imported As column in vandelay queue
For Bib and Authority records which have been imported / merged /
overlayed, etc. into the system via Vandelay, show the record ID of the
catalog bib/auth record to which the record was imported.
Signed-off-by: Bill Erickson <berick@esilibrary.com> Signed-off-by: Yamil Suarez <yamil@yamil.com> Signed-off-by: Ben Shum <bshum@biblio.org>
The JSPAC bookbag feature was renamed to "Lists" in TPAC, but several
references still exist to "bookbag", "book bag", "Book Bag", etc. in the
public and staff interfaces. This commit attempts to provide simple and
clear replacements for the old term. In some cases "list" seems best,
but where the context is uncertain "book list" is used to err on the
side of clarity. Some of these changes may be in old code that is no
longer used.
This commit also includes two minor wording changes - one to fix grammar,
and the second to update instructions for sharing a list.
Signed-off-by: Remington Steed <rjs7@calvin.edu> Signed-off-by: Ben Shum <bshum@biblio.org>
Chris Sharp [Sat, 31 May 2014 20:25:29 +0000 (16:25 -0400)]
LP#1315531 Adding further changes to the server install docs for Ubuntu 14.04:
- adding apache configuration instructions that adjust for the new
mpm_prefork module in Apache 2.4 on 14.04
- adding new standalone database dependency installation instructions
that rely on OS packages rather than CPAN where possible
Signed-off-by: Chris Sharp <csharp@georgialibraries.org> Signed-off-by: Ben Shum <bshum@biblio.org>
Chris Sharp [Thu, 29 May 2014 19:49:38 +0000 (15:49 -0400)]
LP#1315531 Change default location of libdbi libraries.
In libdbi 0.8.4, the default installed location has changed to
/usr/lib/x86_64-linux-gnu/dbd/. On the advice of Thomas Berezansky,
I made the new location the default and ensured that the previous
locations are in the fallback.
Signed-off-by: Chris Sharp <csharp@georgialibraries.org> Signed-off-by: Ben Shum <bshum@biblio.org>
This commit adds a note (with examples) about upgrading the database schema
across major versions. It also reformats a long line into multiple lines,
changes a NOTE to a TIP, makes a small correction, and replaces a repetitive
command with a short explanation.
Documentation: Update upgrade instruction for 2.6.1
- Update location references for 2.6.1.
- Update database updates to include 2.6.1 update.
- Add a note regarding reingesting bib records after updates.
Signed-off-by: Robert Soulliere <robert.soulliere@mohawkcollege.ca>
Remington Steed [Fri, 6 Jun 2014 15:59:58 +0000 (11:59 -0400)]
LP#968514: Revive bib/auth importing docs from 2.1, add intro
This commit revives the following sections from the 2.1 version of the docs
and updates them for 2.6:
- marc_export: Exporting Bibliographic Records into MARC files
- includes new options for 2.6
- Importing Authority Records from Command Line
- Importing Authority Records from the Staff Client
The first two are included in a new section called "Support Scripts"
within the "Developer Resources" section, with a new intro and summary
of other commonly used scripts provided with Evergreen. The third section
is moved inside the Cataloging chapter "Batch Importing MARC Records",
with slight modifications to the intro to that chapter.
Yamil Suarez [Mon, 30 Jun 2014 21:55:46 +0000 (17:55 -0400)]
Documentation: Added 'Using the OPAC' documentation & OPAC WCAG support mention
Older DocBook content that covered how to do searches on the OPAC was updated
to use Asciidoc. Also a simple mention of the 2.6 OPAC WCAG support was added.
Dan Scott [Wed, 4 Jun 2014 17:09:48 +0000 (13:09 -0400)]
LP#1326149 Use a TPAC-settable TIME_FORMAT for local time formats
We had tried to use the format.time library setting, but that is meant
for Dojo which uses the Unicode formats, that are incompatible with
the POSIX strftime() formats required by Template::Plugin::Date.
At the same time, we need to expose the raw machine-readable time
for schema.org consumers, so express that in a @content attribute.
And we might as well use a more meaningful <time> element instead of
the meaningless <span>, just for good measure.
Signed-off-by: Dan Scott <dscott@laurentian.ca> Signed-off-by: Ben Shum <bshum@biblio.org>
"If you can use a native HTML element [HTML5] or attribute with the
semantics and behaviour you require already built in, instead of
re-purposing an element and adding an ARIA role, state or property to
make it accessible, then do so."
Signed-off-by: Bill Erickson <berick@esilibrary.com> Signed-off-by: Ben Shum <bshum@biblio.org>
Instead of using titles / aria-labels directly on advanced search
selectors, provide selector IDs so the existing text labels can be
turned into <labels> and linked (by id) to their form control.
This means we only need one label per form control, which improves
usability from an accessibility perspective.
Bill Erickson [Wed, 2 Apr 2014 20:43:49 +0000 (16:43 -0400)]
LP#1301599 TPAC result table accessibility improvements
* Give the main result table a screenreader-only header to describe the
table columns.
* Set the role=presentation in one of the sub-tables used only for
layout.
Signed-off-by: Bill Erickson <berick@esilibrary.com> Signed-off-by: Ben Shum <bshum@biblio.org>
Mike Rylander [Fri, 2 May 2014 13:10:09 +0000 (09:10 -0400)]
LP#925776: Recheck located uri visibility
Previous to this commit, once we have determined that there are no
local Located URIs or foreign copies, we include the record in the
result set in the staff client. However, the desire of library staff
is that foreign Located URIs be valid as a visibility limiter. So
we now recheck at the end for that situation. This honors the new
"Located URIs act like copies" global flag.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Ben Shum <bshum@biblio.org>
Galen Charlton [Thu, 5 Jun 2014 22:16:23 +0000 (15:16 -0700)]
LP#1326983: excluded fulfilled holds when adding hold_request.shelf_expires_soon events
This patch adjusts the example A/T filter for the
hold_request.shelf_expires_soon hook to exclude hold requests that are
already marked as fulfilled. This saves time creating events that
would immediately be marked as invalid per the HoldIsAvailable
validator.
It also addresses an issue for large databases that have lots of
fulfilled holds wherein hold_request.shelf_expires_soon events can
fail to be added at all due to a cstore timeout.
Signed-off-by: Galen Charlton <gmc@esilibrary.com> Signed-off-by: Ben Shum <bshum@biblio.org>
Galen Charlton [Tue, 20 May 2014 17:09:08 +0000 (10:09 -0700)]
LP#1296937: move the $force_bc parameter of ->charged_items() to an implementation method
Argubably, the $force_bc parameter of OpenILS::SIP::Patron->charged_items()
method exists solely as an implementation convenience for the renew-all
code. Consequently, this patch removes the $force_bc parameter from the
public interface for charged_items() and spins it off into a new
implementation method.
This patch should be applied at the same time that a reversion of
SIPServer commit c97d64412bc is applied. Note that a user who upgrades
SIPServer without upgrading Evergreen to a version that contains this
patch will end up in a situation where the code that counts active
loans for the patron information response will fetch the loans using
$force_bc set to true; this works only by coincidence.
Signed-off-by: Galen Charlton <gmc@esilibrary.com> Signed-off-by: Jeff Godin <jgodin@tadl.org>
Previously, in some cases (often needlessly) we ordered constituent
records within a metarecord by a combination of type/form/blvl. This
is not only of little use, but also expensive. Instead, order them
by the bib's calculated quality, which takes type/form/blvl into account
already.
Also, use the new metabib.record_sorter to find the title tie-breaker
instead of using the view-of-a-view-of-a-view mrd compatability shim.
The net result is several orders of magnitude speed increase for
constituent record retrieval. In particular, this resolves a problem
where doing a SIP2 patron information lookup and requesting a list
of holds could cause a timeout if the patron has one or more
metarecord holds.
This patch also causes the format filter parameter of the following
methods to be ignored:
Since the only use of the format filter was in JSPac code, and since
the record attributes mechanism has changed considerably, this removal
should be considered intentional.
Note that this patch includes a squash of a minor follow-up by Galen
Charlton to remove variables made unused by the original patch.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Galen Charlton <gmc@esilibrary.com>
(for minor follow-up by Galen) Signed-off-by: Dan Wells <dbw2@calvin.edu>
Mike Rylander [Wed, 14 May 2014 15:54:47 +0000 (11:54 -0400)]
LP#1310751: Reorder query-building wrapper for QueryParser
In order to make sure that the transparent boolean pushdown does
not cause filters and modifiers to end up deeply embedded in the
query tree, we put them at the front.
This is a short-term fix. Long-term, we need to make use of the
floating subquery syntax ( {{ ... }} ) available in QueryParser,
which is designed to address the semantic separation between what
the user types into the search box, and the various UI widgets that
can add query clauses.
Signed-off-by: Jason Etheridge <jason@esilibrary.com> Signed-off-by: Dan Wells <dbw2@calvin.edu>
Bill Erickson [Thu, 22 May 2014 18:41:17 +0000 (14:41 -0400)]
LP#1322303 cleanse backdate for checkin overdue voiding
Passing raw backdates, particularly from offline transactions, which
have a space between the date and time, to
DateTime::Format::ISO8601->parse_datetime results in "Invalid date
format:" errors. Pass the date through the cleanse routine first.
Signed-off-by: Bill Erickson <berick@esilibrary.com> Signed-off-by: Ben Shum <bshum@biblio.org>
Remington Steed [Fri, 7 Mar 2014 18:56:25 +0000 (13:56 -0500)]
Remove buggy, unused function get_leaders_from_usergroup
Recent editing and testing of get_leaders_from_usergroup() uncovered an
unrelated bug which renders the function useless (it returns all group
members, not just the leader). It wasn't previously caught because
Evergreen has no apparent references to this function. This commit
removes the unused function.
Signed-off-by: Remington Steed <rjs7@calvin.edu> Signed-off-by: Dan Wells <dbw2@calvin.edu>
Galen Charlton [Tue, 20 May 2014 18:42:32 +0000 (11:42 -0700)]
LP#1321411: restore ability to handle credit payments using a processor other than Stripe
This patch ensures that the processor name is passed
to OpenILS::Application::Circ::CreditCard::process_payment, avoiding
an exception thrown by Business::OnlinePayment.
Signed-off-by: Galen Charlton <gmc@esilibrary.com> Signed-off-by: Dan Wells <dbw2@calvin.edu>
Jeff Godin [Wed, 30 Oct 2013 18:37:10 +0000 (14:37 -0400)]
LP#1246843: Don't show contact invalidators for new users
Don't show contact invalidator buttons for new users. This affects
staged users and cloned users, where the contact fields have a value
when the editor initially loads.
Signed-off-by: Jeff Godin <jgodin@tadl.org> Signed-off-by: Ben Shum <bshum@biblio.org>
When first calculating the shelf expire time, we assume "now" as
the starting point by calling DateTime->now(). However, that gives
us the time in UTC. That's not good because closed dates are stored
timezone-aware. Instead, ask for server-local time.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Ben Shum <bshum@biblio.org>
Dan Wells [Thu, 1 May 2014 17:47:46 +0000 (13:47 -0400)]
LP#1314902: Restore header bar styles on results pages
Commit fc99f4f2 made an incomplete style change, changing
'results_header_bar' to be a class, but not changing the CSS. The
simplest solution is to restore 'results_header_bar' to be an id, as
this fixes the main view, the responsive view, and also any custom CSS
which might affect this id.
Srey Seng [Wed, 30 Apr 2014 22:20:17 +0000 (15:20 -0700)]
LP#1312945: authority.calculate_authority_linking and multiple linked tags
The function "authority.calculate_authority_linking" was not able to deal with
situations where there are multiple marc tags that are linkable. The function
only process the first tag that contains a linking_subfield and returns that
to be inserted into the authority_linking table, even when there are more than
one of the same tag with linking_subfield.
Added an additional loop to loop through each tag, for situations where there are
multiples of each tag.
Signed-off-by: Srey Seng <sreyseng@gmail.com> Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Mike Rylander [Wed, 30 Apr 2014 16:58:11 +0000 (12:58 -0400)]
LP#1312945: auth-auth linking: cache less agressively and look for all links
There was a logic inversion that was causing miss-use of a per-
record cache mechanism. I remove that entirely, as it's not helpful
in practice.
Also, after finding one use of a linked field we moved on to the
next, though it is possible for more than one link to exist for
different uses of a name, say. Now we'll loop through all fields
to find all possible linkages.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Srey Seng <sreyseng@gmail.com> Signed-off-by: Galen Charlton <gmc@esilibrary.com>
LP#1296937: (SIP2) Add ids_only parameter to _items functions
This allows the caller to skip loading of barcodes and/or titles when
they are not needed, such as when the plan is to return counts, not
details. Per bug 1321017, this is particular useful for patrons
that have metarecord holds.
Signed-off-by: Thomas Berezansky <tsbere@mvlc.org> Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Galen Charlton [Fri, 16 May 2014 17:35:01 +0000 (10:35 -0700)]
LP#1320048: remove last use of Date.W3CDTF() from closed dates editor
To test, verify that the closed dates editor continues to
function normally, i.e.,
* single all-day closures can be added
* a multi-day closing can be added
* one can set a "detailed closing" with a custom start
time and end time
* existing closures are display properly
Signed-off-by: Galen Charlton <gmc@esilibrary.com> Signed-off-by: Jason Stephenson <jstephenson@mvlc.org>
Galen Charlton [Fri, 16 May 2014 17:03:45 +0000 (10:03 -0700)]
LP#1320048: correctly display closures in the closed dates editor
This patch fixes a problem introduced by the patch for bug 1187035
that caused the closed dates editor to display all closures as if
they started and ended at the current time.
Signed-off-by: Galen Charlton <gmc@esilibrary.com> Signed-off-by: Jason Stephenson <jstephenson@mvlc.org>