aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJ08nY2017-08-01 00:55:11 +0200
committerJ08nY2017-08-01 00:55:11 +0200
commit89e7005f70a7feda03f15cbe39bf866a6f5bd059 (patch)
treea5d61f909810688d32fda0ba10ce422eccbb5be5
parentcce2409e111c4b29bb8739c0699885007e7b81a2 (diff)
downloadmailman-pgp-feature/config-transformation.tar.gz
mailman-pgp-feature/config-transformation.tar.zst
mailman-pgp-feature/config-transformation.zip
-rw-r--r--src/mailman_pgp/config/config.py31
-rw-r--r--src/mailman_pgp/config/converter.py13
-rw-r--r--src/mailman_pgp/model/list.py3
-rw-r--r--src/mailman_pgp/runners/incoming.py2
-rw-r--r--src/mailman_pgp/styles/base.py3
-rw-r--r--src/mailman_pgp/workflows/key_change.py3
6 files changed, 31 insertions, 24 deletions
diff --git a/src/mailman_pgp/config/config.py b/src/mailman_pgp/config/config.py
index 7999e65..0b5fe4f 100644
--- a/src/mailman_pgp/config/config.py
+++ b/src/mailman_pgp/config/config.py
@@ -31,6 +31,15 @@ from mailman_pgp.config.validator import ConfigValidator
class Config(ConfigParser):
"""A ConfigParser with a name."""
+ def __init__(self):
+ super().__init__()
+ self.name = None
+ self.dict = None
+ schema = resource_string('mailman_pgp.config',
+ 'schema.cfg').decode('utf-8')
+ self.validator = ConfigValidator(schema)
+ self.converter = ConfigConverter(schema)
+
def load(self, name):
"""
Load the plugin configuration, and set our name.
@@ -43,19 +52,15 @@ class Config(ConfigParser):
dict(mailman_config.plugin_configs)[self.name].configuration))
def validate(self):
- """
-
- """
- validator = ConfigValidator(
- resource_string('mailman_pgp.config',
- 'schema.cfg').decode('utf-8'))
- validator.validate(self)
+ self.validator.validate(self)
def convert(self):
- """
+ self.dict = self.converter.convert(self)
- """
- converter = ConfigConverter(
- resource_string('mailman_pgp.config',
- 'schema.cfg').decode('utf-8'))
- converter.convert(self)
+ def get_value(self, section, option):
+ return self.dict[section][option]
+
+ def set(self, section, option, value=None):
+ self.dict[section][option] = self.converter.converter(section, option)(
+ value)
+ return super().set(section, option, value)
diff --git a/src/mailman_pgp/config/converter.py b/src/mailman_pgp/config/converter.py
index ac2cf22..e3cdb90 100644
--- a/src/mailman_pgp/config/converter.py
+++ b/src/mailman_pgp/config/converter.py
@@ -40,12 +40,13 @@ class ConfigConverter:
for section in self.schema.sections():
out[section] = dict()
for option in self.schema.options(section):
- out[section][option] = self._transform_option(
- cfg.get(section, option),
- self.schema.get(section, option))
+ out[section][option] = self._transform_option(section, option,
+ cfg.get(section,
+ option))
return out
- def _transform_option(self, value, schema):
+ def converter(self, section, option):
+ schema = self.schema.get(section, option)
call = None
try:
call = getattr(builtins, schema)
@@ -59,6 +60,10 @@ class ConfigConverter:
if match is None:
raise ValueError
return match.group()
+ return call
+
+ def _transform_option(self, section, option, value):
+ call = self.converter(section, option)
if call is None:
raise ValueError
diff --git a/src/mailman_pgp/model/list.py b/src/mailman_pgp/model/list.py
index 946af34..d80f4a7 100644
--- a/src/mailman_pgp/model/list.py
+++ b/src/mailman_pgp/model/list.py
@@ -16,7 +16,6 @@
# this program. If not, see <http://www.gnu.org/licenses/>.
"""Model for PGP enabled mailing lists."""
-from lazr.config import as_boolean
from mailman.database.types import Enum, SAUnicode
from mailman.interfaces.action import Action
from mailman.interfaces.listmanager import (IListManager, ListDeletingEvent)
@@ -145,7 +144,7 @@ class PGPMailingList(Base):
@classhandler.handler(ListDeletingEvent)
def on_delete(event):
- shred = as_boolean(config.get('keypairs', 'shred'))
+ shred = config.get_value('keypairs', 'shred')
pgp_list = PGPMailingList.for_list(event.mailing_list)
if pgp_list:
with transaction() as session:
diff --git a/src/mailman_pgp/runners/incoming.py b/src/mailman_pgp/runners/incoming.py
index acb079d..9931576 100644
--- a/src/mailman_pgp/runners/incoming.py
+++ b/src/mailman_pgp/runners/incoming.py
@@ -35,7 +35,7 @@ log = logging.getLogger('mailman.plugin.pgp')
def _pass_default(msg, msgdata, listid):
- inq = config.get('queues', 'in')
+ inq = config.get_value('queues', 'in')
mailman_config.switchboards[inq].enqueue(msg, msgdata,
listid=listid)
diff --git a/src/mailman_pgp/styles/base.py b/src/mailman_pgp/styles/base.py
index bad67ad..348cb04 100644
--- a/src/mailman_pgp/styles/base.py
+++ b/src/mailman_pgp/styles/base.py
@@ -16,7 +16,6 @@
# this program. If not, see <http://www.gnu.org/licenses/>.
""""""
-from lazr.config import as_boolean
from public import public
from mailman_pgp.config import config, mm_config
@@ -42,7 +41,7 @@ class PGPStyle:
if pgp_list:
return
- generate = as_boolean(config.get('keypairs', 'autogenerate'))
+ generate = config.get_value('keypairs', 'autogenerate')
with transaction() as session:
pgp_list = PGPMailingList(mailing_list)
diff --git a/src/mailman_pgp/workflows/key_change.py b/src/mailman_pgp/workflows/key_change.py
index 61acf95..290e504 100644
--- a/src/mailman_pgp/workflows/key_change.py
+++ b/src/mailman_pgp/workflows/key_change.py
@@ -16,7 +16,6 @@
# this program. If not, see <http://www.gnu.org/licenses/>.
""""""
-from lazr.config import as_timedelta
from mailman.email.message import UserNotification
from mailman.interfaces.pending import IPendable, IPendings
from mailman.interfaces.subscriptions import TokenOwner
@@ -95,7 +94,7 @@ class KeyChangeWorkflow(Workflow):
pubkey=str(self.pubkey),
fingerprint=self.pubkey.fingerprint
)
- lifetime = as_timedelta(config.get('misc', 'change_request_lifetime'))
+ lifetime = config.get_value('misc', 'change_request_lifetime')
self.token = pendings.add(pendable, lifetime=lifetime)
self.token_owner = TokenOwner.subscriber