diff options
Diffstat (limited to 'src/django_pgpmailman/plugin.py')
| -rw-r--r-- | src/django_pgpmailman/plugin.py | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/src/django_pgpmailman/plugin.py b/src/django_pgpmailman/plugin.py index de6cbcc..5a5d62a 100644 --- a/src/django_pgpmailman/plugin.py +++ b/src/django_pgpmailman/plugin.py @@ -20,7 +20,7 @@ from operator import itemgetter from django.conf import settings from mailmanclient._client import Plugin, Client -from django_pgpmailman.models import PGPMailingList +from django_pgpmailman.models import PGPMailingList, PGPAddress class PGPPlugin(Plugin): @@ -42,16 +42,32 @@ class PGPPlugin(Plugin): response, content = self.call('lists/%s' % list_identifier) return PGPMailingList(self._connection, content['self_link'], content) + @property + def addresses(self): + response, content = self.call('addresses') + if 'entries' not in content: + return [] + return [PGPAddress(self._connection, entry['self_link'], entry) for + entry in sorted(content['entries'], key=itemgetter('email'))] + + def get_address(self, email): + response, content = self.call('addresses/%s' % email) + return PGPAddress(self._connection, content['self_link'], content) + + +def get_client(): + return Client('%s/3.1' % + settings.MAILMAN_REST_API_URL, + settings.MAILMAN_REST_API_USER, + settings.MAILMAN_REST_API_PASS) + plugin = None -def get_pgp_plugin(): +def get_plugin(): global plugin if not plugin: - client = Client('%s/3.1' % - settings.MAILMAN_REST_API_URL, - settings.MAILMAN_REST_API_USER, - settings.MAILMAN_REST_API_PASS) + client = get_client() plugin = PGPPlugin(client.get_plugin(settings.MAILMAN_PGP_PLUGIN_NAME)) return plugin |
