aboutsummaryrefslogtreecommitdiff
path: root/src/django_pgpmailman/plugin.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/django_pgpmailman/plugin.py')
-rw-r--r--src/django_pgpmailman/plugin.py28
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