diff options
author | Dave Arter <davea@mysociety.org> | 2018-04-04 10:46:11 +0100 |
---|---|---|
committer | Dave Arter <davea@mysociety.org> | 2018-04-04 12:49:01 +0100 |
commit | fe22a3815dbed8ab6afb43162b7814a45ca7a423 (patch) | |
tree | 656d6e8e30195d4fa9f587ee839050f959ef2db7 | |
parent | 8bb311d7f2b72eddbf320d16b521e5be86c219c3 (diff) |
Default to last two hours in GetServiceRequests
Also adds script for fetching the last 24hrs of reports
-rwxr-xr-x | bin/fetch-reports | 6 | ||||
-rwxr-xr-x | bin/fetch-reports-24hs | 35 | ||||
-rw-r--r-- | perllib/Open311/GetServiceRequests.pm | 8 | ||||
-rw-r--r-- | t/open311/getservicerequests.t | 26 |
4 files changed, 66 insertions, 9 deletions
diff --git a/bin/fetch-reports b/bin/fetch-reports index 665b4aff0..20de10f4b 100755 --- a/bin/fetch-reports +++ b/bin/fetch-reports @@ -1,8 +1,8 @@ #!/usr/bin/env perl # -# This script utilises the Open311 extension explained at -# https://github.com/mysociety/FixMyStreet/wiki/Open311-FMS---Proposed-differences-to-Open311 -# to fetch updates on service requests. +# This script utilises Open311 as described at +# http://wiki.open311.org/GeoReport_v2/#get-service-requests +# to fetch service requests. use strict; use warnings; diff --git a/bin/fetch-reports-24hs b/bin/fetch-reports-24hs new file mode 100755 index 000000000..ec0eabc2e --- /dev/null +++ b/bin/fetch-reports-24hs @@ -0,0 +1,35 @@ +#!/usr/bin/env perl +# +# This script utilises Open311 as described at +# http://wiki.open311.org/GeoReport_v2/#get-service-requests +# to fetch service requests. + +use strict; +use warnings; +require 5.8.0; + +BEGIN { + use File::Basename qw(dirname); + use File::Spec; + my $d = dirname(File::Spec->rel2abs($0)); + require "$d/../setenv.pl"; +} + +use DateTime; + +use CronFns; +my ($verbose, $nomail) = CronFns::options(); + +use Open311::GetServiceRequests; + +my $dt = DateTime->now(); +my $dt_24hrs_ago = $dt->clone; +$dt_24hrs_ago->add( hours => -24 ); + +my $reports = Open311::GetServiceRequests->new( + verbose => 1, + start_date => $dt_24hrs_ago, + end_date => $dt +); + +$reports->fetch; diff --git a/perllib/Open311/GetServiceRequests.pm b/perllib/Open311/GetServiceRequests.pm index ed920f84b..dc22c61c5 100644 --- a/perllib/Open311/GetServiceRequests.pm +++ b/perllib/Open311/GetServiceRequests.pm @@ -47,9 +47,15 @@ sub create_problems { if ( $self->start_date || $self->end_date ) { return 0 unless $self->start_date && $self->end_date; - $args->{start_date} = DateTime::Format::W3CDTF->format_datetime( $self->start_date ); $args->{end_date} = DateTime::Format::W3CDTF->format_datetime( $self->end_date ); + } else { + my $end_dt = DateTime->now(); + my $start_dt = $end_dt->clone; + $start_dt->add( hours => -2 ); + + $args->{start_date} = DateTime::Format::W3CDTF->format_datetime( $start_dt ); + $args->{end_date} = DateTime::Format::W3CDTF->format_datetime( $end_dt ); } my $requests = $open311->get_service_requests( $args ); diff --git a/t/open311/getservicerequests.t b/t/open311/getservicerequests.t index f8795bd61..a28c6e3cf 100644 --- a/t/open311/getservicerequests.t +++ b/t/open311/getservicerequests.t @@ -58,18 +58,32 @@ my $o = Open311->new( test_get_returns => { 'requests.xml' => $requests_xml } ); +my $p1_date = $dtf->parse_datetime('2010-04-14T06:37:38-08:00') + ->set_time_zone( + FixMyStreet->time_zone || FixMyStreet->local_time_zone + ); +my $p2_date = $dtf->parse_datetime('2010-04-15T06:37:38-08:00') + ->set_time_zone( + FixMyStreet->time_zone || FixMyStreet->local_time_zone + ); +my $start_date = $p1_date->clone; +$start_date->add( hours => -2); +my $end_date = $p2_date->clone; +$end_date->add( hours => 2); + + subtest 'basic parsing checks' => sub { - my $update = Open311::GetServiceRequests->new( system_user => $user ); + my $update = Open311::GetServiceRequests->new( + system_user => $user, + start_date => $start_date, + end_date => $end_date + ); FixMyStreet::override_config { MAPIT_URL => 'http://mapit.uk/', }, sub { $update->create_problems( $o, $body ); }; - my $p1_date = $dtf->parse_datetime('2010-04-14T06:37:38-08:00') - ->set_time_zone( - FixMyStreet->time_zone || FixMyStreet->local_time_zone - ); my $p = FixMyStreet::DB->resultset('Problem')->search( { external_id => 638344 } @@ -277,6 +291,8 @@ for my $test ( my $update = Open311::GetServiceRequests->new( system_user => $user, convert_latlong => 1, + start_date => $start_date, + end_date => $end_date ); FixMyStreet::override_config { |