Added a migration to do the first mailman subscriber import, using a function from the refactored management command.
- Legacy-Id: 11393
This commit is contained in:
parent
dc385ea014
commit
744a39e2ca
|
@ -8,8 +8,34 @@ import debug # pyflakes:ignore
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.core.management.base import BaseCommand
|
from django.core.management.base import BaseCommand
|
||||||
|
|
||||||
|
sys.path.append(settings.MAILMAN_LIB_DIR)
|
||||||
|
|
||||||
|
from Mailman import Utils
|
||||||
|
from Mailman import MailList
|
||||||
|
|
||||||
from ietf.mailinglists.models import List, Subscribed
|
from ietf.mailinglists.models import List, Subscribed
|
||||||
|
|
||||||
|
def import_mailman_listinfo(verbosity=0):
|
||||||
|
def note(msg):
|
||||||
|
if verbosity > 1:
|
||||||
|
sys.stdout.write(msg)
|
||||||
|
sys.stdout.write('\n')
|
||||||
|
|
||||||
|
for name in Utils.list_names():
|
||||||
|
mlist = MailList.MailList(name, lock=False)
|
||||||
|
note("List: %s" % mlist.internal_name())
|
||||||
|
if mlist.advertised:
|
||||||
|
list, created = List.objects.get_or_create(name=mlist.real_name, description=mlist.description, advertised=mlist.advertised)
|
||||||
|
# The following calls return lowercased addresses
|
||||||
|
members = mlist.getRegularMemberKeys() + mlist.getDigestMemberKeys()
|
||||||
|
known = [ s.email for s in Subscribed.objects.filter(lists__name=name) ]
|
||||||
|
for addr in members:
|
||||||
|
if not addr in known:
|
||||||
|
note(" Adding subscribed: %s" % (addr))
|
||||||
|
new, created = Subscribed.objects.get_or_create(email=addr)
|
||||||
|
new.lists.add(list)
|
||||||
|
|
||||||
|
|
||||||
class Command(BaseCommand):
|
class Command(BaseCommand):
|
||||||
"""
|
"""
|
||||||
Import list information from Mailman.
|
Import list information from Mailman.
|
||||||
|
@ -26,9 +52,6 @@ class Command(BaseCommand):
|
||||||
|
|
||||||
#option_list = BaseCommand.option_list + ( )
|
#option_list = BaseCommand.option_list + ( )
|
||||||
|
|
||||||
def note(self, msg):
|
|
||||||
if self.verbosity > 1:
|
|
||||||
self.stdout.write(msg)
|
|
||||||
|
|
||||||
def handle(self, *filenames, **options):
|
def handle(self, *filenames, **options):
|
||||||
"""
|
"""
|
||||||
|
@ -39,23 +62,6 @@ class Command(BaseCommand):
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
self.verbosity = int(options.get('verbosity'))
|
verbosity = int(options.get('verbosity'))
|
||||||
|
|
||||||
sys.path.append(settings.MAILMAN_LIB_DIR)
|
import_mailman_listinfo(verbosity)
|
||||||
|
|
||||||
from Mailman import Utils
|
|
||||||
from Mailman import MailList
|
|
||||||
|
|
||||||
for name in Utils.list_names():
|
|
||||||
mlist = MailList.MailList(name, lock=False)
|
|
||||||
self.note("List: %s" % mlist.internal_name())
|
|
||||||
if mlist.advertised:
|
|
||||||
list, created = List.objects.get_or_create(name=mlist.real_name, description=mlist.description, advertised=mlist.advertised)
|
|
||||||
# The following calls return lowercased addresses
|
|
||||||
members = mlist.getRegularMemberKeys() + mlist.getDigestMemberKeys()
|
|
||||||
known = [ s.email for s in Subscribed.objects.filter(lists__name=name) ]
|
|
||||||
for addr in members:
|
|
||||||
if not addr in known:
|
|
||||||
self.note(" Adding subscribed: %s" % (addr))
|
|
||||||
new, created = Subscribed.objects.get_or_create(email=addr)
|
|
||||||
new.lists.add(list)
|
|
||||||
|
|
25
ietf/mailinglists/migrations/0003_import_subscribers.py
Normal file
25
ietf/mailinglists/migrations/0003_import_subscribers.py
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
from django.db import migrations
|
||||||
|
|
||||||
|
from ietf.mailinglists.models import List, Subscribed
|
||||||
|
from ietf.mailinglists.management.commands.import_mailman_listinfo import import_mailman_listinfo
|
||||||
|
|
||||||
|
def forward_mailman_import(apps, schema_editor):
|
||||||
|
import_mailman_listinfo(verbosity=0)
|
||||||
|
|
||||||
|
def reverse_mailman_import(apps, schema_editor):
|
||||||
|
List.objects.all().delete()
|
||||||
|
Subscribed.objects.all().delete()
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('mailinglists', '0002_list_subscribed_whitelisted'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RunPython(forward_mailman_import,reverse_mailman_import),
|
||||||
|
|
||||||
|
]
|
Loading…
Reference in a new issue