aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Somerville <matthew@mysociety.org>2019-07-11 15:11:58 +0100
committerMatthew Somerville <matthew@mysociety.org>2019-07-12 15:11:52 +0100
commitab3799ad3e5147f80a60435dfa720eb71eaef8bf (patch)
treea36fef0a47546a4cfe27786abba0d3bd67c4ffa4
parent58fe7b2c649c29b09338c8ea76314aef29385bf5 (diff)
Do not store display-only extra fields on reports.
-rw-r--r--CHANGELOG.md1
-rw-r--r--perllib/FixMyStreet/App/Controller/Report/New.pm2
-rw-r--r--perllib/FixMyStreet/DB/Result/Contact.pm10
-rw-r--r--t/app/controller/report_new_open311.t1
4 files changed, 13 insertions, 1 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 89f215660..b16fa561d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -35,6 +35,7 @@
- Add new upload_files flag which sends files/photos as part of the
POST service request.
- Allow description in email template with placeholder.
+ - Do not store display-only extra fields on new reports.
* v2.6 (3rd May 2019)
- New features:
diff --git a/perllib/FixMyStreet/App/Controller/Report/New.pm b/perllib/FixMyStreet/App/Controller/Report/New.pm
index 7822f5cf3..2246f6aea 100644
--- a/perllib/FixMyStreet/App/Controller/Report/New.pm
+++ b/perllib/FixMyStreet/App/Controller/Report/New.pm
@@ -1077,7 +1077,7 @@ sub set_report_extras : Private {
my ($self, $c, $contacts, $param_prefix) = @_;
$param_prefix ||= "";
- my @metalist = map { [ $_->get_metadata_for_input, $param_prefix ] } @$contacts;
+ my @metalist = map { [ $_->get_metadata_for_storage, $param_prefix ] } @$contacts;
push @metalist, map { [ $_->get_extra_fields, "extra[" . $_->id . "]" ] } @{$c->stash->{report_extra_fields}};
my @extra;
diff --git a/perllib/FixMyStreet/DB/Result/Contact.pm b/perllib/FixMyStreet/DB/Result/Contact.pm
index 17620f279..3ce0ec66f 100644
--- a/perllib/FixMyStreet/DB/Result/Contact.pm
+++ b/perllib/FixMyStreet/DB/Result/Contact.pm
@@ -121,6 +121,16 @@ sub get_metadata_for_input {
return \@metadata;
}
+sub get_metadata_for_storage {
+ my $self = shift;
+ my $metadata = $self->get_metadata_for_input;
+
+ # Also ignore any that were only for textual display
+ my @metadata = grep { ($_->{variable} || '') ne 'false' } @$metadata;
+
+ return \@metadata;
+}
+
sub id_field {
my $self = shift;
return $self->get_extra_metadata('id_field') || 'fixmystreet_id';
diff --git a/t/app/controller/report_new_open311.t b/t/app/controller/report_new_open311.t
index dc9a26791..d2f39f40f 100644
--- a/t/app/controller/report_new_open311.t
+++ b/t/app/controller/report_new_open311.t
@@ -45,6 +45,7 @@ $mech->create_contact_ok(
category => 'Ball lighting',
email => '102',
extra => { _fields => [
+ { description => 'Message', code => 'message', required => 'false', variable => 'false', order => '0' },
{ description => 'Size', code => 'size', required => 'True', automated => '' },
{ description => 'Speed', code => 'speed', required => 'True', automated => 'server_set' },
{ description => 'Colour', code => 'colour', required => 'True', automated => 'hidden_field' },