aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Somerville <matthew-github@dracos.co.uk>2017-03-07 16:46:38 +0000
committerMatthew Somerville <matthew-github@dracos.co.uk>2017-03-14 15:37:38 +0000
commit4ad523ad6a4950f91301e896b8f6a3d8e23afc06 (patch)
tree05d37bb624759e60d4a6bac75cf0502a99538c82
parentecb6c0373a36b182fbc671602946805d64dcf679 (diff)
Use name at time of moderation, include superusers
This works better if e.g. a user stops being associated with a body.
-rw-r--r--perllib/FixMyStreet/App/Controller/Moderate.pm9
-rw-r--r--t/app/controller/moderate.t18
-rw-r--r--templates/web/base/report/_main.html2
-rw-r--r--templates/web/base/report/update.html2
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 %]
- <p>Moderated by [% mlog.user.from_body.name %] at [% prettify_dt(mlog.whenedited) %]</p>
+ <p>Moderated by [% mlog.admin_user %] at [% prettify_dt(mlog.whenedited) %]</p>
[% 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 @@
<p class="meta-2">
[% INCLUDE meta_line %]
[% mlog = update.latest_moderation_log_entry(); IF mlog %]
- <br /> Moderated by [% mlog.user.from_body.name %] at [% prettify_dt(mlog.whenedited) %]
+ <br /> Moderated by [% mlog.admin_user %] at [% prettify_dt(mlog.whenedited) %]
[% END %]
</p>
</div>