mirror of
https://github.com/discourse/discourse.git
synced 2025-06-04 23:36:11 +08:00
DEV: Apply syntax_tree formatting to app/*
This commit is contained in:
@ -3,13 +3,10 @@
|
||||
class AdminDashboardData
|
||||
include StatsCacheable
|
||||
|
||||
cattr_reader :problem_syms,
|
||||
:problem_blocks,
|
||||
:problem_messages,
|
||||
:problem_scheduled_check_blocks
|
||||
cattr_reader :problem_syms, :problem_blocks, :problem_messages, :problem_scheduled_check_blocks
|
||||
|
||||
class Problem
|
||||
VALID_PRIORITIES = ["low", "high"].freeze
|
||||
VALID_PRIORITIES = %w[low high].freeze
|
||||
|
||||
attr_reader :message, :priority, :identifier
|
||||
|
||||
@ -114,11 +111,12 @@ class AdminDashboardData
|
||||
found_problems_json = Discourse.redis.get(SCHEDULED_PROBLEM_STORAGE_KEY)
|
||||
return [] if found_problems_json.blank?
|
||||
begin
|
||||
JSON.parse(found_problems_json).map do |problem|
|
||||
Problem.from_h(problem)
|
||||
end
|
||||
JSON.parse(found_problems_json).map { |problem| Problem.from_h(problem) }
|
||||
rescue JSON::ParserError => err
|
||||
Discourse.warn_exception(err, message: "Error parsing found problem JSON in admin dashboard: #{found_problems_json}")
|
||||
Discourse.warn_exception(
|
||||
err,
|
||||
message: "Error parsing found problem JSON in admin dashboard: #{found_problems_json}",
|
||||
)
|
||||
[]
|
||||
end
|
||||
end
|
||||
@ -127,16 +125,21 @@ class AdminDashboardData
|
||||
add_scheduled_problem_check(:group_smtp_credentials) do
|
||||
problems = GroupEmailCredentialsCheck.run
|
||||
problems.map do |p|
|
||||
problem_message = I18n.t(
|
||||
"dashboard.group_email_credentials_warning",
|
||||
{
|
||||
base_path: Discourse.base_path,
|
||||
group_name: p[:group_name],
|
||||
group_full_name: p[:group_full_name],
|
||||
error: p[:message]
|
||||
}
|
||||
problem_message =
|
||||
I18n.t(
|
||||
"dashboard.group_email_credentials_warning",
|
||||
{
|
||||
base_path: Discourse.base_path,
|
||||
group_name: p[:group_name],
|
||||
group_full_name: p[:group_full_name],
|
||||
error: p[:message],
|
||||
},
|
||||
)
|
||||
Problem.new(
|
||||
problem_message,
|
||||
priority: "high",
|
||||
identifier: "group_#{p[:group_id]}_email_credentials",
|
||||
)
|
||||
Problem.new(problem_message, priority: "high", identifier: "group_#{p[:group_id]}_email_credentials")
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -149,7 +152,10 @@ class AdminDashboardData
|
||||
begin
|
||||
problems = instance_exec(&blk)
|
||||
rescue StandardError => err
|
||||
Discourse.warn_exception(err, message: "A scheduled admin dashboard problem check (#{check_identifier}) errored.")
|
||||
Discourse.warn_exception(
|
||||
err,
|
||||
message: "A scheduled admin dashboard problem check (#{check_identifier}) errored.",
|
||||
)
|
||||
# we don't want to hold up other checks because this one errored
|
||||
next
|
||||
end
|
||||
@ -177,26 +183,33 @@ class AdminDashboardData
|
||||
@@problem_blocks = []
|
||||
@@problem_scheduled_check_blocks = {}
|
||||
|
||||
@@problem_messages = [
|
||||
'dashboard.bad_favicon_url',
|
||||
'dashboard.poll_pop3_timeout',
|
||||
'dashboard.poll_pop3_auth_error',
|
||||
@@problem_messages = %w[
|
||||
dashboard.bad_favicon_url
|
||||
dashboard.poll_pop3_timeout
|
||||
dashboard.poll_pop3_auth_error
|
||||
]
|
||||
|
||||
add_problem_check :rails_env_check, :host_names_check, :force_https_check,
|
||||
:ram_check, :google_oauth2_config_check,
|
||||
:facebook_config_check, :twitter_config_check,
|
||||
:github_config_check, :s3_config_check, :s3_cdn_check,
|
||||
:image_magick_check, :failing_emails_check,
|
||||
add_problem_check :rails_env_check,
|
||||
:host_names_check,
|
||||
:force_https_check,
|
||||
:ram_check,
|
||||
:google_oauth2_config_check,
|
||||
:facebook_config_check,
|
||||
:twitter_config_check,
|
||||
:github_config_check,
|
||||
:s3_config_check,
|
||||
:s3_cdn_check,
|
||||
:image_magick_check,
|
||||
:failing_emails_check,
|
||||
:subfolder_ends_in_slash_check,
|
||||
:email_polling_errored_recently,
|
||||
:out_of_date_themes, :unreachable_themes, :watched_words_check
|
||||
:out_of_date_themes,
|
||||
:unreachable_themes,
|
||||
:watched_words_check
|
||||
|
||||
register_default_scheduled_problem_checks
|
||||
|
||||
add_problem_check do
|
||||
sidekiq_check || queue_size_check
|
||||
end
|
||||
add_problem_check { sidekiq_check || queue_size_check }
|
||||
end
|
||||
reset_problem_checks
|
||||
|
||||
@ -213,7 +226,7 @@ class AdminDashboardData
|
||||
end
|
||||
|
||||
def self.problems_started_key
|
||||
'dash-problems-started-at'
|
||||
"dash-problems-started-at"
|
||||
end
|
||||
|
||||
def self.set_problems_started
|
||||
@ -235,7 +248,11 @@ class AdminDashboardData
|
||||
end
|
||||
|
||||
def self.problem_message_check(i18n_key)
|
||||
Discourse.redis.get(problem_message_key(i18n_key)) ? I18n.t(i18n_key, base_path: Discourse.base_path) : nil
|
||||
if Discourse.redis.get(problem_message_key(i18n_key))
|
||||
I18n.t(i18n_key, base_path: Discourse.base_path)
|
||||
else
|
||||
nil
|
||||
end
|
||||
end
|
||||
|
||||
##
|
||||
@ -264,97 +281,128 @@ class AdminDashboardData
|
||||
end
|
||||
|
||||
def host_names_check
|
||||
I18n.t("dashboard.host_names_warning") if ['localhost', 'production.localhost'].include?(Discourse.current_hostname)
|
||||
if %w[localhost production.localhost].include?(Discourse.current_hostname)
|
||||
I18n.t("dashboard.host_names_warning")
|
||||
end
|
||||
end
|
||||
|
||||
def sidekiq_check
|
||||
last_job_performed_at = Jobs.last_job_performed_at
|
||||
I18n.t('dashboard.sidekiq_warning') if Jobs.queued > 0 && (last_job_performed_at.nil? || last_job_performed_at < 2.minutes.ago)
|
||||
if Jobs.queued > 0 && (last_job_performed_at.nil? || last_job_performed_at < 2.minutes.ago)
|
||||
I18n.t("dashboard.sidekiq_warning")
|
||||
end
|
||||
end
|
||||
|
||||
def queue_size_check
|
||||
queue_size = Jobs.queued
|
||||
I18n.t('dashboard.queue_size_warning', queue_size: queue_size) unless queue_size < 100_000
|
||||
I18n.t("dashboard.queue_size_warning", queue_size: queue_size) unless queue_size < 100_000
|
||||
end
|
||||
|
||||
def ram_check
|
||||
I18n.t('dashboard.memory_warning') if MemInfo.new.mem_total && MemInfo.new.mem_total < 950_000
|
||||
I18n.t("dashboard.memory_warning") if MemInfo.new.mem_total && MemInfo.new.mem_total < 950_000
|
||||
end
|
||||
|
||||
def google_oauth2_config_check
|
||||
if SiteSetting.enable_google_oauth2_logins && (SiteSetting.google_oauth2_client_id.blank? || SiteSetting.google_oauth2_client_secret.blank?)
|
||||
I18n.t('dashboard.google_oauth2_config_warning', base_path: Discourse.base_path)
|
||||
if SiteSetting.enable_google_oauth2_logins &&
|
||||
(
|
||||
SiteSetting.google_oauth2_client_id.blank? ||
|
||||
SiteSetting.google_oauth2_client_secret.blank?
|
||||
)
|
||||
I18n.t("dashboard.google_oauth2_config_warning", base_path: Discourse.base_path)
|
||||
end
|
||||
end
|
||||
|
||||
def facebook_config_check
|
||||
if SiteSetting.enable_facebook_logins && (SiteSetting.facebook_app_id.blank? || SiteSetting.facebook_app_secret.blank?)
|
||||
I18n.t('dashboard.facebook_config_warning', base_path: Discourse.base_path)
|
||||
if SiteSetting.enable_facebook_logins &&
|
||||
(SiteSetting.facebook_app_id.blank? || SiteSetting.facebook_app_secret.blank?)
|
||||
I18n.t("dashboard.facebook_config_warning", base_path: Discourse.base_path)
|
||||
end
|
||||
end
|
||||
|
||||
def twitter_config_check
|
||||
if SiteSetting.enable_twitter_logins && (SiteSetting.twitter_consumer_key.blank? || SiteSetting.twitter_consumer_secret.blank?)
|
||||
I18n.t('dashboard.twitter_config_warning', base_path: Discourse.base_path)
|
||||
if SiteSetting.enable_twitter_logins &&
|
||||
(SiteSetting.twitter_consumer_key.blank? || SiteSetting.twitter_consumer_secret.blank?)
|
||||
I18n.t("dashboard.twitter_config_warning", base_path: Discourse.base_path)
|
||||
end
|
||||
end
|
||||
|
||||
def github_config_check
|
||||
if SiteSetting.enable_github_logins && (SiteSetting.github_client_id.blank? || SiteSetting.github_client_secret.blank?)
|
||||
I18n.t('dashboard.github_config_warning', base_path: Discourse.base_path)
|
||||
if SiteSetting.enable_github_logins &&
|
||||
(SiteSetting.github_client_id.blank? || SiteSetting.github_client_secret.blank?)
|
||||
I18n.t("dashboard.github_config_warning", base_path: Discourse.base_path)
|
||||
end
|
||||
end
|
||||
|
||||
def s3_config_check
|
||||
# if set via global setting it is validated during the `use_s3?` call
|
||||
if !GlobalSetting.use_s3?
|
||||
bad_keys = (SiteSetting.s3_access_key_id.blank? || SiteSetting.s3_secret_access_key.blank?) && !SiteSetting.s3_use_iam_profile
|
||||
bad_keys =
|
||||
(SiteSetting.s3_access_key_id.blank? || SiteSetting.s3_secret_access_key.blank?) &&
|
||||
!SiteSetting.s3_use_iam_profile
|
||||
|
||||
if SiteSetting.enable_s3_uploads && (bad_keys || SiteSetting.s3_upload_bucket.blank?)
|
||||
return I18n.t('dashboard.s3_config_warning', base_path: Discourse.base_path)
|
||||
return I18n.t("dashboard.s3_config_warning", base_path: Discourse.base_path)
|
||||
end
|
||||
|
||||
if SiteSetting.backup_location == BackupLocationSiteSetting::S3 && (bad_keys || SiteSetting.s3_backup_bucket.blank?)
|
||||
return I18n.t('dashboard.s3_backup_config_warning', base_path: Discourse.base_path)
|
||||
if SiteSetting.backup_location == BackupLocationSiteSetting::S3 &&
|
||||
(bad_keys || SiteSetting.s3_backup_bucket.blank?)
|
||||
return I18n.t("dashboard.s3_backup_config_warning", base_path: Discourse.base_path)
|
||||
end
|
||||
end
|
||||
nil
|
||||
end
|
||||
|
||||
def s3_cdn_check
|
||||
if (GlobalSetting.use_s3? || SiteSetting.enable_s3_uploads) && SiteSetting.Upload.s3_cdn_url.blank?
|
||||
I18n.t('dashboard.s3_cdn_warning')
|
||||
if (GlobalSetting.use_s3? || SiteSetting.enable_s3_uploads) &&
|
||||
SiteSetting.Upload.s3_cdn_url.blank?
|
||||
I18n.t("dashboard.s3_cdn_warning")
|
||||
end
|
||||
end
|
||||
|
||||
def image_magick_check
|
||||
I18n.t('dashboard.image_magick_warning') if SiteSetting.create_thumbnails && !system("command -v convert >/dev/null;")
|
||||
if SiteSetting.create_thumbnails && !system("command -v convert >/dev/null;")
|
||||
I18n.t("dashboard.image_magick_warning")
|
||||
end
|
||||
end
|
||||
|
||||
def failing_emails_check
|
||||
num_failed_jobs = Jobs.num_email_retry_jobs
|
||||
I18n.t('dashboard.failing_emails_warning', num_failed_jobs: num_failed_jobs, base_path: Discourse.base_path) if num_failed_jobs > 0
|
||||
if num_failed_jobs > 0
|
||||
I18n.t(
|
||||
"dashboard.failing_emails_warning",
|
||||
num_failed_jobs: num_failed_jobs,
|
||||
base_path: Discourse.base_path,
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
def subfolder_ends_in_slash_check
|
||||
I18n.t('dashboard.subfolder_ends_in_slash') if Discourse.base_path =~ /\/$/
|
||||
I18n.t("dashboard.subfolder_ends_in_slash") if Discourse.base_path =~ %r{/$}
|
||||
end
|
||||
|
||||
def email_polling_errored_recently
|
||||
errors = Jobs::PollMailbox.errors_in_past_24_hours
|
||||
I18n.t('dashboard.email_polling_errored_recently', count: errors, base_path: Discourse.base_path) if errors > 0
|
||||
if errors > 0
|
||||
I18n.t(
|
||||
"dashboard.email_polling_errored_recently",
|
||||
count: errors,
|
||||
base_path: Discourse.base_path,
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
def missing_mailgun_api_key
|
||||
return unless SiteSetting.reply_by_email_enabled
|
||||
return unless ActionMailer::Base.smtp_settings[:address]['smtp.mailgun.org']
|
||||
return unless ActionMailer::Base.smtp_settings[:address]["smtp.mailgun.org"]
|
||||
return unless SiteSetting.mailgun_api_key.blank?
|
||||
I18n.t('dashboard.missing_mailgun_api_key')
|
||||
I18n.t("dashboard.missing_mailgun_api_key")
|
||||
end
|
||||
|
||||
def force_https_check
|
||||
return unless @opts[:check_force_https]
|
||||
I18n.t('dashboard.force_https_warning', base_path: Discourse.base_path) unless SiteSetting.force_https
|
||||
unless SiteSetting.force_https
|
||||
I18n.t("dashboard.force_https_warning", base_path: Discourse.base_path)
|
||||
end
|
||||
end
|
||||
|
||||
def watched_words_check
|
||||
@ -363,7 +411,11 @@ class AdminDashboardData
|
||||
WordWatcher.word_matcher_regexp_list(action, raise_errors: true)
|
||||
rescue RegexpError => e
|
||||
translated_action = I18n.t("admin_js.admin.watched_words.actions.#{action}")
|
||||
I18n.t('dashboard.watched_word_regexp_error', base_path: Discourse.base_path, action: translated_action)
|
||||
I18n.t(
|
||||
"dashboard.watched_word_regexp_error",
|
||||
base_path: Discourse.base_path,
|
||||
action: translated_action,
|
||||
)
|
||||
end
|
||||
end
|
||||
nil
|
||||
@ -373,22 +425,25 @@ class AdminDashboardData
|
||||
old_themes = RemoteTheme.out_of_date_themes
|
||||
return unless old_themes.present?
|
||||
|
||||
themes_html_format(old_themes, 'dashboard.out_of_date_themes')
|
||||
themes_html_format(old_themes, "dashboard.out_of_date_themes")
|
||||
end
|
||||
|
||||
def unreachable_themes
|
||||
themes = RemoteTheme.unreachable_themes
|
||||
return unless themes.present?
|
||||
|
||||
themes_html_format(themes, 'dashboard.unreachable_themes')
|
||||
themes_html_format(themes, "dashboard.unreachable_themes")
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def themes_html_format(themes, i18n_key)
|
||||
html = themes.map do |name, id|
|
||||
"<li><a href=\"/admin/customize/themes/#{id}\">#{CGI.escapeHTML(name)}</a></li>"
|
||||
end.join("\n")
|
||||
html =
|
||||
themes
|
||||
.map do |name, id|
|
||||
"<li><a href=\"/admin/customize/themes/#{id}\">#{CGI.escapeHTML(name)}</a></li>"
|
||||
end
|
||||
.join("\n")
|
||||
|
||||
"#{I18n.t(i18n_key)}<ul>#{html}</ul>"
|
||||
end
|
||||
|
Reference in New Issue
Block a user