This is an automated email from the ASF dual-hosted git repository.

sebb pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/whimsy.git


The following commit(s) were added to refs/heads/master by this push:
     new 1b3f046  Move unsubbable check to library method
1b3f046 is described below

commit 1b3f04669702d60e4326ee834f97fb02c9a6c9c8
Author: Sebb <[email protected]>
AuthorDate: Fri Mar 18 15:55:17 2022 +0000

    Move unsubbable check to library method
---
 lib/whimsy/asf/mail.rb       | 10 +++++++++-
 www/committers/subscribe.cgi |  3 +--
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/lib/whimsy/asf/mail.rb b/lib/whimsy/asf/mail.rb
index f34b268..1056955 100644
--- a/lib/whimsy/asf/mail.rb
+++ b/lib/whimsy/asf/mail.rb
@@ -52,7 +52,7 @@ module ASF
       @auto[:disallowed]
     end
 
-    def self.cannot_unsub
+    def self._cannot_unsub
       self._load_auto()
       @auto[:cannotunsubscribe]
     end
@@ -72,6 +72,14 @@ module ASF
       @auto[:members] + @auto[:chairs]
     end
 
+    # Is a list available for unsubscription via Whimsy?
+    # Params: listid (a@b)
+    # Return: true or false
+    def self.unsubbable?(listid)
+      # cannot_unsub currently defined in listkey format
+      !self._cannot_unsub.include? listdom2listkey(listid)
+    end
+
     # which lists are available for subscription via Whimsy?
     # Params:
     # member: true if member
diff --git a/www/committers/subscribe.cgi b/www/committers/subscribe.cgi
index 7548262..253d41c 100755
--- a/www/committers/subscribe.cgi
+++ b/www/committers/subscribe.cgi
@@ -40,7 +40,6 @@ ldap_pmcs += user.podlings.map(&:mail_list) unless 
user.asf_member?
 addrs = user.all_mail
 
 seen = {}
-cannot_unsub = ASF::Mail.cannot_unsub
 
 lists = ASF::Mail.cansub(user.asf_member?, ASF.pmc_chairs.include?(user), 
ldap_pmcs, false)
   .map { |dom, _, list|
@@ -165,8 +164,8 @@ _html do
           _br
           # collect subscriptions
           subscriptions = 
ASF::MLIST.subscriptions(user.all_mail)[:subscriptions].
+            select { |listid, _| ASF::Mail.unsubbable? listid}. # can we 
unsubscribe from this list?
             map {|a, b| [ASF::Mail.listdom2listkey(a), b]}. # convert to 
listkey format
-            reject { |listkey, _| cannot_unsub.include? listkey}. # reject 
unusable
             group_by {|listkey, _mail| listkey}. # allow for multiple subs to 
single list
             transform_values {|v| v.map(&:last)} # pick out the emails
 

Reply via email to