aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--perllib/FixMyStreet/App/Controller/Report.pm2
-rw-r--r--perllib/Open311/GetServiceRequestUpdates.pm10
-rw-r--r--perllib/Open311/GetServiceRequests.pm8
-rw-r--r--t/app/controller/report_inspect.t2
-rw-r--r--t/open311/getservicerequests.t9
-rw-r--r--t/open311/getservicerequestupdates.t6
6 files changed, 20 insertions, 17 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Report.pm b/perllib/FixMyStreet/App/Controller/Report.pm
index e032caa09..7f798f4f4 100644
--- a/perllib/FixMyStreet/App/Controller/Report.pm
+++ b/perllib/FixMyStreet/App/Controller/Report.pm
@@ -534,7 +534,7 @@ sub inspect : Private {
# to have the FMS timezone so we need to add the timezone otherwise
# dates come back out the database at time +/- timezone offset.
$timestamp = DateTime->from_epoch(
- time_zone => FixMyStreet->time_zone || FixMyStreet->local_time_zone,
+ time_zone => FixMyStreet->local_time_zone,
epoch => $saved_at
);
}
diff --git a/perllib/Open311/GetServiceRequestUpdates.pm b/perllib/Open311/GetServiceRequestUpdates.pm
index 263877e0a..3b436aaa7 100644
--- a/perllib/Open311/GetServiceRequestUpdates.pm
+++ b/perllib/Open311/GetServiceRequestUpdates.pm
@@ -94,7 +94,8 @@ sub update_comments {
next unless $request_id || $request->{fixmystreet_id};
my $comment_time = eval {
- DateTime::Format::W3CDTF->parse_datetime( $request->{updated_datetime} || "" );
+ DateTime::Format::W3CDTF->parse_datetime( $request->{updated_datetime} || "" )
+ ->set_time_zone(FixMyStreet->local_time_zone);
};
next if $@;
my $updated = DateTime::Format::W3CDTF->format_datetime($comment_time->clone->set_time_zone('UTC'));
@@ -190,7 +191,12 @@ sub update_comments {
$comment->state('hidden') unless $comment->text || $comment->photo
|| ($comment->problem_state && $state ne $old_state);
- $p->lastupdate( $comment->created );
+ # As comment->created has been looked at above, its time zone has been shifted
+ # to TIME_ZONE (if set). We therefore need to set it back to local before
+ # insertion. We also then need a clone, otherwise the setting of lastupdate
+ # will *also* reshift comment->created's time zone to TIME_ZONE.
+ my $created = $comment->created->set_time_zone(FixMyStreet->local_time_zone);
+ $p->lastupdate($created->clone);
$p->update;
$comment->insert();
diff --git a/perllib/Open311/GetServiceRequests.pm b/perllib/Open311/GetServiceRequests.pm
index 215361a10..194d8d296 100644
--- a/perllib/Open311/GetServiceRequests.pm
+++ b/perllib/Open311/GetServiceRequests.pm
@@ -109,9 +109,7 @@ sub create_problems {
my $updated_time = eval {
DateTime::Format::W3CDTF->parse_datetime(
$request->{updated_datetime} || ""
- )->set_time_zone(
- FixMyStreet->time_zone || FixMyStreet->local_time_zone
- );
+ )->set_time_zone(FixMyStreet->local_time_zone);
};
if ($@) {
warn "Not creating problem $request_id for @{[$body->name]}, bad update time"
@@ -125,9 +123,7 @@ sub create_problems {
my $created_time = eval {
DateTime::Format::W3CDTF->parse_datetime(
$request->{requested_datetime} || ""
- )->set_time_zone(
- FixMyStreet->time_zone || FixMyStreet->local_time_zone
- );
+ )->set_time_zone(FixMyStreet->local_time_zone);
};
$created_time = $updated_time if $@;
diff --git a/t/app/controller/report_inspect.t b/t/app/controller/report_inspect.t
index 397dd1b00..ef05288c7 100644
--- a/t/app/controller/report_inspect.t
+++ b/t/app/controller/report_inspect.t
@@ -749,7 +749,7 @@ FixMyStreet::override_config {
# set the timezone on this so the date comparison below doesn't fail due to mismatched
# timezones
my $now = DateTime->now(
- time_zone => FixMyStreet->time_zone || FixMyStreet->local_time_zone
+ time_zone => FixMyStreet->local_time_zone
)->subtract(days => 1);
$mech->submit_form(button => 'save', form_id => 'report_inspect_form',
fields => { include_update => 1, public_update => 'An update', saved_at => $now->epoch });
diff --git a/t/open311/getservicerequests.t b/t/open311/getservicerequests.t
index f4eae59b1..55bb9ba11 100644
--- a/t/open311/getservicerequests.t
+++ b/t/open311/getservicerequests.t
@@ -76,13 +76,9 @@ my $o = Open311->new(
);
my $p1_date = $dtf->parse_datetime('2010-04-14T06:37:38-08:00')
- ->set_time_zone(
- FixMyStreet->time_zone || FixMyStreet->local_time_zone
- );
+ ->set_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
- );
+ ->set_time_zone(FixMyStreet->local_time_zone);
my $start_date = $p1_date->clone;
$start_date->add( hours => -2);
my $end_date = $p2_date->clone;
@@ -96,6 +92,7 @@ subtest 'basic parsing checks' => sub {
end_date => $end_date
);
FixMyStreet::override_config {
+ TIME_ZONE => 'Asia/Tokyo',
MAPIT_URL => 'http://mapit.uk/',
}, sub {
$update->create_problems( $o, $body );
diff --git a/t/open311/getservicerequestupdates.t b/t/open311/getservicerequestupdates.t
index 573e23cfc..f680985a4 100644
--- a/t/open311/getservicerequestupdates.t
+++ b/t/open311/getservicerequestupdates.t
@@ -557,7 +557,11 @@ subtest 'date for comment correct' => sub {
my $o = Open311->new( jurisdiction => 'mysociety', endpoint => 'http://example.com', test_mode => 1, test_get_returns => { 'servicerequestupdates.xml' => $local_requests_xml } );
my $update = Open311::GetServiceRequestUpdates->new( system_user => $user );
- $update->update_comments( $o, $bodies{2482} );
+ FixMyStreet::override_config {
+ TIME_ZONE => 'Australia/Sydney',
+ }, sub {
+ $update->update_comments( $o, $bodies{2482} );
+ };
my $comment = $problem->comments->first;
is $comment->created, $dt, 'created date set to date from XML';