From dcb2919cc6202cea579109e9de435e646fb1bd5f Mon Sep 17 00:00:00 2001 From: Will Power <1619102+willpower232@users.noreply.github.com> Date: Fri, 22 Nov 2019 17:28:11 +0000 Subject: [PATCH] Suppression list improvements (#867) --- .../application/components/_suppression_list.scss | 1 + app/views/messages/suppressions.html.haml | 6 +++++- config/cron.rb | 1 + config/postal.defaults.yml | 1 + lib/postal/message_db/suppression_list.rb | 2 +- 5 files changed, 9 insertions(+), 2 deletions(-) diff --git a/app/assets/stylesheets/application/components/_suppression_list.scss b/app/assets/stylesheets/application/components/_suppression_list.scss index c4ea560..8c5d109 100644 --- a/app/assets/stylesheets/application/components/_suppression_list.scss +++ b/app/assets/stylesheets/application/components/_suppression_list.scss @@ -23,6 +23,7 @@ .suppressionList__right { flex: 0 0 auto; + text-align: right; } .suppressionList__timestamp { diff --git a/app/views/messages/suppressions.html.haml b/app/views/messages/suppressions.html.haml index 8c084bf..0c131f3 100644 --- a/app/views/messages/suppressions.html.haml +++ b/app/views/messages/suppressions.html.haml @@ -14,7 +14,7 @@ - else %p.pageContent__intro.u-margin When messages cannot be delivered, addresses are added to the suppression list which stops - future messages to the same recipient being sent through. Recipients are removed from the list after 30 days. + future messages to the same recipient being sent through. Recipients are removed from the list after #{Postal.config.general.suppression_list_removal_delay} days. %ul.suppressionList - for suppression in @suppressions[:records] %li.suppressionList__item @@ -23,4 +23,8 @@ %p.suppressionList__reason= suppression['reason'].capitalize .suppressionList__right %p.suppressionList__timestamp Added #{Time.zone.at(suppression['timestamp']).to_s(:long)} + %p.suppressionList__timestamp + Expires #{Time.zone.at(suppression['keep_until']).to_s(:long)} + - if suppression['keep_until'] > Time.now.to_f + %span.u-red expired = render 'shared/message_db_pagination', :data => @suppressions, :name => "suppression" diff --git a/config/cron.rb b/config/cron.rb index cc9bf52..f0d4884 100644 --- a/config/cron.rb +++ b/config/cron.rb @@ -26,6 +26,7 @@ module Clockwork every 1.day, 'every-day', :at => ['03:00'] do ProcessMessageRetentionJob.queue(:main) + PruneSuppressionListsJob.queue(:main) end end diff --git a/config/postal.defaults.yml b/config/postal.defaults.yml index 0b4505e..8dd6b1d 100644 --- a/config/postal.defaults.yml +++ b/config/postal.defaults.yml @@ -13,6 +13,7 @@ general: exception_url: maximum_delivery_attempts: 18 maximum_hold_expiry_days: 7 + suppression_list_removal_delay: 30 use_local_ns_for_domains: false web_server: diff --git a/lib/postal/message_db/suppression_list.rb b/lib/postal/message_db/suppression_list.rb index cf05e2e..a3aa77e 100644 --- a/lib/postal/message_db/suppression_list.rb +++ b/lib/postal/message_db/suppression_list.rb @@ -7,7 +7,7 @@ module Postal end def add(type, address, options = {}) - keep_until = (options[:days] || 30).days.from_now.to_f + keep_until = (options[:days] || Postal.config.general.suppression_list_removal_delay).days.from_now.to_f if existing = @database.select('suppressions', :where => {:type => type, :address => address}, :limit =>1).first reason = options[:reason] || existing['reason'] @database.update('suppressions', {:reason => reason, :keep_until => keep_until}, :where => {:id => existing['id']})