[open-ils-commits] [GIT] Evergreen ILS branch master updated. 41aa2f0441ae40ac91d4d30c6b3d3de96542849e

Evergreen Git git at git.evergreen-ils.org
Wed Mar 13 12:08:56 EDT 2013


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, master has been updated
       via  41aa2f0441ae40ac91d4d30c6b3d3de96542849e (commit)
       via  51f251a618fc2cb35a8203d2b87de1e8958ff287 (commit)
      from  3fd72b199329ea1a310e58beb6e86b66a8218b5f (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 41aa2f0441ae40ac91d4d30c6b3d3de96542849e
Author: Mike Rylander <mrylander at gmail.com>
Date:   Tue Mar 12 16:01:25 2013 -0400

    Allow nesting of create_date and edit_date filters
    
    As gently suggested by tsbere, this commit allows nesting of said
    filters.
    
    Signed-off-by: Mike Rylander <mrylander at gmail.com>
    Signed-off-by: Lebbeous Fogle-Weekley <lebbeous at esilibrary.com>
    Signed-off-by: Mike Rylander <mrylander at gmail.com>

diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Driver/Pg/QueryParser.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Driver/Pg/QueryParser.pm
index 9d713e6..fb49bbe 100644
--- a/Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Driver/Pg/QueryParser.pm
+++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Driver/Pg/QueryParser.pm
@@ -958,45 +958,6 @@ sub toSQL {
         $agg_record = 'CASE WHEN COUNT(DISTINCT m.source) = 1 THEN FIRST(m.source) ELSE NULL END AS record';
     }
 
-    # bre.create_date and bre.edit_date filtering
-    for my $datefilter ( qw/create_date edit_date/ ) {
-        my $cdate = $self->find_filter($datefilter);
-        if ($cdate && $cdate->args && scalar(@{$cdate->args}) > 0 && scalar(@{$cdate->args}) < 3) {
-            my ($cstart, $cend) = @{$cdate->args};
-
-            if (!$cstart and !$cend) {
-                # useless use of filter
-            } elsif (!$cstart or $cstart eq '-infinity') { # no start supplied
-                if ($cend eq 'infinity') {
-                    # useless use of filter
-                } else {
-                    # "before $cend"
-                    $cend = cleanse_ISO8601($cend);
-                    $limit_where .= <<"                    SQL";
-            AND bre.$datefilter <= \$_$$\$$cend\$_$$\$
-                    SQL
-                }
-    
-            } elsif (!$cend or $cend eq 'infinity') { # no end supplied
-                if ($cstart eq '-infinity') {
-                    # useless use of filter
-                } else { # "after $cstart"
-                    $cstart = cleanse_ISO8601($cstart);
-                    $limit_where .= <<"                    SQL";
-            AND bre.$datefilter >= \$_$$\$$cstart\$_$$\$
-                    SQL
-                }
-            } else { # both supplied
-                # "between $cstart and $cend"
-                $cstart = cleanse_ISO8601($cstart);
-                $cend = cleanse_ISO8601($cend);
-                $limit_where .= <<"                SQL";
-            AND bre.$datefilter BETWEEN \$_$$\$$cstart\$_$$\$ AND \$_$$\$$cend\$_$$\$
-                SQL
-            }
-        }
-    }
-
     my $sql = <<SQL;
 WITH
 $with
@@ -1310,6 +1271,42 @@ sub flatten {
                     $where .= $joiner if $where ne '';
                     $where .= "$key ${NOT}IN (" . join(',', map { $self->QueryParser->quote_value($_) } @{$filter->args}) . ')';
                 }
+
+            } elsif ($filter->name eq 'edit_date' or $filter->name eq 'create_date') {
+                # bre.create_date and bre.edit_date filtering
+                my $datefilter = $filter->name;
+
+                if ($filter && $filter->args && scalar(@{$filter->args}) > 0 && scalar(@{$filter->args}) < 3) {
+                    my ($cstart, $cend) = @{$filter->args};
+        
+                    if (!$cstart and !$cend) {
+                        # useless use of filter
+                    } elsif (!$cstart or $cstart eq '-infinity') { # no start supplied
+                        if ($cend eq 'infinity') {
+                            # useless use of filter
+                        } else {
+                            # "before $cend"
+                            $cend = cleanse_ISO8601($cend);
+                            $where .= $joiner if $where ne '';
+                            $where .= "bre.$datefilter <= \$_$$\$$cend\$_$$\$";
+                        }
+            
+                    } elsif (!$cend or $cend eq 'infinity') { # no end supplied
+                        if ($cstart eq '-infinity') {
+                            # useless use of filter
+                        } else { # "after $cstart"
+                            $cstart = cleanse_ISO8601($cstart);
+                            $where .= $joiner if $where ne '';
+                            $where .= "bre.$datefilter >= \$_$$\$$cstart\$_$$\$";
+                        }
+                    } else { # both supplied
+                        # "between $cstart and $cend"
+                        $cstart = cleanse_ISO8601($cstart);
+                        $cend = cleanse_ISO8601($cend);
+                        $where .= $joiner if $where ne '';
+                        $where .= "bre.$datefilter BETWEEN \$_$$\$$cstart\$_$$\$ AND \$_$$\$$cend\$_$$\$";
+                    }
+                }
             } elsif ($filter->name eq 'locations') {
                 if (@{$filter->args} > 0) {
                     my $spcdepth = $self->plan_level + 5;

commit 51f251a618fc2cb35a8203d2b87de1e8958ff287
Author: Mike Rylander <mrylander at gmail.com>
Date:   Fri Mar 8 15:13:11 2013 -0500

    Two new QP filters: create_date and edit_date
    
    These filter on the fields of the same name in biblio.record_entry.
    
    e.g.
        create_date(,2013-02-01)  =>  records created before 2013-02-01
        create_date(2013-02-01)   =>  records created since 2013-02-01
        create_date(2013-02-01,2013-02-28)  =>  records created in Feb 2013
        create_date(yesterday)    =>  records since created yesterday
    
    [LFW] Reviewed and added a single missing 'use' line; rewrote commit
    message; release note.
    
    Signed-off-by: Mike Rylander <mrylander at gmail.com>
    Signed-off-by: Lebbeous Fogle-Weekley <lebbeous at esilibrary.com>
    Signed-off-by: Mike Rylander <mrylander at gmail.com>

diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Driver/Pg/QueryParser.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Driver/Pg/QueryParser.pm
index 57558e5..9d713e6 100644
--- a/Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Driver/Pg/QueryParser.pm
+++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Driver/Pg/QueryParser.pm
@@ -4,6 +4,7 @@ use warnings;
 package OpenILS::Application::Storage::Driver::Pg::QueryParser;
 use OpenILS::Application::Storage::QueryParser;
 use base 'QueryParser';
+use OpenSRF::Utils qw/:datetime/;
 use OpenSRF::Utils::JSON;
 use OpenILS::Application::AppUtils;
 use OpenILS::Utils::CStoreEditor;
@@ -638,6 +639,8 @@ __PACKAGE__->add_search_filter( 'between' );
 __PACKAGE__->add_search_filter( 'during' );
 
 # various filters for limiting in various ways
+__PACKAGE__->add_search_filter( 'edit_date' );
+__PACKAGE__->add_search_filter( 'create_date' );
 __PACKAGE__->add_search_filter( 'statuses' );
 __PACKAGE__->add_search_filter( 'locations' );
 __PACKAGE__->add_search_filter( 'location_groups', sub { return __PACKAGE__->location_groups_callback(@_) } );
@@ -687,6 +690,7 @@ __PACKAGE__->add_search_modifier( 'metabib' );
 package OpenILS::Application::Storage::Driver::Pg::QueryParser::query_plan;
 use base 'QueryParser::query_plan';
 use OpenSRF::Utils::Logger qw($logger);
+use OpenSRF::Utils qw/:datetime/;
 use Data::Dumper;
 use OpenILS::Application::AppUtils;
 use OpenILS::Utils::CStoreEditor;
@@ -954,6 +958,45 @@ sub toSQL {
         $agg_record = 'CASE WHEN COUNT(DISTINCT m.source) = 1 THEN FIRST(m.source) ELSE NULL END AS record';
     }
 
+    # bre.create_date and bre.edit_date filtering
+    for my $datefilter ( qw/create_date edit_date/ ) {
+        my $cdate = $self->find_filter($datefilter);
+        if ($cdate && $cdate->args && scalar(@{$cdate->args}) > 0 && scalar(@{$cdate->args}) < 3) {
+            my ($cstart, $cend) = @{$cdate->args};
+
+            if (!$cstart and !$cend) {
+                # useless use of filter
+            } elsif (!$cstart or $cstart eq '-infinity') { # no start supplied
+                if ($cend eq 'infinity') {
+                    # useless use of filter
+                } else {
+                    # "before $cend"
+                    $cend = cleanse_ISO8601($cend);
+                    $limit_where .= <<"                    SQL";
+            AND bre.$datefilter <= \$_$$\$$cend\$_$$\$
+                    SQL
+                }
+    
+            } elsif (!$cend or $cend eq 'infinity') { # no end supplied
+                if ($cstart eq '-infinity') {
+                    # useless use of filter
+                } else { # "after $cstart"
+                    $cstart = cleanse_ISO8601($cstart);
+                    $limit_where .= <<"                    SQL";
+            AND bre.$datefilter >= \$_$$\$$cstart\$_$$\$
+                    SQL
+                }
+            } else { # both supplied
+                # "between $cstart and $cend"
+                $cstart = cleanse_ISO8601($cstart);
+                $cend = cleanse_ISO8601($cend);
+                $limit_where .= <<"                SQL";
+            AND bre.$datefilter BETWEEN \$_$$\$$cstart\$_$$\$ AND \$_$$\$$cend\$_$$\$
+                SQL
+            }
+        }
+    }
+
     my $sql = <<SQL;
 WITH
 $with
diff --git a/docs/RELEASE_NOTES_NEXT/search-record-date-filters.txt b/docs/RELEASE_NOTES_NEXT/search-record-date-filters.txt
new file mode 100644
index 0000000..84dea19
--- /dev/null
+++ b/docs/RELEASE_NOTES_NEXT/search-record-date-filters.txt
@@ -0,0 +1,11 @@
+Two new QP filters: create_date and edit_date
+=============================================
+
+These filter on the fields of the same name in biblio.record_entry.
+
+e.g.
+  * create_date(,2013-02-01)  =>  records created before 2013-02-01
+  * create_date(2013-02-01)   =>  records created since 2013-02-01
+  * create_date(2013-02-01,2013-02-28)  =>  records created in Feb 2013
+  * create_date(yesterday)    =>  records since created yesterday
+

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

Summary of changes:
 .../Application/Storage/Driver/Pg/QueryParser.pm   |   40 ++++++++++++++++++++
 .../search-record-date-filters.txt                 |   11 +++++
 2 files changed, 51 insertions(+), 0 deletions(-)
 create mode 100644 docs/RELEASE_NOTES_NEXT/search-record-date-filters.txt


hooks/post-receive
-- 
Evergreen ILS


More information about the open-ils-commits mailing list