#! /opt/mailman/mm/venv/bin/python
import os
import sys

sys.path.insert(0, '/opt/mailman/mm')
os.environ['PYTHONPATH'] = '/opt/mailman/mm'
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
os.environ['MAILMAN_CONFIG_FILE'] = '/opt/mailman/mm/mailman.cfg'

import django
django.setup()

from django.contrib.auth.models import User
from mailman.core import initialize
from mailman.interfaces.usermanager import IUserManager
from zope.component import getUtility

initialize.initialize()

user_manager = getUtility(IUserManager)
DELETE_MAILMAN_USER = False

for django_user in User.objects.all():
    mm_user = user_manager.get_user(django_user.email)
    if mm_user is None or len(list(mm_user.memberships.members)) == 0:
        # No mailman user for this address or user is not a member, nonmember
        # owner or moderator of any list.
        User.objects.filter(email=django_user.email).delete()
        print('User with email {} deleted from Django'.format(
              django_user.email))
        if mm_user and DELETE_MAILMAN_USER:
            user_manager.delete_user(mm_user)
            print('User with email {} deleted from Mailman'.format(
                  django_user.email))
            
