aboutsummaryrefslogtreecommitdiffstats
path: root/bin/fixmystreet.com/update-areas
diff options
context:
space:
mode:
Diffstat (limited to 'bin/fixmystreet.com/update-areas')
-rwxr-xr-xbin/fixmystreet.com/update-areas46
1 files changed, 46 insertions, 0 deletions
diff --git a/bin/fixmystreet.com/update-areas b/bin/fixmystreet.com/update-areas
new file mode 100755
index 000000000..a8cc01769
--- /dev/null
+++ b/bin/fixmystreet.com/update-areas
@@ -0,0 +1,46 @@
+#!/usr/bin/perl -w
+
+# update-areas:
+# One-off script to populate the areas column of the problem table
+#
+# Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved.
+# Email: matthew@mysociety.org. WWW: http://www.mysociety.org
+#
+# $Id: update-areas,v 1.1 2007-08-24 12:27:30 matthew Exp $
+
+use strict;
+require 5.8.0;
+
+# Horrible boilerplate to set up appropriate library paths.
+use FindBin;
+use lib "$FindBin::Bin/../perllib";
+use lib "$FindBin::Bin/../commonlib/perllib";
+
+use mySociety::Config;
+use mySociety::DBHandle qw(dbh select_all);
+use mySociety::MaPit;
+use mySociety::VotingArea;
+
+BEGIN {
+ mySociety::Config::set_file("$FindBin::Bin/../conf/general");
+ mySociety::DBHandle::configure(
+ Name => mySociety::Config::get('FMS_DB_NAME'),
+ User => mySociety::Config::get('FMS_DB_USER'),
+ Password => mySociety::Config::get('FMS_DB_PASS'),
+ Host => mySociety::Config::get('FMS_DB_HOST', undef),
+ Port => mySociety::Config::get('FMS_DB_PORT', undef)
+ );
+}
+
+print "Fetching problems...\n";
+my $ids = select_all("select id, latitude, longitude from problem where areas=''");
+print "Updating areas...\n";
+my $c = 0;
+foreach (@$ids) {
+ my $areas = mySociety::MaPit::get_voting_areas_by_location({latitude=>$_->{latitude}, longitude=>$_->{longitude}}, 'polygon');
+ $areas = ',' . join(',', sort keys %$areas) . ',';
+ dbh()->do('update problem set areas=? where id=?', {}, $areas, $_->{id});
+ dbh()->commit();
+ print "Done: " . (++$c) . "/" . @$ids . "\n";
+}
+