diff options
Diffstat (limited to 'perllib/FixMyStreet')
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; |