diff options
| author | Struan Donald <struan@exo.org.uk> | 2018-03-28 16:08:07 +0100 | 
|---|---|---|
| committer | Dave Arter <davea@mysociety.org> | 2018-03-29 16:04:32 +0100 | 
| commit | a540e87605871ffaa869cb987039d12c79f3b28c (patch) | |
| tree | 525f94104a006e91b24e9f2e068ab68749095704 | |
| parent | 307cc20b6ed92a983ba859ec5173066d68ec3aa9 (diff) | |
fix timezone problems with offline inspector comments
Comments added offline by an inspector set the time in JavaScript using
a UTC epoch. We need to add the FMS timezone to this so it's in the
timezone the database expects for timestamps otherwise it's incorrect
when we fetch it back out
| -rw-r--r-- | perllib/FixMyStreet/App/Controller/Report.pm | 8 | ||||
| -rw-r--r-- | t/app/controller/report_inspect.t | 6 | 
2 files changed, 12 insertions, 2 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Report.pm b/perllib/FixMyStreet/App/Controller/Report.pm index df4dc5f77..1646bc4d5 100644 --- a/perllib/FixMyStreet/App/Controller/Report.pm +++ b/perllib/FixMyStreet/App/Controller/Report.pm @@ -475,7 +475,13 @@ sub inspect : Private {              if ($update_text || %update_params) {                  my $timestamp = \'current_timestamp';                  if (my $saved_at = $c->get_param('saved_at')) { -                    $timestamp = DateTime->from_epoch( epoch => $saved_at ); +                    # this comes in as a UTC epoch but the database expects everything +                    # 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, +                        epoch => $saved_at +                    );                  }                  my $name = $c->user->from_body ? $c->user->from_body->name : $c->user->name;                  $problem->add_to_comments( { diff --git a/t/app/controller/report_inspect.t b/t/app/controller/report_inspect.t index 39dd57444..5447c744e 100644 --- a/t/app/controller/report_inspect.t +++ b/t/app/controller/report_inspect.t @@ -613,7 +613,11 @@ FixMyStreet::override_config {      subtest "test saved-at setting" => sub {          $report->comments->delete;          $mech->get_ok("/report/$report_id"); -        my $now = DateTime->now->subtract(days => 1); +        # 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 +        )->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 });          $report->discard_changes;  | 
