aboutsummaryrefslogtreecommitdiffstats
path: root/bin/send-comments
diff options
context:
space:
mode:
Diffstat (limited to 'bin/send-comments')
-rwxr-xr-xbin/send-comments56
1 files changed, 41 insertions, 15 deletions
diff --git a/bin/send-comments b/bin/send-comments
index 4955cb2f3..3549113c9 100755
--- a/bin/send-comments
+++ b/bin/send-comments
@@ -1,7 +1,10 @@
#!/usr/bin/env perl
-# send-reports:
-# Send new problem reports to councils
+# send-comments:
+# Send comments/updates on reports to bodies
+# In Open311 parlance these are 'service request updates' and are sent using
+# mySociety's proposed extension to the Open311 Georeport v2 spec:
+# https://github.com/mysociety/fixmystreet/wiki/Open311-FMS---Proposed-differences-to-Open311
#
# Copyright (c) 2011 UK Citizens Online Democracy. All rights reserved.
# Email: matthew@mysociety.org. WWW: http://www.mysociety.org
@@ -23,24 +26,28 @@ use mySociety::EmailUtil;
use Open311;
-# maximum number of webservice attempts to send before not trying any more (XXX may be better in config?)
-use constant SEND_FAIL_RETRIES_CUTOFF => 3;
-
# send_method config values found in by-area config data, for selecting to appropriate method
use constant SEND_METHOD_EMAIL => 'email';
use constant SEND_METHOD_OPEN311 => 'Open311';
+use constant COUNCIL_ID_OXFORDSHIRE => 2237;
+
# Set up site, language etc.
my ($verbose, $nomail) = CronFns::options();
my $base_url = mySociety::Config::get('BASE_URL');
my $site = CronFns::site($base_url);
-my $councils = FixMyStreet::App->model('DB::Open311Conf')->search( {
+my $bodies = FixMyStreet::App->model('DB::Body')->search( {
send_method => SEND_METHOD_OPEN311,
send_comments => 1,
} );
-while ( my $council = $councils->next ) {
+while ( my $body = $bodies->next ) {
+
+ # Oxfordshire (OCC) is special:
+ # we do *receive* service_request_updates (aka comments) for OCC, but we never *send* them, so skip this pass
+ next if $body->areas->{+COUNCIL_ID_OXFORDSHIRE};
+
my $use_extended = 0;
my $comments = FixMyStreet::App->model('DB::Comment')->search( {
'me.whensent' => undef,
@@ -49,7 +56,7 @@ while ( my $council = $councils->next ) {
'me.confirmed' => { '!=' => undef },
'problem.whensent' => { '!=' => undef },
'problem.external_id' => { '!=' => undef },
- 'problem.council' => { -like => '%' . $council->area_id .'%' },
+ 'problem.bodies_str' => { -like => '%' . $body->id . '%' },
'problem.send_method_used' => 'Open311',
},
{
@@ -57,18 +64,25 @@ while ( my $council = $councils->next ) {
}
);
- if ( $council->area_id == 2482 ) {
+ if ( $body->areas->{2482} ) {
$use_extended = 1;
}
- my $o = Open311->new(
- endpoint => $council->endpoint,
- jurisdiction => $council->jurisdiction,
- api_key => $council->api_key,
+ my %open311_conf = (
+ endpoint => $body->endpoint,
+ jurisdiction => $body->jurisdiction,
+ api_key => $body->api_key,
use_extended_updates => $use_extended,
);
- if ( $council->area_id =~ /2482/ ) {
+
+ if ( $body->send_extended_statuses ) {
+ $open311_conf{extended_statuses} = 1;
+ }
+
+ my $o = Open311->new( %open311_conf );
+
+ if ( $body->areas->{2482} ) {
my $endpoints = $o->endpoints;
$endpoints->{update} = 'update.xml';
$endpoints->{service_request_updates} = 'update.xml';
@@ -78,11 +92,23 @@ while ( my $council = $councils->next ) {
while ( my $comment = $comments->next ) {
my $cobrand = FixMyStreet::Cobrand->get_class_for_moniker($comment->cobrand)->new();
+ # TODO actually this should be OK for any devolved endpoint if original Open311->can_be_devolved, presumably
+ if ( 0 ) { # Check can_be_devolved and do this properly if set
+ my $sender = $cobrand->get_body_sender( $body, $comment->problem->category );
+ my $config = $sender->{config};
+ $o = Open311->new(
+ endpoint => $config->endpoint,
+ jurisdiction => $config->jurisdiction,
+ api_key => $config->api_key,
+ use_extended_updates => 1, # FMB uses extended updates
+ );
+ }
+
if ( $comment->send_fail_count ) {
next if bromley_retry_timeout( $comment );
}
- if ( $council->area_id == 2482 ) {
+ if ( $body->areas->{2482} ) {
my $extra = $comment->extra;
if ( !$extra ) {
$extra = {};