diff options
Diffstat (limited to 'src/mailman_pgp/model/list.py')
| -rw-r--r-- | src/mailman_pgp/model/list.py | 32 |
1 files changed, 15 insertions, 17 deletions
diff --git a/src/mailman_pgp/model/list.py b/src/mailman_pgp/model/list.py index e53d61b..764dc1b 100644 --- a/src/mailman_pgp/model/list.py +++ b/src/mailman_pgp/model/list.py @@ -1,16 +1,17 @@ """""" -from multiprocessing import SimpleQueue from os.path import exists, isfile, join -from mailman.config import config as mailman_config, config +from mailman.config import config as mailman_config from mailman.database.types import Enum, SAUnicode from mailman.interfaces.action import Action from mailman.model.mailinglist import MailingList from pgpy import PGPKey from public import public from sqlalchemy import Boolean, Column, Integer +from sqlalchemy.orm import reconstructor +from mailman_pgp.config import config from mailman_pgp.model.base import Base from mailman_pgp.pgp.keygen import ListKeyGenerator @@ -29,19 +30,21 @@ class EncryptedMailingList(Base): def __init__(self, mlist): super().__init__() self.list_id = mlist.list_id + self._init() self._mlist = mlist + self._generate(mlist) + + @reconstructor + def _init(self): + self._mlist = None self._key = None - self._key_queue = None self._key_generator = None - self._generate(mlist) def _generate(self, mlist): - self._key_queue = SimpleQueue() self._key_generator = ListKeyGenerator(config.pgp.keypair_config, mlist.display_name, mlist.posting_address, mlist.request_address, - self._key_queue, self.key_path) self._key_generator.start() @@ -49,23 +52,19 @@ class EncryptedMailingList(Base): def mlist(self): if self._mlist is not None: return self._mlist - return mailman_config.db.query(MailingList).filter_by( + return mailman_config.db.store.query(MailingList).filter_by( _list_id=self.list_id).first() @property def key(self): if self._key is None: - # First try the queue - if self._key_queue is not None and not self._key_queue.empty(): - self._key = self._key_queue.get() - # Then check the file - elif exists(self.key_path) and isfile(self.key_path): + # Check the file + if exists(self.key_path) and isfile(self.key_path): self._key = PGPKey.from_file(self.key_path) else: # Check if key generator is running or what? Restart it if not. - # If we race it shutting down and saving the key file + queue - # it will simply check the key_file exists and put it into a - # queue for us. + # If we race it shutting down and saving the key file + # it will simply check the key_file exists and exit. if self._key_generator is None or \ not self._key_generator.is_alive(): self._generate(self.mlist) @@ -74,5 +73,4 @@ class EncryptedMailingList(Base): @property def key_path(self): return join(config.pgp.keydir_config['list_keydir'], - self.list_id, - '.asc') + self.list_id + '.asc') |
