From ecb6c0373a36b182fbc671602946805d64dcf679 Mon Sep 17 00:00:00 2001 From: Matthew Somerville Date: Tue, 7 Mar 2017 16:51:05 +0000 Subject: Store user object when deleting report. --- perllib/FixMyStreet/App/Controller/Report.pm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/perllib/FixMyStreet/App/Controller/Report.pm b/perllib/FixMyStreet/App/Controller/Report.pm index 7cd9d32a0..27f4393bb 100644 --- a/perllib/FixMyStreet/App/Controller/Report.pm +++ b/perllib/FixMyStreet/App/Controller/Report.pm @@ -275,7 +275,8 @@ sub delete :Local :Args(1) { $p->user->update_reputation(-1); $c->model('DB::AdminLog')->create( { - admin_user => $c->user->email, + user => $c->user, + admin_user => $c->user->from_body->name, object_type => 'problem', action => 'state_change', object_id => $id, -- cgit v1.2.3 From 4ad523ad6a4950f91301e896b8f6a3d8e23afc06 Mon Sep 17 00:00:00 2001 From: Matthew Somerville Date: Tue, 7 Mar 2017 16:46:38 +0000 Subject: Use name at time of moderation, include superusers This works better if e.g. a user stops being associated with a body. --- perllib/FixMyStreet/App/Controller/Moderate.pm | 9 +++++++-- t/app/controller/moderate.t | 18 ++++++++++++++++++ templates/web/base/report/_main.html | 2 +- templates/web/base/report/update.html | 2 +- 4 files changed, 27 insertions(+), 4 deletions(-) diff --git a/perllib/FixMyStreet/App/Controller/Moderate.pm b/perllib/FixMyStreet/App/Controller/Moderate.pm index 94e6cd62a..74f2e6b31 100644 --- a/perllib/FixMyStreet/App/Controller/Moderate.pm +++ b/perllib/FixMyStreet/App/Controller/Moderate.pm @@ -83,6 +83,11 @@ sub moderate_report : Chained('report') : PathPart('') : Args(0) { $c->detach( 'report_moderate_audit', \@types ) } +sub moderating_user_name { + my $user = shift; + return $user->from_body ? $user->from_body->name : 'a FixMyStreet administrator'; +} + sub report_moderate_audit : Private { my ($self, $c, @types) = @_; @@ -95,7 +100,7 @@ sub report_moderate_audit : Private { $c->model('DB::AdminLog')->create({ action => 'moderation', user => $user, - admin_user => $user->name, + admin_user => moderating_user_name($user), object_id => $problem->id, object_type => 'problem', reason => (sprintf '%s (%s)', $reason, $types_csv), @@ -249,7 +254,7 @@ sub update_moderate_audit : Private { $c->model('DB::AdminLog')->create({ action => 'moderation', user => $user, - admin_user => $user->name, + admin_user => moderating_user_name($user), object_id => $comment->id, object_type => 'update', reason => (sprintf '%s (%s)', $reason, $types_csv), diff --git a/t/app/controller/moderate.t b/t/app/controller/moderate.t index 3a3c7a708..10287ab22 100644 --- a/t/app/controller/moderate.t +++ b/t/app/controller/moderate.t @@ -101,6 +101,7 @@ subtest 'Problem moderation' => sub { problem_detail => 'Good good improved', }}); $mech->base_like( qr{\Q$REPORT_URL\E} ); + $mech->content_like(qr/Moderated by Bromley Council/); $report->discard_changes; is $report->title, 'Good [...] good'; @@ -330,6 +331,23 @@ subtest 'Update 2' => sub { is $update2->text, 'update good good [...] good', }; +subtest 'Now stop being a staff user' => sub { + $user->update({ from_body => undef }); + $mech->get_ok($REPORT_URL); + $mech->content_contains('Moderated by Bromley Council'); +}; + +subtest 'And do it as a superuser' => sub { + $user->update({ is_superuser => 1 }); + $mech->get_ok($REPORT_URL); + $mech->submit_form_ok({ with_fields => { + %problem_prepopulated, + problem_title => 'Good good', + problem_detail => 'Good good improved', + }}); + $mech->content_contains('Moderated by a FixMyStreet administrator'); +}; + $update->delete; $update2->delete; $report->moderation_original_data->delete; diff --git a/templates/web/base/report/_main.html b/templates/web/base/report/_main.html index 9431ef2ce..12733a992 100644 --- a/templates/web/base/report/_main.html +++ b/templates/web/base/report/_main.html @@ -66,7 +66,7 @@ [% INCLUDE 'report/_main_sent_info.html' %] [% mlog = problem.latest_moderation_log_entry(); IF mlog %] -

Moderated by [% mlog.user.from_body.name %] at [% prettify_dt(mlog.whenedited) %]

+

Moderated by [% mlog.admin_user %] at [% prettify_dt(mlog.whenedited) %]

[% END %] [% INCLUDE 'report/_support.html' %] diff --git a/templates/web/base/report/update.html b/templates/web/base/report/update.html index d423a193d..752f20174 100644 --- a/templates/web/base/report/update.html +++ b/templates/web/base/report/update.html @@ -46,7 +46,7 @@

[% INCLUDE meta_line %] [% mlog = update.latest_moderation_log_entry(); IF mlog %] -
Moderated by [% mlog.user.from_body.name %] at [% prettify_dt(mlog.whenedited) %] +
Moderated by [% mlog.admin_user %] at [% prettify_dt(mlog.whenedited) %] [% END %]

-- cgit v1.2.3