summaryrefslogtreecommitdiff
path: root/src/mailman_pgp/rest/lists.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/mailman_pgp/rest/lists.py')
-rw-r--r--src/mailman_pgp/rest/lists.py54
1 files changed, 54 insertions, 0 deletions
diff --git a/src/mailman_pgp/rest/lists.py b/src/mailman_pgp/rest/lists.py
new file mode 100644
index 0000000..e0d2b0f
--- /dev/null
+++ b/src/mailman_pgp/rest/lists.py
@@ -0,0 +1,54 @@
+""""""
+
+from mailman.rest.helpers import (
+ child, CollectionMixin, etag, not_found, NotFound, okay)
+from public import public
+
+from mailman_pgp.config import config
+from mailman_pgp.model.list import EncryptedMailingList
+
+
+class _EncryptedBase(CollectionMixin):
+ def _resource_as_dict(self, emlist):
+ """See `CollectionMixin`."""
+ return dict(list_id=emlist.list_id,
+ key_fingerprint=emlist.key_fingerprint,
+ unsigned_msg_action=emlist.unsigned_msg_action,
+ nonencrypted_msg_action=emlist.nonencrypted_msg_action,
+ strip_original_signature=emlist.strip_original_signature,
+ sign_outgoing=emlist.sign_outgoing,
+ self_link=self.api.path_to(
+ '/plugins/{}/lists/{}'.format(config.name,
+ emlist.list_id)))
+
+ def _get_collection(self, request):
+ """See `CollectionMixin`."""
+ return config.db.session.query(EncryptedMailingList).all()
+
+
+@public
+class AllEncryptedLists(_EncryptedBase):
+ def on_get(self, request, response):
+ """/lists"""
+ resource = self._make_collection(response)
+ return okay(response, etag(resource))
+
+
+@public
+class AnEncryptedList(_EncryptedBase):
+ def __init__(self, list_id):
+ self._mlist = config.db.session.query(EncryptedMailingList).filter_by(
+ list_id=list_id).first()
+
+ def on_get(self, request, response):
+ if self._mlist is None:
+ return not_found()
+ else:
+ okay(response, self._resource_as_json(self._mlist))
+
+ @child()
+ def key(self, context, segments):
+ if self._mlist is None:
+ return NotFound(), []
+ else:
+ pass