Made the import_mailman_listinfo management command somewhat more robust.

- Legacy-Id: 13708
This commit is contained in:
Henrik Levkowetz 2017-06-22 15:16:28 +00:00
parent 8eded1d8d2
commit c28b919e26

View file

@ -35,7 +35,8 @@ def import_mailman_listinfo(verbosity=0):
mlist = MailList.MailList(name, lock=False) mlist = MailList.MailList(name, lock=False)
note("List: %s" % mlist.internal_name()) note("List: %s" % mlist.internal_name())
if mlist.advertised: if mlist.advertised:
list, created = List.objects.get_or_create(name=mlist.real_name, description=mlist.description, advertised=mlist.advertised) description = mlist.description.decode('latin1')[:256]
list, created = List.objects.get_or_create(name=mlist.real_name, description=description, advertised=mlist.advertised)
# The following calls return lowercased addresses # The following calls return lowercased addresses
members = mlist.getRegularMemberKeys() + mlist.getDigestMemberKeys() members = mlist.getRegularMemberKeys() + mlist.getDigestMemberKeys()
members = [ m for m in members if mlist.getDeliveryStatus(m) == MemberAdaptor.ENABLED ] members = [ m for m in members if mlist.getDeliveryStatus(m) == MemberAdaptor.ENABLED ]
@ -49,6 +50,9 @@ def import_mailman_listinfo(verbosity=0):
note(" Removing address with no subscriptions: %s" % (addr)) note(" Removing address with no subscriptions: %s" % (addr))
old.delete() old.delete()
for addr in members: for addr in members:
if len(addr) > 64:
sys.stderr.write("Email address subscribed to '%s' too long for table: <%s>" % (name, addr))
continue
if not addr in known: if not addr in known:
note(" Adding subscription: %s" % (addr)) note(" Adding subscription: %s" % (addr))
new, created = Subscribed.objects.get_or_create(email=addr) new, created = Subscribed.objects.get_or_create(email=addr)