diff options
Diffstat (limited to 'perllib/FixMyStreet')
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Around.pm | 2 | ||||
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Report/New.pm | 5 | ||||
-rw-r--r-- | perllib/FixMyStreet/Cobrand/FixMyStreet.pm | 2 | ||||
-rw-r--r-- | perllib/FixMyStreet/Cobrand/IsleOfWight.pm | 17 | ||||
-rw-r--r-- | perllib/FixMyStreet/DB/Result/Contact.pm | 7 | ||||
-rw-r--r-- | perllib/FixMyStreet/TestMech.pm | 27 |
6 files changed, 53 insertions, 7 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Around.pm b/perllib/FixMyStreet/App/Controller/Around.pm index ebb3d4839..f14d116cc 100644 --- a/perllib/FixMyStreet/App/Controller/Around.pm +++ b/perllib/FixMyStreet/App/Controller/Around.pm @@ -234,7 +234,7 @@ sub check_and_stash_category : Private { my @list_of_names = map { $_->name } values %bodies; my $csv = Text::CSV->new(); $csv->combine(@list_of_names); - $c->stash->{bodies} = \@bodies; + $c->stash->{around_bodies} = \@bodies; $c->{stash}->{list_of_names_as_string} = $csv->string; my $where = { body_id => [ keys %bodies ], }; diff --git a/perllib/FixMyStreet/App/Controller/Report/New.pm b/perllib/FixMyStreet/App/Controller/Report/New.pm index 06974cd09..5407ec937 100644 --- a/perllib/FixMyStreet/App/Controller/Report/New.pm +++ b/perllib/FixMyStreet/App/Controller/Report/New.pm @@ -102,19 +102,18 @@ sub report_new : Path : Args(0) { $c->stash->{template} = "report/new/fill_in_details.html"; $c->forward('setup_categories_and_bodies'); $c->forward('setup_report_extra_fields'); - $c->forward('generate_map'); $c->forward('check_for_category'); $c->forward('setup_report_extras'); # deal with the user and report and check both are happy - return unless $c->forward('check_form_submitted'); + $c->detach('generate_map') unless $c->forward('check_form_submitted'); $c->forward('/auth/check_csrf_token'); $c->forward('process_report'); $c->forward('process_user'); $c->forward('/photo/process_photo'); - return unless $c->forward('check_for_errors'); + $c->detach('generate_map') unless $c->forward('check_for_errors'); $c->forward('save_user_and_report'); $c->forward('redirect_or_confirm_creation'); } diff --git a/perllib/FixMyStreet/Cobrand/FixMyStreet.pm b/perllib/FixMyStreet/Cobrand/FixMyStreet.pm index 38e9e09a0..72ba51dd8 100644 --- a/perllib/FixMyStreet/Cobrand/FixMyStreet.pm +++ b/perllib/FixMyStreet/Cobrand/FixMyStreet.pm @@ -42,7 +42,7 @@ sub munge_around_category_where { my ($self, $where) = @_; my $user = $self->{c}->user; - my @iow = grep { $_->name eq 'Isle of Wight Council' } @{ $self->{c}->stash->{bodies} }; + my @iow = grep { $_->name eq 'Isle of Wight Council' } @{ $self->{c}->stash->{around_bodies} }; return unless @iow; # display all the categories on Isle of Wight at the moment as there's no way to diff --git a/perllib/FixMyStreet/Cobrand/IsleOfWight.pm b/perllib/FixMyStreet/Cobrand/IsleOfWight.pm index 753ac3b72..6a719604d 100644 --- a/perllib/FixMyStreet/Cobrand/IsleOfWight.pm +++ b/perllib/FixMyStreet/Cobrand/IsleOfWight.pm @@ -58,6 +58,15 @@ sub problems_restriction { sub get_geocoder { 'OSM' } +sub lookup_site_code_config { { + buffer => 50, # metres + url => "https://tilma.mysociety.org/mapserver/iow", + srsname => "urn:ogc:def:crs:EPSG::27700", + typename => "streets", + property => "SITE_CODE", + accept_feature => sub { 1 } +} } + sub open311_pre_send { my ($self, $row, $open311) = @_; @@ -81,6 +90,14 @@ sub open311_config { { name => 'description', value => $row->detail }; + if (!$row->get_extra_field_value('site_code')) { + if (my $site_code = $self->lookup_site_code($row)) { + push @$extra, + { name => 'site_code', + value => $site_code }; + } + } + $row->set_extra_fields(@$extra); } diff --git a/perllib/FixMyStreet/DB/Result/Contact.pm b/perllib/FixMyStreet/DB/Result/Contact.pm index bc91c84ee..a99915fb4 100644 --- a/perllib/FixMyStreet/DB/Result/Contact.pm +++ b/perllib/FixMyStreet/DB/Result/Contact.pm @@ -98,6 +98,13 @@ sub category_display { $self->translate_column('category'); } +sub groups { + my $self = shift; + my $groups = $self->get_extra_metadata('group') || []; + $groups = [ $groups ] unless ref $groups eq 'ARRAY'; + return $groups; +} + sub get_all_metadata { my $self = shift; my @metadata = @{$self->get_extra_fields}; diff --git a/perllib/FixMyStreet/TestMech.pm b/perllib/FixMyStreet/TestMech.pm index 927e4556c..cc2020b63 100644 --- a/perllib/FixMyStreet/TestMech.pm +++ b/perllib/FixMyStreet/TestMech.pm @@ -56,6 +56,26 @@ sub logged_in_ok { "logged in" ); } +=head2 uniquify_email + +Given an email address, will add the caller to it so that it can be unique per +file. You can pass a caller file in yourself if e.g. you're another function in +this file. + +=cut + +sub uniquify_email { + my ($self, $email, $file) = @_; + + $file = (caller)[1] unless $file; + (my $pkg = $file) =~ s{/}{}g; + + if ($email =~ /@/ && $email !~ /^pkg-/) { + $email = "pkg-$pkg-$email"; + } + return $email; +} + =head2 create_user_ok $user = $mech->create_user_ok( $email ); @@ -68,8 +88,9 @@ sub create_user_ok { my $self = shift; my ( $username, %extra ) = @_; + $username = $self->uniquify_email($username, (caller)[1]); my $params = { %extra }; - $username =~ /@/ ? $params->{email} = $username : $params->{phone} = $username; + $username =~ /@/ ? ($params->{email} = $username) : ($params->{phone} = $username); my $user = FixMyStreet::DB->resultset('User')->find_or_create($params); ok $user, "found/created user for $username"; @@ -88,6 +109,7 @@ sub log_in_ok { my $mech = shift; my $username = shift; + $username = $mech->uniquify_email($username, (caller)[1]); my $user = $mech->create_user_ok($username); # remember the old password and then change it to a known one @@ -663,8 +685,9 @@ sub create_problems_for_body { my $dt = $params->{dt} || DateTime->now(); + my $email = $mech->uniquify_email('test@example.com', (caller)[1]); my $user = $params->{user} || - FixMyStreet::DB->resultset('User')->find_or_create( { email => 'test@example.com', name => 'Test User' } ); + FixMyStreet::DB->resultset('User')->find_or_create( { email => $email, name => 'Test User' } ); delete $params->{user}; delete $params->{dt}; |