aboutsummaryrefslogtreecommitdiffstats
path: root/perllib
diff options
context:
space:
mode:
Diffstat (limited to 'perllib')
-rw-r--r--perllib/FixMyStreet/App/Controller/Admin.pm48
-rw-r--r--perllib/FixMyStreet/App/Controller/Admin/DefectTypes.pm6
-rw-r--r--perllib/FixMyStreet/App/Controller/Admin/ExorDefects.pm7
-rw-r--r--perllib/FixMyStreet/App/Controller/Admin/ReportExtraFields.pm6
-rw-r--r--perllib/FixMyStreet/App/Controller/Admin/ResponsePriorities.pm6
-rw-r--r--perllib/FixMyStreet/App/Controller/Admin/States.pm6
-rw-r--r--perllib/FixMyStreet/App/Controller/My.pm3
-rw-r--r--perllib/FixMyStreet/Integrations/ExorRDI.pm28
8 files changed, 35 insertions, 75 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Admin.pm b/perllib/FixMyStreet/App/Controller/Admin.pm
index f1508f0b1..ed40f4565 100644
--- a/perllib/FixMyStreet/App/Controller/Admin.pm
+++ b/perllib/FixMyStreet/App/Controller/Admin.pm
@@ -27,7 +27,7 @@ Admin pages
=cut
-sub begin : Private {
+sub auto : Private {
my ( $self, $c ) = @_;
$c->uri_disposition('relative');
@@ -44,10 +44,6 @@ sub begin : Private {
if ( $c->cobrand->moniker eq 'zurich' ) {
$c->cobrand->admin_type();
}
-}
-
-sub auto : Private {
- my ( $self, $c ) = @_;
$c->forward('check_page_allowed');
}
@@ -557,10 +553,10 @@ sub fetch_translations : Private {
$c->stash->{translations} = $translations;
}
-sub lookup_body : Private {
- my ( $self, $c ) = @_;
+sub body : Chained('/') : PathPart('admin/body') : CaptureArgs(1) {
+ my ( $self, $c, $body_id ) = @_;
- my $body_id = $c->stash->{body_id};
+ $c->stash->{body_id} = $body_id;
my $body = $c->model('DB::Body')->find($body_id);
$c->detach( '/page_error_404_not_found', [] )
unless $body;
@@ -572,30 +568,6 @@ sub lookup_body : Private {
$c->stash->{example_pc} = $example_postcode;
}
}
-
- return 1;
-}
-
-sub body_base : Chained('/') : PathPart('admin/body') : CaptureArgs(0) { }
-
-# This is for if the category name contains a '/'
-sub category_edit_all : Chained('body_base') : PathPart('') {
- my ( $self, $c, $body_id, @category ) = @_;
- my $category = join( '/', @category );
-
- $c->stash->{body_id} = $body_id;
- $c->forward( 'lookup_body' );
-
- my $contact = $c->stash->{body}->contacts->search( { category => $category } )->first;
- $c->stash->{contact} = $contact;
-
- $c->stash->{template} = 'admin/category_edit.html';
- $c->forward( 'category_edit' );
-}
-
-sub body : Chained('body_base') : PathPart('') : CaptureArgs(1) {
- my ( $self, $c, $body_id ) = @_;
- $c->stash->{body_id} = $body_id;
}
sub edit_body : Chained('body') : PathPart('') : Args(0) {
@@ -606,7 +578,6 @@ sub edit_body : Chained('body') : PathPart('') : Args(0) {
}
$c->forward( '/auth/get_csrf_token' );
- $c->forward( 'lookup_body' );
$c->forward( 'fetch_all_bodies' );
$c->forward( 'body_form_dropdowns' );
$c->forward('fetch_languages');
@@ -635,18 +606,15 @@ sub edit_body : Chained('body') : PathPart('') : Args(0) {
return 1;
}
-sub category : Chained('body') : PathPart('') : CaptureArgs(1) {
- my ( $self, $c, $category ) = @_;
+sub category : Chained('body') : PathPart('') {
+ my ( $self, $c, @category ) = @_;
+ my $category = join( '/', @category );
$c->forward( '/auth/get_csrf_token' );
- $c->forward( 'lookup_body' );
+ $c->stash->{template} = 'admin/category_edit.html';
my $contact = $c->stash->{body}->contacts->search( { category => $category } )->first;
$c->stash->{contact} = $contact;
-}
-
-sub category_edit : Chained('category') : PathPart('') : Args(0) {
- my ( $self, $c ) = @_;
$c->stash->{translation_col} = 'category';
$c->stash->{object} = $c->stash->{contact};
diff --git a/perllib/FixMyStreet/App/Controller/Admin/DefectTypes.pm b/perllib/FixMyStreet/App/Controller/Admin/DefectTypes.pm
index ef4a0f219..5dab1da2c 100644
--- a/perllib/FixMyStreet/App/Controller/Admin/DefectTypes.pm
+++ b/perllib/FixMyStreet/App/Controller/Admin/DefectTypes.pm
@@ -6,12 +6,6 @@ use mySociety::ArrayUtils;
BEGIN { extends 'Catalyst::Controller'; }
-sub begin : Private {
- my ( $self, $c ) = @_;
-
- $c->forward('/admin/begin');
-}
-
sub index : Path : Args(0) {
my ( $self, $c ) = @_;
diff --git a/perllib/FixMyStreet/App/Controller/Admin/ExorDefects.pm b/perllib/FixMyStreet/App/Controller/Admin/ExorDefects.pm
index b03a2ab98..bdeecc1a3 100644
--- a/perllib/FixMyStreet/App/Controller/Admin/ExorDefects.pm
+++ b/perllib/FixMyStreet/App/Controller/Admin/ExorDefects.pm
@@ -9,12 +9,6 @@ use FixMyStreet::Integrations::ExorRDI;
BEGIN { extends 'Catalyst::Controller'; }
-sub begin : Private {
- my ( $self, $c ) = @_;
-
- $c->forward('/admin/begin');
-}
-
sub index : Path : Args(0) {
my ( $self, $c ) = @_;
@@ -59,6 +53,7 @@ sub download : Path('download') : Args(0) {
inspection_date => $start_date,
end_date => $end_date + $one_day,
user => $c->get_param('user_id'),
+ mark_as_processed => 0,
};
my $rdi = FixMyStreet::Integrations::ExorRDI->new($params);
diff --git a/perllib/FixMyStreet/App/Controller/Admin/ReportExtraFields.pm b/perllib/FixMyStreet/App/Controller/Admin/ReportExtraFields.pm
index d5ec64698..337fb4bed 100644
--- a/perllib/FixMyStreet/App/Controller/Admin/ReportExtraFields.pm
+++ b/perllib/FixMyStreet/App/Controller/Admin/ReportExtraFields.pm
@@ -6,12 +6,6 @@ use List::MoreUtils qw(uniq);
BEGIN { extends 'Catalyst::Controller'; }
-sub begin : Private {
- my ( $self, $c ) = @_;
-
- $c->forward('/admin/begin');
-}
-
sub index : Path : Args(0) {
my ( $self, $c ) = @_;
diff --git a/perllib/FixMyStreet/App/Controller/Admin/ResponsePriorities.pm b/perllib/FixMyStreet/App/Controller/Admin/ResponsePriorities.pm
index 7b206690e..2613f6ae0 100644
--- a/perllib/FixMyStreet/App/Controller/Admin/ResponsePriorities.pm
+++ b/perllib/FixMyStreet/App/Controller/Admin/ResponsePriorities.pm
@@ -5,12 +5,6 @@ use namespace::autoclean;
BEGIN { extends 'Catalyst::Controller'; }
-sub begin : Private {
- my ( $self, $c ) = @_;
-
- $c->forward('/admin/begin');
-}
-
sub index : Path : Args(0) {
my ( $self, $c ) = @_;
diff --git a/perllib/FixMyStreet/App/Controller/Admin/States.pm b/perllib/FixMyStreet/App/Controller/Admin/States.pm
index e4c07c9ca..938692af0 100644
--- a/perllib/FixMyStreet/App/Controller/Admin/States.pm
+++ b/perllib/FixMyStreet/App/Controller/Admin/States.pm
@@ -4,12 +4,6 @@ use namespace::autoclean;
BEGIN { extends 'Catalyst::Controller'; }
-sub begin : Private {
- my ( $self, $c ) = @_;
-
- $c->forward('/admin/begin');
-}
-
sub index : Path : Args(0) {
my ( $self, $c ) = @_;
diff --git a/perllib/FixMyStreet/App/Controller/My.pm b/perllib/FixMyStreet/App/Controller/My.pm
index ea7aee016..5b80a4a08 100644
--- a/perllib/FixMyStreet/App/Controller/My.pm
+++ b/perllib/FixMyStreet/App/Controller/My.pm
@@ -19,9 +19,10 @@ Catalyst Controller.
=cut
-sub begin : Private {
+sub auto : Private {
my ($self, $c) = @_;
$c->detach( '/auth/redirect' ) unless $c->user;
+ return 1;
}
=head2 index
diff --git a/perllib/FixMyStreet/Integrations/ExorRDI.pm b/perllib/FixMyStreet/Integrations/ExorRDI.pm
index 4ce888cff..fc7e9d673 100644
--- a/perllib/FixMyStreet/Integrations/ExorRDI.pm
+++ b/perllib/FixMyStreet/Integrations/ExorRDI.pm
@@ -23,7 +23,7 @@ use Scalar::Util 'blessed';
use FixMyStreet::DB;
use namespace::clean;
-has [qw(start_date end_date inspection_date)] => (
+has [qw(start_date end_date inspection_date mark_as_processed)] => (
is => 'ro',
required => 1,
);
@@ -43,13 +43,23 @@ sub construct {
my $cobrand = FixMyStreet::Cobrand->get_class_for_moniker('oxfordshire')->new;
my $dtf = $cobrand->problems->result_source->storage->datetime_parser;
+ my $missed_cutoff = DateTime->now - DateTime::Duration->new( hours => 24 );
my %params = (
-and => [
state => [ 'action scheduled' ],
external_id => { '!=' => undef },
- 'admin_log_entries.action' => 'inspected',
- 'admin_log_entries.whenedited' => { '>=', $dtf->format_datetime($self->start_date) },
- 'admin_log_entries.whenedited' => { '<=', $dtf->format_datetime($self->end_date) },
+ -or => [
+ -and => [
+ 'admin_log_entries.action' => 'inspected',
+ 'admin_log_entries.whenedited' => { '>=', $dtf->format_datetime($self->start_date) },
+ 'admin_log_entries.whenedited' => { '<=', $dtf->format_datetime($self->end_date) },
+ ],
+ -and => [
+ extra => { -not_like => '%rdi_processed%' },
+ 'admin_log_entries.action' => 'inspected',
+ 'admin_log_entries.whenedited' => { '<=', $dtf->format_datetime($missed_cutoff) },
+ ]
+ ]
]
);
@@ -198,6 +208,16 @@ sub construct {
0, 0, 0 # error counts, always zero
);
+ if ($self->mark_as_processed) {
+ # Mark all these problems are having been included in an RDI
+ my $now = DateTime->now->strftime( '%Y-%m-%d %H:%M' );
+ $problems->reset;
+ while ( my $report = $problems->next ) {
+ $report->set_extra_metadata('rdi_processed' => $now);
+ $report->update;
+ }
+ }
+
# The RDI format is very weird CSV - each line must be wrapped in
# double quotes.
return join "", map { "\"$_\"\r\n" } @$body;