From e68043703004864cee08a0fe68e54a3b60a7e24f Mon Sep 17 00:00:00 2001 From: TheJammiestDodger Date: Wed, 2 Aug 2023 12:27:31 +0100 Subject: [PATCH] FIX: Add 'Ignored' flags to Moderator Activity report (#22041) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * FIX Add 'Ignored' flags to Moderator Activity report The Moderator Activity query didn’t include the number of deferred flags in the Flags Reviewed totals. As this number is designed to reflect how many flags a moderator has seen, reviewed, and made a judgement on, the Ignored ones should also be included. * Apply suggestions from code review --------- Co-authored-by: Jarek Radosz --- .../concerns/reports/moderators_activity.rb | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/app/models/concerns/reports/moderators_activity.rb b/app/models/concerns/reports/moderators_activity.rb index b66bf0df74de65..12383a58e5290e 100644 --- a/app/models/concerns/reports/moderators_activity.rb +++ b/app/models/concerns/reports/moderators_activity.rb @@ -73,7 +73,8 @@ def report_moderators_activity(report) flag_count AS ( WITH period_actions AS ( SELECT agreed_by_id, - disagreed_by_id + disagreed_by_id, + deferred_by_id FROM post_actions WHERE post_action_type_id IN (#{PostActionType.flag_types_without_custom.values.join(",")}) AND created_at >= '#{report.start_date}' @@ -94,13 +95,23 @@ def report_moderators_activity(report) JOIN period_actions pa ON pa.disagreed_by_id = m.user_id GROUP BY disagreed_by_id + ), + deferred_flags AS ( + SELECT pa.deferred_by_id AS user_id, + COUNT(*) AS flag_count + FROM mods m + JOIN period_actions pa + ON pa.deferred_by_id = m.user_id + GROUP BY deferred_by_id ) SELECT - COALESCE(af.user_id, df.user_id) AS user_id, - COALESCE(af.flag_count, 0) + COALESCE(df.flag_count, 0) AS flag_count + COALESCE(af.user_id, df.user_id, def.user_id) AS user_id, + COALESCE(af.flag_count, 0) + COALESCE(df.flag_count, 0) + COALESCE(def.flag_count, 0) AS flag_count FROM agreed_flags af FULL OUTER JOIN disagreed_flags df ON df.user_id = af.user_id + FULL OUTER JOIN deferred_flags def + ON def.user_id = af.user_id ), revision_count AS ( SELECT pr.user_id,