[sysadmin-bin] Do not remove @gnome.org alias right away after membership expiration, enable a 3 months grace perio



commit 11ae0417ec87de3a5d1735c4595443c99cb0e9d6
Author: Andrea Veri <averi redhat com>
Date:   Mon Feb 21 12:32:53 2022 +0100

    Do not remove @gnome.org alias right away after membership expiration, enable a 3
    months grace period.

 membership/foundation-operations.py | 39 ++++++++++++++++++++++++++++++++++++-
 1 file changed, 38 insertions(+), 1 deletion(-)
---
diff --git a/membership/foundation-operations.py b/membership/foundation-operations.py
index a021ae9..ffb6213 100755
--- a/membership/foundation-operations.py
+++ b/membership/foundation-operations.py
@@ -73,6 +73,23 @@ def send_renewal_emails():
             elif last_renewed_on_attr == today:
                 send_form_letters(renewal_form_letter, mail_attr, common_name_attr)
 
+def cleanup_mailgrace():
+    today = dt.date.today()
+
+    gracemails = glu.get_uids_from_group('mailgrace')
+
+    import dateutil.relativedelta as relativedelta
+    delta_3m = relativedelta.relativedelta(months=3)
+
+    for member in gracemails:
+       ldap_fields = glu.get_attributes_from_ldap(member, 'LastRenewedOn', 'mail', 'cn')
+       last_renewed_on_attr = ldap_fields[1].decode('utf-8')
+       last_renewed_on = dt.date(int(last_renewed_on_attr.split('-')[0]), 
int(last_renewed_on_attr.split('-')[1]), int(last_renewed_on_attr.split('-')[2]))
+       mail_attr = ldap_fields[2].decode('utf-8')
+       common_name_attr = ldap_fields[3].decode('utf-8')
+       if today == (last_renewed_on + delta_3m):
+          send_form_letters(alias_decomm, mail_attr, common_name_attr, last_renewed_on_attr)
+          glu.remove_user_from_ldap_group(member, 'mailgrace')
 
 def remove_expired_memberships_from_foundation():
     today = dt.date.today()
@@ -97,6 +114,7 @@ def remove_expired_memberships_from_foundation():
         elif (today - delta_2y) == last_renewed_on:
             print(f"Removing { member } from the foundation LDAP group as the membership expired on { 
last_renewed_on_attr }")
             glu.remove_user_from_ldap_group(member, 'foundation')
+            glu.add_user_to_ldap_group(member, 'mailgrace')
             send_form_letters(expired_membership_form_letter, mail_attr, common_name_attr, 
last_renewed_on_attr)
 
         if (last_renewed_on.year == (today - delta_2y).year) and (last_renewed_on.month == today.month) and 
(today.day == 1):
@@ -149,7 +167,8 @@ def send_form_letters(form_letter, email, name, *args):
         elif form_letter is renewal_form_letter:
             msg = MIMEText(form_letter.safe_substitute(cn=name),
                            'plain', 'utf8')
-        elif form_letter in (expired_membership_form_letter, close_to_expire_membership_form_letter):
+        elif form_letter in (expired_membership_form_letter, close_to_expire_membership_form_letter,
+                             alias_decomm):
             msg = MIMEText(form_letter.safe_substitute(cn=name,
                            last_renewed_on_date=args[0]), 'plain', 'utf8')
         elif form_letter is renewals_to_foundation_list:
@@ -158,6 +177,8 @@ def send_form_letters(form_letter, email, name, *args):
 
         if form_letter is renewals_to_foundation_list:
             msg['Subject'] = "Memberships needing renewal (%s)" % year_month
+        elif form_letter is alias_decomm:
+            msg['Subject'] = "Your @gnome.org alias has been decommissioned"
         else:
             msg['Subject'] = "Your GNOME Foundation Membership"
         msg['From'] = "GNOME Foundation Membership Committee <noreply gnome org>"
@@ -341,6 +362,21 @@ Additionally, please give a look at the Membership benefits:
 
   https://wiki.gnome.org/MembershipCommittee/MembershipBenefits
 
+On a related note, we'd like you to remember your @gnome.org alias will also
+be decommisioned within 3 months from your membership expiration.
+
+Thanks,
+  The GNOME Membership and Elections Committee,
+  https://discourse.gnome.org/c/community/membership/338""";)
+
+alias_decomm = string.Template("""
+Dear $cn,
+
+from our records it seems your GNOME Foundation Membership was last renewed
+3 months ago on $last_renewed_on_date (YYYY-MM-DD). As we previously communicated
+your @gnome.org alias has been decommissioned as a direct consequence of your interest
+in not being part of the GNOME Foundation anymore.
+
 Thanks,
   The GNOME Membership and Elections Committee,
   https://discourse.gnome.org/c/community/membership/338""";)
@@ -404,6 +440,7 @@ def main():
 
     if options.remove_expired_foundation_members:
         remove_expired_memberships_from_foundation()
+        cleanup_mailgrace()
 
     if options.generate_membership_list:
         generate_membership_list()


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]