aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/FixMyStreet/App/Controller/Admin.pm
diff options
context:
space:
mode:
authorMatthew Somerville <matthew-github@dracos.co.uk>2018-09-24 13:06:44 +0100
committerMatthew Somerville <matthew-github@dracos.co.uk>2018-09-25 10:57:12 +0100
commitcdd94a3de1445d0aea4dfc8c18cbae9e315bdda9 (patch)
tree86e5f23db56e5d632d00b812af8988a158997472 /perllib/FixMyStreet/App/Controller/Admin.pm
parent785c6cebec327ebf1518c08f1447dbd12224b952 (diff)
Speed up fetching lists of bodies.
Use a HashRefInflator wherever all_sorted is used, with consequential changes to deal with it now not being an object (e.g. add some with_* functions for manual fetching of extra data).
Diffstat (limited to 'perllib/FixMyStreet/App/Controller/Admin.pm')
-rw-r--r--perllib/FixMyStreet/App/Controller/Admin.pm12
1 files changed, 8 insertions, 4 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Admin.pm b/perllib/FixMyStreet/App/Controller/Admin.pm
index 7c81251e8..1158b688a 100644
--- a/perllib/FixMyStreet/App/Controller/Admin.pm
+++ b/perllib/FixMyStreet/App/Controller/Admin.pm
@@ -2147,10 +2147,14 @@ sub check_page_allowed : Private {
sub fetch_all_bodies : Private {
my ($self, $c ) = @_;
- my @bodies = $c->model('DB::Body')->translated->all_sorted;
- if ( $c->cobrand->moniker eq 'zurich' ) {
- @bodies = $c->cobrand->admin_fetch_all_bodies( @bodies );
- }
+ my @bodies = $c->cobrand->call_hook('admin_fetch_all_bodies') || do {
+ my $bodies = $c->model('DB::Body')->search(undef, {
+ columns => [ "id", "name", "deleted", "parent" ],
+ })->with_parent_name;
+ $bodies = $bodies->with_defect_type_count if $c->stash->{with_defect_type_count};
+ $bodies->translated->all_sorted;
+ };
+
$c->stash->{bodies} = \@bodies;
return 1;