diff options
author | Matthew Somerville <matthew@mysociety.org> | 2016-04-26 12:16:26 +0100 |
---|---|---|
committer | Matthew Somerville <matthew@mysociety.org> | 2016-04-26 13:41:18 +0100 |
commit | 810759ae13d7dca1b16f36841ca7d364c1738cb5 (patch) | |
tree | 64c4691165ed502eb9e2e81584fb2571974edbd1 /perllib | |
parent | 0246627c929f700a46c5065ac1f70fe14aa1ac03 (diff) |
Skip fetched updates if they're out of date range.
Even when we ask for a specific range of dates, we sometimes get given
more in the response.
Diffstat (limited to 'perllib')
-rw-r--r-- | perllib/Open311/GetServiceRequestUpdates.pm | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/perllib/Open311/GetServiceRequestUpdates.pm b/perllib/Open311/GetServiceRequestUpdates.pm index 11bc1e64f..daa5fb64d 100644 --- a/perllib/Open311/GetServiceRequestUpdates.pm +++ b/perllib/Open311/GetServiceRequestUpdates.pm @@ -89,6 +89,13 @@ sub update_comments { # what problem it belongs to so just skip next unless $request_id; + my $comment_time = eval { + DateTime::Format::W3CDTF->parse_datetime( $request->{updated_datetime} || "" ); + }; + next if $@; + my $updated = DateTime::Format::W3CDTF->format_datetime($comment_time->clone->set_time_zone('UTC')); + next if @args && ($updated lt $args[0] || $updated gt $args[1]); + my $problem; my $criteria = { external_id => $request_id, @@ -99,8 +106,6 @@ sub update_comments { my $c = $p->comments->search( { external_id => $request->{update_id} } ); if ( !$c->first ) { - my $comment_time = DateTime::Format::W3CDTF->parse_datetime( $request->{updated_datetime} ); - my $comment = $self->schema->resultset('Comment')->new( { problem => $p, |