def update_membership(base_users, list_name, add=False, dry_run=DRY_RUN): current_members = set(mailman.list_contents(list_name)) print """Updating list "%s", which currently has %s users.""" % ( list_name, len(current_members)) if dry_run: print "(This is a dry run.)" users_to_maybe_remove = ESPUser.objects.filter(is_active=False) users_not_to_remove = ESPUser.objects.filter(is_active=True) users_to_remove = users_to_maybe_remove.exclude( email__in=users_not_to_remove.values('email')) members_to_remove = current_members & set( users_to_remove.values_list('email', flat=True)) print "Removing %s users..." % len(members_to_remove), if not dry_run: out, err = mailman.remove_list_member(list_name, members_to_remove) if out: print "stdout:" print out if err: print "sterr:" print err print "removed." if add: users_to_maybe_add = base_users.filter(is_active=True) users_not_to_add = ESPUser.objects.filter(is_active=False) users_to_add = users_to_maybe_add.exclude( email__in=users_not_to_add.values('email')) print "Adding %s users..." % len(users_to_add), if not dry_run: out, err = mailman.add_list_members(list_name, users_to_add) if out: print "stdout:" print out if err: print "sterr:" print err print "added." else: print "User adding disabled." new_members = mailman.list_contents(list_name) print """List "%s" now contains %s users.""" % (list_name, len(new_members)) print
def update_membership(base_users, list_name, add=False, dry_run=DRY_RUN): current_members = set(mailman.list_contents(list_name)) print """Updating list "%s", which currently has %s users.""" % ( list_name, len(current_members)) if dry_run: print "(This is a dry run.)" users_to_maybe_remove = ESPUser.objects.filter(is_active=False) users_not_to_remove = ESPUser.objects.filter(is_active=True) users_to_remove = users_to_maybe_remove.exclude( email__in=users_not_to_remove.values('email')) members_to_remove = current_members & set( users_to_remove.values_list('email', flat=True)) print "Removing %s users..." % len(members_to_remove), if not dry_run: out, err = mailman.remove_list_member(list_name, members_to_remove) if out: print "stdout:" print out if err: print "sterr:" print err print "removed." if add: users_to_maybe_add = base_users.filter(is_active=True) users_not_to_add = ESPUser.objects.filter(is_active=False) users_to_add = users_to_maybe_add.exclude( email__in=users_not_to_add.values('email')) print "Adding %s users..." % len(users_to_add), if not dry_run: out, err = mailman.add_list_members(list_name, users_to_add) if out: print "stdout:" print out if err: print "sterr:" print err print "added." else: print "User adding disabled." new_members = mailman.list_contents(list_name) print """List "%s" now contains %s users.""" % ( list_name, len(new_members)) print
def clear_mailman_list(self, list_name): contents = list_contents(list_name) for address in contents: remove_list_member(list_name, address)