diff options
| author | J08nY | 2017-08-01 00:55:11 +0200 |
|---|---|---|
| committer | J08nY | 2017-08-01 00:55:11 +0200 |
| commit | 89e7005f70a7feda03f15cbe39bf866a6f5bd059 (patch) | |
| tree | a5d61f909810688d32fda0ba10ce422eccbb5be5 | |
| parent | cce2409e111c4b29bb8739c0699885007e7b81a2 (diff) | |
| download | mailman-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.py | 31 | ||||
| -rw-r--r-- | src/mailman_pgp/config/converter.py | 13 | ||||
| -rw-r--r-- | src/mailman_pgp/model/list.py | 3 | ||||
| -rw-r--r-- | src/mailman_pgp/runners/incoming.py | 2 | ||||
| -rw-r--r-- | src/mailman_pgp/styles/base.py | 3 | ||||
| -rw-r--r-- | src/mailman_pgp/workflows/key_change.py | 3 |
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 |
