FEATURE: notify admins if problems have been reported on the dashboard for a while

This commit is contained in:
Neil Lalonde 2016-04-08 16:44:04 -04:00
parent c948d53d91
commit 9c934e27be
3 changed files with 41 additions and 1 deletions

View File

@ -5,6 +5,13 @@ module Jobs
every 30.minutes every 30.minutes
def execute(args) def execute(args)
problems_started_at = AdminDashboardData.problems_started_at
if problems_started_at && problems_started_at < 2.days.ago
# If there have been problems reported on the dashboard for a while,
# send a message to admins no more often than once per week.
GroupMessage.create(Group[:admins].name, :dashboard_problems, {limit_once_per: 7.days.to_i})
end
stats = AdminDashboardData.fetch_stats stats = AdminDashboardData.fetch_stats
set_cache(AdminDashboardData, stats) set_cache(AdminDashboardData, stats)
stats stats

View File

@ -50,7 +50,33 @@ class AdminDashboardData
AdminDashboardData.problem_messages.each do |i18n_key| AdminDashboardData.problem_messages.each do |i18n_key|
problems << AdminDashboardData.problem_message_check(i18n_key) problems << AdminDashboardData.problem_message_check(i18n_key)
end end
problems.compact problems.compact!
if problems.empty?
self.class.clear_problems_started
else
self.class.set_problems_started
end
problems
end
def self.problems_started_key
"dash-problems-started-at"
end
def self.set_problems_started
existing_time = $redis.get(problems_started_key)
$redis.setex(problems_started_key, 14.days.to_i, existing_time || Time.zone.now.to_s)
end
def self.clear_problems_started
$redis.del problems_started_key
end
def self.problems_started_at
s = $redis.get(problems_started_key)
s ? Time.zone.parse(s) : nil
end end
# used for testing # used for testing

View File

@ -2044,6 +2044,13 @@ en:
subject_template: "Downloading remote images disabled" subject_template: "Downloading remote images disabled"
text_body_template: "The `download_remote_images_to_local` setting was disabled because the disk space limit at `download_remote_images_threshold` was reached." text_body_template: "The `download_remote_images_to_local` setting was disabled because the disk space limit at `download_remote_images_threshold` was reached."
dashboard_problems:
subject_template: "Problems have been found"
text_body_template: |
Some problems are being reported on your admin dashboard.
[Please review and fix them](%{base_url}/admin).
unsubscribe_link: | unsubscribe_link: |
To stop receiving notifications for this particular topic, [click here](%{unsubscribe_url}). To unsubscribe from these emails, change your [user preferences](%{user_preferences_url}) To stop receiving notifications for this particular topic, [click here](%{unsubscribe_url}). To unsubscribe from these emails, change your [user preferences](%{user_preferences_url})