aboutsummaryrefslogtreecommitdiff
path: root/src/mailman_pgp/model/list.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/mailman_pgp/model/list.py')
-rw-r--r--src/mailman_pgp/model/list.py13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/mailman_pgp/model/list.py b/src/mailman_pgp/model/list.py
index 9bee16d..da542de 100644
--- a/src/mailman_pgp/model/list.py
+++ b/src/mailman_pgp/model/list.py
@@ -22,14 +22,16 @@ from os.path import exists, isfile, join
from flufl.lock import Lock
from mailman.database.types import Enum, SAUnicode
from mailman.interfaces.action import Action
-from mailman.interfaces.listmanager import IListManager
+from mailman.interfaces.listmanager import IListManager, ListDeletedEvent
from pgpy import PGPKey
from public import public
from sqlalchemy import Boolean, Column, Integer
from sqlalchemy.orm import reconstructor
from zope.component import getUtility
+from zope.event import classhandler
from mailman_pgp.config import config
+from mailman_pgp.database import transaction
from mailman_pgp.model.base import Base
from mailman_pgp.pgp.keygen import ListKeyGenerator
@@ -143,3 +145,12 @@ class PGPMailingList(Base):
if mlist is None:
return None
return PGPMailingList.query().filter_by(list_id=mlist.list_id).first()
+
+
+@classhandler.handler(ListDeletedEvent)
+def on_delete(mlist):
+ pgp_list = PGPMailingList.for_list(mlist)
+ if pgp_list:
+ with transaction() as session:
+ # TODO shred the list key
+ session.delete(pgp_list)