[open-ils-commits] [GIT] Evergreen ILS branch rel_2_2 updated. fb103be06ed98b1cca9dd1e4bfbe91377e978498

Evergreen Git git at git.evergreen-ils.org
Tue Oct 9 13:58:26 EDT 2012


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Evergreen ILS".

The branch, rel_2_2 has been updated
       via  fb103be06ed98b1cca9dd1e4bfbe91377e978498 (commit)
       via  c5bf1c88b9cb072f7d00df6f3ded9280b5b85f56 (commit)
      from  5842afbf1590d6ff580168b8f59640d0f8a6f0e0 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit fb103be06ed98b1cca9dd1e4bfbe91377e978498
Author: Dan Scott <dan at coffeecode.net>
Date:   Mon Oct 8 15:08:47 2012 -0400

    Checkout: further validation of due date override
    
    The check_past() function failed if given a date that was not strictly
    in YYYY-mm-dd format; interestingly, a common transposition typo such
    as "0212-10-20" results in "212-10-20" getting passed to check_past(),
    and therefore generating an invalid date. Throw an exception in
    check_past() rather than returning true, because we are not in fact
    stating that the due date is in the past - and catch the exception and
    flag the due date override box accordingly in the checkout screen.
    
    We could bubble the exception up to the user, but hopefully highlighting
    the checkout box as being in an invalid state will catch the attention
    of the users.
    
    [LFW: Slightly amended a comment in OpenILS/WWW/EGCatLoader/Util.pm]
    
    Signed-off-by: Dan Scott <dan at coffeecode.net>
    Signed-off-by: Lebbeous Fogle-Weekley <lebbeous at esilibrary.com>

diff --git a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Util.pm b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Util.pm
index 54ad3ff..b11d0bf 100644
--- a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Util.pm
+++ b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Util.pm
@@ -169,7 +169,7 @@ sub init_ro_object_cache {
         my $date = shift;
 
         # Probably an accidental entry like '0212' instead of '2012',
-        # but 1) the leading 0 gets stripped in CStoreEditor and
+        # but 1) the leading 0 may get stripped in cstore and
         # 2) DateTime::Format::ISO8601 returns an error as years
         # must be 2 or 4 digits
         if ($date =~ m/^\d{3}-/) {
diff --git a/Open-ILS/xul/staff_client/chrome/content/util/date.js b/Open-ILS/xul/staff_client/chrome/content/util/date.js
index fb95bee..47c3e21 100644
--- a/Open-ILS/xul/staff_client/chrome/content/util/date.js
+++ b/Open-ILS/xul/staff_client/chrome/content/util/date.js
@@ -24,8 +24,16 @@ util.date.check = function(format,date) {
 
 util.date.check_past = function(format,date) {
     if (format != 'YYYY-MM-DD') { throw('I only understand YYYY-MM-DD.  Fix me if you want.'); }
-    var yyyy = date.substr(0,4); var mm = date.substr(5,2); var dd = date.substr(8,2);
+    var yyyy = date.substr(0,4);
+    var mm = date.substr(5,2);
+    var dd = date.substr(8,2);
     var test_date = new Date( yyyy, mm - 1, dd );
+
+    /* Ensure our date is valid */
+    if (isNaN(test_date.getTime())) {
+        throw('The date "' + date + '" is not valid.');
+    }
+
     date = util.date.formatted_date(new Date(),'%F');
     yyyy = date.substr(0,4); mm = date.substr(5,2); dd = date.substr(8,2);
     var today = new Date( yyyy, mm - 1, dd );
diff --git a/Open-ILS/xul/staff_client/server/circ/checkout.js b/Open-ILS/xul/staff_client/server/circ/checkout.js
index 92bece2..f2fac17 100644
--- a/Open-ILS/xul/staff_client/server/circ/checkout.js
+++ b/Open-ILS/xul/staff_client/server/circ/checkout.js
@@ -120,7 +120,7 @@ circ.checkout.prototype = {
                         ['change'],
                         function(ev) { 
                             try {
-				document.getElementById('checkout_duedate_checkbox').checked = true;
+                                document.getElementById('checkout_duedate_checkbox').checked = true;
                                 if (obj.check_date(ev.target)) {
                                     ev.target.parentNode.setAttribute('style','');
                                 } else {
@@ -349,10 +349,17 @@ circ.checkout.prototype = {
             obj.controller.view.checkout_barcode_entry_textbox.disabled = false;
             obj.controller.view.cmd_checkout_submit.setAttribute('disabled','false');
             obj.controller.view.cmd_checkout_submit.disabled = false;
-            if (util.date.check_past('YYYY-MM-DD',node.value) ) {
-                obj.controller.view.checkout_barcode_entry_textbox.setAttribute('disabled','true');
-                obj.controller.view.cmd_checkout_submit.setAttribute('disabled','true');
-                return false;
+            try {
+                if (util.date.check_past('YYYY-MM-DD',node.value) ) {
+                    obj.controller.view.checkout_barcode_entry_textbox.setAttribute('disabled','true');
+                    obj.controller.view.cmd_checkout_submit.setAttribute('disabled','true');
+                    return false;
+                }
+            }
+            catch (E) {
+                    obj.controller.view.checkout_barcode_entry_textbox.setAttribute('disabled','true');
+                    obj.controller.view.cmd_checkout_submit.setAttribute('disabled','true');
+                    return false;
             }
             return true;
         } catch(E) {

commit c5bf1c88b9cb072f7d00df6f3ded9280b5b85f56
Author: Dan Scott <dan at coffeecode.net>
Date:   Mon Oct 8 11:25:41 2012 -0400

    TPAC: Invalid due dates cause 500 server error
    
    CStore appears to return dates with leading 0s (such as '0212-10-08
    23:59:59-05:17:32') with the leading 0s stripped off, resulting in
    cases with 1-digit or 3-digit years for which DateTime::Format::ISO8601
    returns an error.
    
    We can protect against this problem by adding some defensive code to the
    TPAC utility method to add the 0s back to the start of the year. We can
    also log the problem when it occurs so that administrators can fix the
    problem dates in the database.
    
    Signed-off-by: Dan Scott <dan at coffeecode.net>
    Signed-off-by: Lebbeous Fogle-Weekley <lebbeous at esilibrary.com>

diff --git a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Util.pm b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Util.pm
index 5f27425..54ad3ff 100644
--- a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Util.pm
+++ b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Util.pm
@@ -167,7 +167,22 @@ sub init_ro_object_cache {
     # turns an ISO date into something TT can understand
     $ro_object_subs->{parse_datetime} = sub {
         my $date = shift;
-        $date = DateTime::Format::ISO8601->new->parse_datetime(cleanse_ISO8601($date));
+
+        # Probably an accidental entry like '0212' instead of '2012',
+        # but 1) the leading 0 gets stripped in CStoreEditor and
+        # 2) DateTime::Format::ISO8601 returns an error as years
+        # must be 2 or 4 digits
+        if ($date =~ m/^\d{3}-/) {
+            $logger->warn("Invalid date had a 3-digit year: $date");
+            $date = '0' . $date;
+        } elsif ($date =~ m/^\d{1}-/) {
+            $logger->warn("Invalid date had a 1-digit year: $date");
+            $date = '000' . $date;
+        }
+
+        my $cleansed_date = cleanse_ISO8601($date);
+
+        $date = DateTime::Format::ISO8601->new->parse_datetime($cleansed_date);
         return sprintf(
             "%0.2d:%0.2d:%0.2d %0.2d-%0.2d-%0.4d",
             $date->hour,

-----------------------------------------------------------------------

Summary of changes:
 .../perlmods/lib/OpenILS/WWW/EGCatLoader/Util.pm   |   17 ++++++++++++++++-
 .../xul/staff_client/chrome/content/util/date.js   |   10 +++++++++-
 Open-ILS/xul/staff_client/server/circ/checkout.js  |   17 ++++++++++++-----
 3 files changed, 37 insertions(+), 7 deletions(-)


hooks/post-receive
-- 
Evergreen ILS


More information about the open-ils-commits mailing list